broadfield-dev commited on
Commit
dd055bc
·
verified ·
1 Parent(s): e8f1016

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -61
app.py CHANGED
@@ -13,7 +13,7 @@ import xml.etree.ElementTree as ET
13
  load_dotenv()
14
 
15
  # --- DEMO MODE TOGGLE ---
16
- # If True, disables all database writing functions and locks the model to the default groq provider.
17
  DEMO_MODE = True
18
 
19
  from model_logic import (
@@ -189,11 +189,6 @@ def process_user_interaction_gradio(user_input: str, provider_name: str, model_d
189
  yield "final_response_and_insights", {"response": final_bot_text, "insights_used": parsed_initial_insights_list}
190
 
191
  def perform_post_interaction_learning(user_input: str, bot_response: str, provider: str, model_disp_name: str, insights_reflected: list[dict], api_key_override: str = None):
192
- # --- DEMO MODE CHANGE ---
193
- if DEMO_MODE:
194
- logger.info("POST_INTERACTION_LEARNING: Skipping database writes in Demo Mode.")
195
- return
196
-
197
  task_id = os.urandom(4).hex()
198
  logger.info(f"POST_INTERACTION_LEARNING [{task_id}]: START User='{user_input[:40]}...', Bot='{bot_response[:40]}...'")
199
  learning_start_time = time.time()
@@ -363,15 +358,6 @@ Combine all findings into a single, valid XML structure as specified in the syst
363
 
364
 
365
  def handle_gradio_chat_submit(user_msg_txt: str, gr_hist_list: list, sel_prov_name: str, sel_model_disp_name: str, ui_api_key: str|None, cust_sys_prompt: str):
366
- # --- DEMO MODE CHANGE ---
367
- if DEMO_MODE:
368
- sel_prov_name = "groq"
369
- sel_model_disp_name = get_default_model_display_name_for_provider("groq")
370
- if not sel_model_disp_name:
371
- # Fallback in case the function fails
372
- sel_model_disp_name = "Llama3 8B 8192"
373
- logger.info(f"DEMO MODE: Forcing model to {sel_prov_name}/{sel_model_disp_name}")
374
-
375
  global current_chat_session_history
376
  cleared_input, updated_gr_hist, status_txt = "", list(gr_hist_list), "Initializing..."
377
  # Initialize all potential output components with default/current values
@@ -498,8 +484,6 @@ def handle_gradio_chat_submit(user_msg_txt: str, gr_hist_list: list, sel_prov_na
498
  api_key_override=ui_api_key.strip() if ui_api_key else None
499
  )
500
  status_txt = "Response & Learning Complete."
501
- if DEMO_MODE:
502
- status_txt = "Response Complete. (Learning disabled in Demo Mode)"
503
  except Exception as e_learn:
504
  logger.error(f"Error during post-interaction learning: {e_learn}", exc_info=True)
505
  status_txt = "Response complete. Error during learning."
@@ -706,9 +690,6 @@ def ui_download_rules_action_fn():
706
  return gr.DownloadButton(value=None, interactive=False, label="Error")
707
 
708
  def ui_upload_rules_action_fn(uploaded_file_obj, progress=gr.Progress()):
709
- # --- DEMO MODE CHANGE ---
710
- if DEMO_MODE:
711
- return "Uploading is disabled in Demo Mode."
712
  if not uploaded_file_obj: return "No file provided for rules upload."
713
  try:
714
  with open(uploaded_file_obj.name, 'r', encoding='utf-8') as f: content = f.read()
@@ -785,9 +766,6 @@ def ui_download_memories_action_fn():
785
  return gr.DownloadButton(value=None, interactive=False, label="Error")
786
 
787
  def ui_upload_memories_action_fn(uploaded_file_obj, progress=gr.Progress()):
788
- # --- DEMO MODE CHANGE ---
789
- if DEMO_MODE:
790
- return "Uploading is disabled in Demo Mode."
791
  if not uploaded_file_obj: return "No file provided for memories upload."
792
  try:
793
  with open(uploaded_file_obj.name, 'r', encoding='utf-8') as f: content = f.read()
@@ -846,9 +824,6 @@ def ui_upload_memories_action_fn(uploaded_file_obj, progress=gr.Progress()):
846
  logger.info(msg); return msg
847
 
848
  def save_edited_rules_action_fn(edited_rules_text: str, progress=gr.Progress()):
849
- # --- DEMO MODE CHANGE ---
850
- if DEMO_MODE:
851
- return "Saving is disabled in Demo Mode."
852
  if not edited_rules_text.strip():
853
  return "No rules text to save."
854
 
@@ -890,9 +865,8 @@ def app_load_fn():
890
  mems_added, mems_format_errors, mems_save_errors = load_memories_from_file(LOAD_MEMORIES_FILE)
891
  mems_load_msg = f"Memories: Added {mems_added}, Format Errors {mems_format_errors}, Save Errors {mems_save_errors} from {LOAD_MEMORIES_FILE or 'None'}."
892
  logger.info(mems_load_msg)
893
-
894
- status_prefix = "DEMO MODE" if DEMO_MODE else "AI Systems Initialized"
895
- final_status = f"{status_prefix}. {rules_load_msg} {mems_load_msg} Ready."
896
 
897
  # Initial population of all relevant UI components AFTER loading
898
  rules_on_load = ui_refresh_rules_display_fn()
@@ -923,8 +897,8 @@ with gr.Blocks(
923
  """
924
  ) as demo:
925
  gr.Markdown(
926
- f"""
927
- # 🤖 AI Research Agent {'(DEMO MODE)' if DEMO_MODE else ''}
928
  Your intelligent assistant for research and knowledge management
929
  """,
930
  elem_classes=["header"]
@@ -962,24 +936,16 @@ with gr.Blocks(
962
  )
963
  available_providers = get_available_providers()
964
  default_provider = available_providers[0] if available_providers else None
965
-
966
- # --- DEMO MODE CHANGES to Dropdowns ---
967
  prov_sel_dd = gr.Dropdown(
968
- label="AI Provider",
969
- choices=["groq"] if DEMO_MODE else available_providers,
970
- value="groq" if DEMO_MODE else default_provider,
971
- interactive=not DEMO_MODE
972
  )
973
-
974
- initial_provider = prov_sel_dd.value
975
- initial_models = get_model_display_names_for_provider(initial_provider) if initial_provider else []
976
- initial_model_val = get_default_model_display_name_for_provider(initial_provider) if initial_provider else None
977
-
978
  model_sel_dd = gr.Dropdown(
979
  label="AI Model",
980
- choices=initial_models,
981
- value=initial_model_val,
982
- interactive=not DEMO_MODE
983
  )
984
  with gr.Group():
985
  gr.Markdown("### System Prompt")
@@ -1024,17 +990,14 @@ with gr.Blocks(
1024
  interactive=True
1025
  )
1026
  gr.Markdown("To edit rules, modify the text above and click 'Save Edited Text', or upload a new file.")
1027
- # --- DEMO MODE CHANGE ---
1028
- save_edited_rules_btn = gr.Button("💾 Save Edited Text", variant="primary", interactive=not DEMO_MODE)
1029
  with gr.Row(variant="compact"):
1030
  dl_rules_btn = gr.DownloadButton("⬇️ Download Rules", value=None)
1031
- # --- DEMO MODE CHANGE ---
1032
- clear_rules_btn = gr.Button("🗑️ Clear All Rules", variant="stop", interactive=not DEMO_MODE)
1033
- # --- DEMO MODE CHANGE ---
1034
  upload_rules_fobj = gr.File(
1035
  label="Upload Rules File (.txt with '---' separators, or .jsonl of rule strings)",
1036
- file_types=[".txt", ".jsonl"],
1037
- interactive=not DEMO_MODE
1038
  )
1039
  rules_stat_tb = gr.Textbox(
1040
  label="Rules Status", interactive=False, lines=1, elem_classes=["status-text"]
@@ -1048,13 +1011,11 @@ with gr.Blocks(
1048
  gr.Markdown("To add memories, upload a .jsonl or .json file.")
1049
  with gr.Row(variant="compact"):
1050
  dl_mems_btn = gr.DownloadButton("⬇️ Download Memories", value=None)
1051
- # --- DEMO MODE CHANGE ---
1052
- clear_mems_btn = gr.Button("🗑️ Clear All Memories", variant="stop", interactive=not DEMO_MODE)
1053
- # --- DEMO MODE CHANGE ---
1054
  upload_mems_fobj = gr.File(
1055
  label="Upload Memories File (.jsonl of memory objects, or .json array of objects)",
1056
- file_types=[".jsonl", ".json"],
1057
- interactive=not DEMO_MODE
1058
  )
1059
  mems_stat_tb = gr.Textbox(
1060
  label="Memories Status", interactive=False, lines=1, elem_classes=["status-text"]
@@ -1094,9 +1055,8 @@ with gr.Blocks(
1094
  show_progress="full"
1095
  ).then(fn=ui_refresh_rules_display_fn, outputs=rules_disp_ta, show_progress=False) # Refresh display after upload
1096
 
1097
- # --- DEMO MODE CHANGE ---
1098
  clear_rules_btn.click(
1099
- fn=lambda: "Clearing is disabled in Demo Mode." if DEMO_MODE else ("All rules cleared." if clear_all_rules_data_backend() else "Error clearing rules."),
1100
  outputs=rules_stat_tb,
1101
  show_progress=False
1102
  ).then(fn=ui_refresh_rules_display_fn, outputs=rules_disp_ta, show_progress=False) # Refresh display after clear
@@ -1111,9 +1071,8 @@ with gr.Blocks(
1111
  show_progress="full"
1112
  ).then(fn=ui_refresh_memories_display_fn, outputs=mems_disp_json, show_progress=False) # Refresh display after upload
1113
 
1114
- # --- DEMO MODE CHANGE ---
1115
  clear_mems_btn.click(
1116
- fn=lambda: "Clearing is disabled in Demo Mode." if DEMO_MODE else ("All memories cleared." if clear_all_memory_data_backend() else "Error clearing memories."),
1117
  outputs=mems_stat_tb,
1118
  show_progress=False
1119
  ).then(fn=ui_refresh_memories_display_fn, outputs=mems_disp_json, show_progress=False) # Refresh display after clear
 
13
  load_dotenv()
14
 
15
  # --- DEMO MODE TOGGLE ---
16
+ # If True, prevents the "Clear All" buttons from being displayed in the UI.
17
  DEMO_MODE = True
18
 
19
  from model_logic import (
 
189
  yield "final_response_and_insights", {"response": final_bot_text, "insights_used": parsed_initial_insights_list}
190
 
191
  def perform_post_interaction_learning(user_input: str, bot_response: str, provider: str, model_disp_name: str, insights_reflected: list[dict], api_key_override: str = None):
 
 
 
 
 
192
  task_id = os.urandom(4).hex()
193
  logger.info(f"POST_INTERACTION_LEARNING [{task_id}]: START User='{user_input[:40]}...', Bot='{bot_response[:40]}...'")
194
  learning_start_time = time.time()
 
358
 
359
 
360
  def handle_gradio_chat_submit(user_msg_txt: str, gr_hist_list: list, sel_prov_name: str, sel_model_disp_name: str, ui_api_key: str|None, cust_sys_prompt: str):
 
 
 
 
 
 
 
 
 
361
  global current_chat_session_history
362
  cleared_input, updated_gr_hist, status_txt = "", list(gr_hist_list), "Initializing..."
363
  # Initialize all potential output components with default/current values
 
484
  api_key_override=ui_api_key.strip() if ui_api_key else None
485
  )
486
  status_txt = "Response & Learning Complete."
 
 
487
  except Exception as e_learn:
488
  logger.error(f"Error during post-interaction learning: {e_learn}", exc_info=True)
489
  status_txt = "Response complete. Error during learning."
 
690
  return gr.DownloadButton(value=None, interactive=False, label="Error")
691
 
692
  def ui_upload_rules_action_fn(uploaded_file_obj, progress=gr.Progress()):
 
 
 
693
  if not uploaded_file_obj: return "No file provided for rules upload."
694
  try:
695
  with open(uploaded_file_obj.name, 'r', encoding='utf-8') as f: content = f.read()
 
766
  return gr.DownloadButton(value=None, interactive=False, label="Error")
767
 
768
  def ui_upload_memories_action_fn(uploaded_file_obj, progress=gr.Progress()):
 
 
 
769
  if not uploaded_file_obj: return "No file provided for memories upload."
770
  try:
771
  with open(uploaded_file_obj.name, 'r', encoding='utf-8') as f: content = f.read()
 
824
  logger.info(msg); return msg
825
 
826
  def save_edited_rules_action_fn(edited_rules_text: str, progress=gr.Progress()):
 
 
 
827
  if not edited_rules_text.strip():
828
  return "No rules text to save."
829
 
 
865
  mems_added, mems_format_errors, mems_save_errors = load_memories_from_file(LOAD_MEMORIES_FILE)
866
  mems_load_msg = f"Memories: Added {mems_added}, Format Errors {mems_format_errors}, Save Errors {mems_save_errors} from {LOAD_MEMORIES_FILE or 'None'}."
867
  logger.info(mems_load_msg)
868
+
869
+ final_status = f"AI Systems Initialized. {rules_load_msg} {mems_load_msg} Ready."
 
870
 
871
  # Initial population of all relevant UI components AFTER loading
872
  rules_on_load = ui_refresh_rules_display_fn()
 
897
  """
898
  ) as demo:
899
  gr.Markdown(
900
+ """
901
+ # 🤖 AI Research Agent
902
  Your intelligent assistant for research and knowledge management
903
  """,
904
  elem_classes=["header"]
 
936
  )
937
  available_providers = get_available_providers()
938
  default_provider = available_providers[0] if available_providers else None
 
 
939
  prov_sel_dd = gr.Dropdown(
940
+ label="AI Provider", choices=available_providers,
941
+ value=default_provider, interactive=True
 
 
942
  )
943
+ default_model_display = get_default_model_display_name_for_provider(default_provider) if default_provider else None
 
 
 
 
944
  model_sel_dd = gr.Dropdown(
945
  label="AI Model",
946
+ choices=get_model_display_names_for_provider(default_provider) if default_provider else [],
947
+ value=default_model_display,
948
+ interactive=True
949
  )
950
  with gr.Group():
951
  gr.Markdown("### System Prompt")
 
990
  interactive=True
991
  )
992
  gr.Markdown("To edit rules, modify the text above and click 'Save Edited Text', or upload a new file.")
993
+ save_edited_rules_btn = gr.Button("💾 Save Edited Text", variant="primary")
 
994
  with gr.Row(variant="compact"):
995
  dl_rules_btn = gr.DownloadButton("⬇️ Download Rules", value=None)
996
+ # --- DEMO MODE CHANGE: Button is hidden in demo mode ---
997
+ clear_rules_btn = gr.Button("🗑️ Clear All Rules", variant="stop", visible=not DEMO_MODE)
 
998
  upload_rules_fobj = gr.File(
999
  label="Upload Rules File (.txt with '---' separators, or .jsonl of rule strings)",
1000
+ file_types=[".txt", ".jsonl"]
 
1001
  )
1002
  rules_stat_tb = gr.Textbox(
1003
  label="Rules Status", interactive=False, lines=1, elem_classes=["status-text"]
 
1011
  gr.Markdown("To add memories, upload a .jsonl or .json file.")
1012
  with gr.Row(variant="compact"):
1013
  dl_mems_btn = gr.DownloadButton("⬇️ Download Memories", value=None)
1014
+ # --- DEMO MODE CHANGE: Button is hidden in demo mode ---
1015
+ clear_mems_btn = gr.Button("🗑️ Clear All Memories", variant="stop", visible=not DEMO_MODE)
 
1016
  upload_mems_fobj = gr.File(
1017
  label="Upload Memories File (.jsonl of memory objects, or .json array of objects)",
1018
+ file_types=[".jsonl", ".json"]
 
1019
  )
1020
  mems_stat_tb = gr.Textbox(
1021
  label="Memories Status", interactive=False, lines=1, elem_classes=["status-text"]
 
1055
  show_progress="full"
1056
  ).then(fn=ui_refresh_rules_display_fn, outputs=rules_disp_ta, show_progress=False) # Refresh display after upload
1057
 
 
1058
  clear_rules_btn.click(
1059
+ fn=lambda: ("All rules cleared." if clear_all_rules_data_backend() else "Error clearing rules."),
1060
  outputs=rules_stat_tb,
1061
  show_progress=False
1062
  ).then(fn=ui_refresh_rules_display_fn, outputs=rules_disp_ta, show_progress=False) # Refresh display after clear
 
1071
  show_progress="full"
1072
  ).then(fn=ui_refresh_memories_display_fn, outputs=mems_disp_json, show_progress=False) # Refresh display after upload
1073
 
 
1074
  clear_mems_btn.click(
1075
+ fn=lambda: ("All memories cleared." if clear_all_memory_data_backend() else "Error clearing memories."),
1076
  outputs=mems_stat_tb,
1077
  show_progress=False
1078
  ).then(fn=ui_refresh_memories_display_fn, outputs=mems_disp_json, show_progress=False) # Refresh display after clear