Chris4K commited on
Commit
59dbb0f
1 Parent(s): 8295aa2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +101 -16
app.py CHANGED
@@ -1065,7 +1065,49 @@ def update_inputs_with_llm_suggestions(suggestions):
1065
  gr.update(value=suggestions["apply_phonetic"]), # apply_phonetic_input
1066
  gr.update(value=suggestions["phonetic_weight"]) # phonetic_weight_input
1067
  ]
 
 
 
 
1068
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1069
 
1070
  # Gradio Interface
1071
  def launch_interface(share=True):
@@ -1111,8 +1153,6 @@ def launch_interface(share=True):
1111
  use_reranking_input = gr.Checkbox(label="Use Reranking", value=False)
1112
 
1113
  with gr.Tab("Automation"):
1114
-
1115
-
1116
  with gr.Row():
1117
  auto_file_input = gr.File(label="Upload File (Optional)")
1118
  auto_query_input = gr.Textbox(label="Search Query")
@@ -1138,14 +1178,14 @@ def launch_interface(share=True):
1138
  value=[f"HuggingFace:{DEFAULT_MODELS['HuggingFace'][0]}"]
1139
  )
1140
 
1141
- with gr.Column():
1142
- # Custom model input
1143
- custom_models_input = gr.TextArea(
1144
- label="Custom Models (Optional)",
1145
- placeholder="Enter one model per line in format: type:name",
1146
- lines=3
1147
- )
1148
-
1149
  auto_split_strategies = gr.CheckboxGroup(
1150
  choices=["token", "recursive"],
1151
  label="Split Strategies to Test"
@@ -1164,24 +1204,69 @@ def launch_interface(share=True):
1164
  auto_optimize_vocab = gr.Checkbox(label="Test Vocabulary Optimization", value=True)
1165
  auto_use_query_optimization = gr.Checkbox(label="Test Query Optimization", value=True)
1166
  auto_use_reranking = gr.Checkbox(label="Test Reranking", value=True)
1167
-
1168
 
1169
  auto_results_output = gr.Dataframe(label="Automated Test Results", interactive=False)
1170
  auto_stats_output = gr.Dataframe(label="Automated Test Statistics", interactive=False)
1171
  recommendations_output = gr.JSON(label="Recommendations")
1172
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1173
  auto_submit_button = gr.Button("Run Automated Tests")
1174
  auto_submit_button.click(
1175
- fn=lambda *args: run_automated_tests(*args),
1176
  inputs=[
1177
- auto_file_input, auto_query_input, auto_expected_result_input, auto_model_types, auto_model_names,
 
1178
  auto_split_strategies, auto_chunk_sizes, auto_overlap_sizes,
1179
  auto_vector_store_types, auto_search_types, auto_top_k,
1180
- auto_optimize_vocab, auto_use_query_optimization, auto_use_reranking
 
1181
  ],
1182
  outputs=[auto_results_output, auto_stats_output, recommendations_output]
1183
  )
1184
- ###
1185
 
1186
  with gr.Tab("Results"):
1187
  with gr.Row():
 
1065
  gr.update(value=suggestions["apply_phonetic"]), # apply_phonetic_input
1066
  gr.update(value=suggestions["phonetic_weight"]) # phonetic_weight_input
1067
  ]
1068
+
1069
+ def parse_model_selections(default_models, custom_models):
1070
+ """
1071
+ Parse selected default models and custom models into model configurations
1072
 
1073
+ Args:
1074
+ default_models (List[str]): Selected default models in format "type:name"
1075
+ custom_models (str): Custom models string with one model per line in format "type:name"
1076
+
1077
+ Returns:
1078
+ List[Dict[str, str]]: List of model configurations with 'type' and 'name' keys
1079
+ """
1080
+ model_configs = []
1081
+
1082
+ # Process default models
1083
+ if default_models:
1084
+ for model in default_models:
1085
+ model_type, model_name = model.split(':')
1086
+ model_configs.append({
1087
+ 'type': model_type,
1088
+ 'name': model_name
1089
+ })
1090
+
1091
+ # Process custom models
1092
+ if custom_models:
1093
+ custom_model_lines = custom_models.strip().split('\n')
1094
+ for line in custom_model_lines:
1095
+ if line.strip() and ':' in line:
1096
+ model_type, model_name = line.strip().split(':')
1097
+ model_configs.append({
1098
+ 'type': model_type.strip(),
1099
+ 'name': model_name.strip()
1100
+ })
1101
+
1102
+ return model_configs
1103
+
1104
+ def parse_comma_separated(text):
1105
+ """Parse comma-separated values into a list"""
1106
+ if not text:
1107
+ return []
1108
+ return [x.strip() for x in text.split(',') if x.strip()]
1109
+
1110
+
1111
 
