chris1nexus commited on
Commit
58e1934
·
1 Parent(s): 4f37062

Update default category

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +43 -13
src/streamlit_app.py CHANGED
@@ -262,6 +262,18 @@ df_mod = load_private_tsv("imageaction__captcha@SPEC-1de6b70ae2f0.tsv")
262
  st.session_state.dataset = df_base
263
  st.session_state.dataset_modified = df_mod
264
  st.session_state.categories = sorted(df_base["answer_norm"].unique())
 
 
 
 
 
 
 
 
 
 
 
 
265
  # Sidebar
266
  with st.sidebar:
267
  st.subheader("Challenge Settings")
@@ -271,7 +283,7 @@ with st.sidebar:
271
 
272
  DEFAULT_CAT = "bus" # normalized label
273
 
274
- if cats and DEFAULT_CAT in cats:
275
  default_idx = cats.index(DEFAULT_CAT)
276
  else:
277
  default_idx = 0 # fallback
@@ -291,31 +303,49 @@ with st.sidebar:
291
  st.markdown("---")
292
  st.subheader("Solver")
293
 
294
- # 1) Provider first (include Manual + all providers from your dict)
295
  provider_options = ["Manual"] + list(MODEL_PROVIDERS.keys())
296
- try:
297
- provider_idx = provider_options.index(st.session_state.provider)
298
- except ValueError:
299
- provider_idx = 0 # fallback to Manual if prior value is missing
300
 
301
- st.session_state.provider = st.selectbox("Provider", provider_options, index=provider_idx)
 
 
 
 
 
 
 
 
 
 
302
 
303
- # 2) Model (enabled only when provider != Manual)
304
  if st.session_state.provider == "Manual":
305
  st.session_state.model = None
306
  st.selectbox("Model", ["(not required in Manual mode)"], index=0, disabled=True)
307
  st.caption("Manual mode: click tiles to select. No model needed.")
308
  else:
309
  models_for_provider = MODEL_PROVIDERS.get(st.session_state.provider, [])
310
- # Keep previously selected model if still valid; otherwise default to first/empty
 
 
 
 
 
 
 
 
 
311
  if not models_for_provider:
312
  st.session_state.model = None
313
- st.selectbox("Model", ["(no models available for this provider)"], index=0, disabled=True)
314
  else:
315
- if st.session_state.model not in models_for_provider:
316
- st.session_state.model = models_for_provider[0]
317
  model_idx = models_for_provider.index(st.session_state.model)
318
- st.session_state.model = st.selectbox("Model", models_for_provider, index=model_idx)
 
 
 
 
 
319
 
320
 
321
  # Generate new challenge
 
262
  st.session_state.dataset = df_base
263
  st.session_state.dataset_modified = df_mod
264
  st.session_state.categories = sorted(df_base["answer_norm"].unique())
265
+
266
+ # Session defaults
267
+ if "provider" not in st.session_state:
268
+ st.session_state.provider = BaseAdapter.OPENAI # default provider = OpenAI
269
+
270
+ if "model" not in st.session_state:
271
+ st.session_state.model = "gpt-5-2025-08-07" # default OpenAI model
272
+
273
+ if "target_category" not in st.session_state:
274
+ st.session_state.target_category = "bus"
275
+
276
+
277
  # Sidebar
278
  with st.sidebar:
279
  st.subheader("Challenge Settings")
 
283
 
284
  DEFAULT_CAT = "bus" # normalized label
285
 
286
+ if cats and DEFAULT_CAT in st.session_state.categories:
287
  default_idx = cats.index(DEFAULT_CAT)
288
  else:
289
  default_idx = 0 # fallback
 
303
  st.markdown("---")
304
  st.subheader("Solver")
305
 
306
+ # 1) Provider first (Manual + all providers)
307
  provider_options = ["Manual"] + list(MODEL_PROVIDERS.keys())
 
 
 
 
308
 
309
+ # ensure current provider is valid; otherwise default to OpenAI
310
+ if st.session_state.provider not in provider_options:
311
+ st.session_state.provider = BaseAdapter.OPENAI
312
+
313
+ provider_idx = provider_options.index(st.session_state.provider)
314
+
315
+ st.session_state.provider = st.selectbox(
316
+ "Provider",
317
+ provider_options,
318
+ index=provider_idx,
319
+ )
320
 
321
+ # 2) Model: only when provider != Manual
322
  if st.session_state.provider == "Manual":
323
  st.session_state.model = None
324
  st.selectbox("Model", ["(not required in Manual mode)"], index=0, disabled=True)
325
  st.caption("Manual mode: click tiles to select. No model needed.")
326
  else:
327
  models_for_provider = MODEL_PROVIDERS.get(st.session_state.provider, [])
328
+
329
+ # if provider is OpenAI and our default gpt-5 is in the list, prefer that
330
+ if st.session_state.provider == BaseAdapter.OPENAI and "gpt-5-2025-08-07" in models_for_provider:
331
+ if st.session_state.model not in models_for_provider:
332
+ st.session_state.model = "gpt-5-2025-08-07"
333
+ else:
334
+ # generic fallback for other providers
335
+ if st.session_state.model not in models_for_provider and models_for_provider:
336
+ st.session_state.model = models_for_provider[0]
337
+
338
  if not models_for_provider:
339
  st.session_state.model = None
340
+ st.selectbox("Model", ["(no models for this provider)"], index=0, disabled=True)
341
  else:
 
 
342
  model_idx = models_for_provider.index(st.session_state.model)
343
+ st.session_state.model = st.selectbox(
344
+ "Model",
345
+ models_for_provider,
346
+ index=model_idx,
347
+ )
348
+
349
 
350
 
351
  # Generate new challenge