broadfield-dev commited on
Commit
6a1dd69
Β·
verified Β·
1 Parent(s): dad6bf5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -44
app.py CHANGED
@@ -449,52 +449,51 @@ with gr.Blocks(theme=custom_theme, css=custom_css, title="AI Research Agent v5.8
449
  sqlite_path_display = gr.Textbox(label="SQLite Path", value=f"{MEMORY_SQLITE_PATH}", interactive=False, visible=(MEMORY_STORAGE_BACKEND == "SQLITE"), scale=2) # Use visible
450
  hf_repos_display = gr.Textbox(label="HF Repos", value=f"M: {MEMORY_HF_MEM_REPO}, R: {MEMORY_HF_RULES_REPO}", interactive=False, visible=(MEMORY_STORAGE_BACKEND == "HF_DATASET"), scale=2) # Use visible
451
 
452
- with gr.Row(equal_height=False):
453
- with gr.Sidebar(): # Using Gradio's explicit Sidebar component
454
- gr.Markdown("## βš™οΈ Configuration")
455
- with gr.Group():
456
- gr.Markdown("### AI Model Settings")
457
- api_key_tb = gr.Textbox(label="AI Provider API Key (Override)", type="password", placeholder="Uses .env if blank")
458
- prov_sel_dd = gr.Dropdown(label="AI Provider", choices=avail_provs, value=def_prov, interactive=True)
459
- model_sel_dd = gr.Dropdown(label="AI Model", choices=def_models, value=def_model_disp, interactive=True)
460
- with gr.Group():
461
- gr.Markdown("### System Prompt")
462
- sys_prompt_tb = gr.Textbox(label="System Prompt Base", lines=10, value=DEFAULT_SYSTEM_PROMPT, interactive=True)
463
- if MEMORY_STORAGE_BACKEND == "RAM":
464
- save_faiss_sidebar_btn = gr.Button("Save FAISS Indices", variant="secondary")
465
 
466
- with gr.Column(scale=3): # Main content area to the right of sidebar
467
- with gr.Tabs():
468
- with gr.TabItem("πŸ’¬ AI Chat & Research Output"):
469
- gr.Markdown("### AI Chat Interface") # Using H3 for section titles within tabs
470
- main_chat_disp = gr.Chatbot(label="AI Research Chat", height=500, bubble_full_width=False, avatar_images=(None, "https://raw.githubusercontent.com/huggingface/brand-assets/main/hf-logo-with-title.png"), show_copy_button=True, render_markdown=True, sanitize_html=True)
471
- with gr.Row():
472
- user_msg_tb = gr.Textbox(show_label=False, placeholder="Ask your research question...", scale=7, lines=1, max_lines=5, autofocus=True)
473
- send_btn = gr.Button("Send", variant="primary", scale=1, min_width=100)
474
- with gr.Accordion("πŸ“ Full Response / Details", open=False):
475
- fmt_report_tb = gr.Textbox(label="Full AI Response", lines=10, interactive=True, show_copy_button=True)
476
- dl_report_btn = gr.DownloadButton("Download Report", interactive=False, visible=False)
477
- detect_out_md = gr.Markdown()
478
 
479
- with gr.TabItem("🧠 Knowledge Base Management"):
480
- gr.Markdown("### Manage Stored Knowledge")
481
- with gr.Row():
482
- with gr.Column():
483
- with gr.Group():
484
- gr.Markdown("#### πŸ“œ Rules (Insights)")
485
- rules_disp_ta = gr.TextArea(label="View/Edit Rules", lines=15, interactive=True, placeholder="Load rules or type new ones...")
486
- with gr.Row(): view_rules_btn = gr.Button("πŸ”„ Load"); save_edited_rules_btn = gr.Button("πŸ’Ύ Save Edits", variant="primary")
487
- upload_rules_fobj = gr.File(label="Upload Rules File", file_types=[".txt", ".jsonl"])
488
- rules_stat_tb = gr.Textbox(label="Rules Status", interactive=False, lines=2)
489
- clear_rules_btn = gr.Button("⚠️ Clear All Rules", variant="stop")
490
- with gr.Column():
491
- with gr.Group():
492
- gr.Markdown("#### πŸ“š Memories")
493
- mems_disp_json = gr.JSON(label="View Memories")
494
- view_mems_btn = gr.Button("πŸ”„ Load Memories")
495
- upload_mems_fobj = gr.File(label="Upload Memories File", file_types=[".jsonl"])
496
- mems_stat_tb = gr.Textbox(label="Memories Status", interactive=False, lines=2)
497
- clear_mems_btn = gr.Button("⚠️ Clear All Memories", variant="stop")
498
 
499
  def dyn_upd_model_dd(sel_prov_dyn:str): models_dyn, def_model_dyn = get_model_display_names_for_provider(sel_prov_dyn), get_default_model_display_name_for_provider(sel_prov_dyn); return gr.Dropdown(choices=models_dyn, value=def_model_dyn, interactive=True)
500
  prov_sel_dd.change(fn=dyn_upd_model_dd, inputs=prov_sel_dd, outputs=model_sel_dd)
 
449
  sqlite_path_display = gr.Textbox(label="SQLite Path", value=f"{MEMORY_SQLITE_PATH}", interactive=False, visible=(MEMORY_STORAGE_BACKEND == "SQLITE"), scale=2) # Use visible
450
  hf_repos_display = gr.Textbox(label="HF Repos", value=f"M: {MEMORY_HF_MEM_REPO}, R: {MEMORY_HF_RULES_REPO}", interactive=False, visible=(MEMORY_STORAGE_BACKEND == "HF_DATASET"), scale=2) # Use visible
451
 
452
+ with gr.Sidebar(): # Using Gradio's explicit Sidebar component
453
+ gr.Markdown("## βš™οΈ Configuration")
454
+ with gr.Group():
455
+ gr.Markdown("### AI Model Settings")
456
+ api_key_tb = gr.Textbox(label="AI Provider API Key (Override)", type="password", placeholder="Uses .env if blank")
457
+ prov_sel_dd = gr.Dropdown(label="AI Provider", choices=avail_provs, value=def_prov, interactive=True)
458
+ model_sel_dd = gr.Dropdown(label="AI Model", choices=def_models, value=def_model_disp, interactive=True)
459
+ with gr.Group():
460
+ gr.Markdown("### System Prompt")
461
+ sys_prompt_tb = gr.Textbox(label="System Prompt Base", lines=10, value=DEFAULT_SYSTEM_PROMPT, interactive=True)
462
+ if MEMORY_STORAGE_BACKEND == "RAM":
463
+ save_faiss_sidebar_btn = gr.Button("Save FAISS Indices", variant="secondary")
 
464
 
465
+ with gr.Column(scale=3): # Main content area to the right of sidebar
466
+ with gr.Tabs():
467
+ with gr.TabItem("πŸ’¬ AI Chat & Research Output"):
468
+ gr.Markdown("### AI Chat Interface") # Using H3 for section titles within tabs
469
+ main_chat_disp = gr.Chatbot(label="AI Research Chat", height=500, bubble_full_width=False, avatar_images=(None, "https://raw.githubusercontent.com/huggingface/brand-assets/main/hf-logo-with-title.png"), show_copy_button=True, render_markdown=True, sanitize_html=True)
470
+ with gr.Row():
471
+ user_msg_tb = gr.Textbox(show_label=False, placeholder="Ask your research question...", scale=7, lines=1, max_lines=5, autofocus=True)
472
+ send_btn = gr.Button("Send", variant="primary", scale=1, min_width=100)
473
+ with gr.Accordion("πŸ“ Full Response / Details", open=False):
474
+ fmt_report_tb = gr.Textbox(label="Full AI Response", lines=10, interactive=True, show_copy_button=True)
475
+ dl_report_btn = gr.DownloadButton("Download Report", interactive=False, visible=False)
476
+ detect_out_md = gr.Markdown()
477
 
478
+ with gr.TabItem("🧠 Knowledge Base Management"):
479
+ gr.Markdown("### Manage Stored Knowledge")
480
+ with gr.Row():
481
+ with gr.Column():
482
+ with gr.Group():
483
+ gr.Markdown("#### πŸ“œ Rules (Insights)")
484
+ rules_disp_ta = gr.TextArea(label="View/Edit Rules", lines=15, interactive=True, placeholder="Load rules or type new ones...")
485
+ with gr.Row(): view_rules_btn = gr.Button("πŸ”„ Load"); save_edited_rules_btn = gr.Button("πŸ’Ύ Save Edits", variant="primary")
486
+ upload_rules_fobj = gr.File(label="Upload Rules File", file_types=[".txt", ".jsonl"])
487
+ rules_stat_tb = gr.Textbox(label="Rules Status", interactive=False, lines=2)
488
+ clear_rules_btn = gr.Button("⚠️ Clear All Rules", variant="stop")
489
+ with gr.Column():
490
+ with gr.Group():
491
+ gr.Markdown("#### πŸ“š Memories")
492
+ mems_disp_json = gr.JSON(label="View Memories")
493
+ view_mems_btn = gr.Button("πŸ”„ Load Memories")
494
+ upload_mems_fobj = gr.File(label="Upload Memories File", file_types=[".jsonl"])
495
+ mems_stat_tb = gr.Textbox(label="Memories Status", interactive=False, lines=2)
496
+ clear_mems_btn = gr.Button("⚠️ Clear All Memories", variant="stop")
497
 
498
  def dyn_upd_model_dd(sel_prov_dyn:str): models_dyn, def_model_dyn = get_model_display_names_for_provider(sel_prov_dyn), get_default_model_display_name_for_provider(sel_prov_dyn); return gr.Dropdown(choices=models_dyn, value=def_model_dyn, interactive=True)
499
  prov_sel_dd.change(fn=dyn_upd_model_dd, inputs=prov_sel_dd, outputs=model_sel_dd)