1112
  # Gradio Interface
1113
  def launch_interface(share=True):
 
1153
  use_reranking_input = gr.Checkbox(label="Use Reranking", value=False)
1154
 
1155
  with gr.Tab("Automation"):
 
 
1156
  with gr.Row():
1157
  auto_file_input = gr.File(label="Upload File (Optional)")
1158
  auto_query_input = gr.Textbox(label="Search Query")
 
1178
  value=[f"HuggingFace:{DEFAULT_MODELS['HuggingFace'][0]}"]
1179
  )
1180
 
1181
+ with gr.Column():
1182
+ # Custom model input
1183
+ custom_models_input = gr.TextArea(
1184
+ label="Custom Models (Optional)",
1185
+ placeholder="Enter one model per line in format: type:name",
1186
+ lines=3
1187
+ )
1188
+
1189
  auto_split_strategies = gr.CheckboxGroup(
1190
  choices=["token", "recursive"],
1191
  label="Split Strategies to Test"
 
1204
  auto_optimize_vocab = gr.Checkbox(label="Test Vocabulary Optimization", value=True)
1205
  auto_use_query_optimization = gr.Checkbox(label="Test Query Optimization", value=True)
1206
  auto_use_reranking = gr.Checkbox(label="Test Reranking", value=True)
 
1207
 
1208
  auto_results_output = gr.Dataframe(label="Automated Test Results", interactive=False)
1209
  auto_stats_output = gr.Dataframe(label="Automated Test Statistics", interactive=False)
1210
  recommendations_output = gr.JSON(label="Recommendations")
1211
+
1212
+ def run_automation(file_input, query_input, expected_result, default_models, custom_models,
1213
+ split_strategies, chunk_sizes, overlap_sizes,
1214
+ vector_store_types, search_types, top_k_values,
1215
+ optimize_vocab, use_query_optimization, use_reranking,
1216
+ model_feedback):
1217
+ """Wrapper function to handle Gradio inputs and run automated tests"""
1218
+
1219
+ # Parse model configurations
1220
+ model_configs = parse_model_selections(default_models, custom_models)
1221
+
1222
+ # Parse test parameters
1223
+ test_params = {
1224
+ 'split_strategy': split_strategies,
1225
+ 'chunk_size': parse_comma_separated(chunk_sizes),
1226
+ 'overlap_size': parse_comma_separated(overlap_sizes),
1227
+ 'vector_store_type': vector_store_types,
1228
+ 'search_type': search_types,
1229
+ 'top_k': parse_comma_separated(top_k_values),
1230
+ 'optimize_vocab': [optimize_vocab],
1231
+ 'use_query_optimization': [use_query_optimization],
1232
+ 'use_reranking': [use_reranking],
1233
+ 'lang': ['en'], # Default to English
1234
+ 'apply_preprocessing': [True], # Default preprocessing
1235
+ 'apply_phonetic': [False], # Default phonetic settings
1236
+ 'phonetic_weight': [0.5],
1237
+ 'custom_separators': [None],
1238
+ 'query_optimization_model': ['gpt-3.5-turbo'] # Default query optimization model
1239
+ }
1240
+
1241
+ # Run automated tests
1242
+ results_df, stats_df = run_automated_tests(
1243
+ file_input.name if file_input else None,
1244
+ query_input,
1245
+ model_configs,
1246
+ test_params,
1247
+ expected_result if expected_result else None,
1248
+ model_feedback if model_feedback else None
1249
+ )
1250
+
1251
+ # Generate recommendations based on results
1252
+ recommendations = generate_recommendations(stats_df)
1253
+
1254
+ return results_df, stats_df, recommendations
1255
+
1256
  auto_submit_button = gr.Button("Run Automated Tests")
1257
  auto_submit_button.click(
1258
+ fn=run_automation,
1259
  inputs=[
1260
+ auto_file_input, auto_query_input, auto_expected_result_input,
1261
+ default_models_input, custom_models_input,
1262
  auto_split_strategies, auto_chunk_sizes, auto_overlap_sizes,
1263
  auto_vector_store_types, auto_search_types, auto_top_k,
1264
+ auto_optimize_vocab, auto_use_query_optimization, auto_use_reranking,
1265
+ model_feedback_input
1266
  ],
1267
  outputs=[auto_results_output, auto_stats_output, recommendations_output]
1268
  )
1269
+ ###
1270
 
1271
  with gr.Tab("Results"):
1272
  with gr.Row():