Spaces:
Running
Running
| """ | |
| ui.tabs.settings_tab | |
| ==================== | |
| Tab 4 β Settings | |
| All configurable runtime parameters: | |
| - ASR model selection (Large-v3 GPU vs Distil-Large CPU) | |
| - Voice output: toggle, rate, pitch, voice selector | |
| - Retrieval: k, BM25 vs vector weight, re-ranker on/off | |
| - LLM: Groq vs Gemini toggle, max answer length, citation density | |
| - Chunking: chunk size, overlap (advanced) | |
| Status: PLACEHOLDER β full implementation in Phase 5. | |
| """ | |
| from __future__ import annotations | |
| import gradio as gr | |
| def build_settings_tab() -> None: | |
| """ | |
| Build and render the Settings tab. | |
| Called by app.py within a gr.Tab("Settings") block. | |
| """ | |
| gr.Markdown( | |
| """ | |
| ## βοΈ Settings | |
| *Configure ASR, retrieval, generation, and voice output parameters.* | |
| --- | |
| **Coming in Phase 5 (partially Phase 3 & 4):** | |
| - π€ ASR: Whisper Large-v3 (GPU) vs Distil-Whisper (CPU) | |
| - π Voice: toggle, speaking rate, pitch, browser voice selector | |
| - π Retrieval: number of results (k), re-ranker on/off | |
| - π§ LLM: Groq vs Gemini, max tokens, citation density | |
| - π§© Chunking: target size, overlap (advanced) | |
| """ | |
| ) | |
| with gr.Accordion("π€ ASR Settings", open=True): | |
| gr.Radio( | |
| label="Whisper Model", | |
| choices=["Large-v3 (GPU, best quality)", "Distil-Large-v3 (CPU, fast)"], | |
| value="Large-v3 (GPU, best quality)", | |
| interactive=False, | |
| ) | |
| with gr.Accordion("π Voice Output", open=True): | |
| gr.Checkbox(label="Enable Voice Output", value=True, interactive=False) | |
| gr.Slider(label="Speaking Rate", minimum=0.5, maximum=2.0, value=1.0, step=0.1, interactive=False) | |
| gr.Slider(label="Pitch", minimum=0.5, maximum=2.0, value=1.0, step=0.1, interactive=False) | |
| with gr.Accordion("π Retrieval Settings", open=False): | |
| gr.Slider(label="Number of Final Chunks (k)", minimum=1, maximum=10, value=5, step=1, interactive=False) | |
| gr.Checkbox(label="Cross-Encoder Re-ranking", value=True, interactive=False) | |
| with gr.Accordion("π§ LLM Settings", open=False): | |
| gr.Radio( | |
| label="Primary LLM", | |
| choices=["Groq Llama-3.1-70B (fast)", "Gemini 1.5 Flash (fallback)"], | |
| value="Groq Llama-3.1-70B (fast)", | |
| interactive=False, | |
| ) | |
| gr.Slider(label="Max Answer Tokens", minimum=100, maximum=800, value=500, step=50, interactive=False) | |
| with gr.Accordion("π§© Chunking Settings (Advanced)", open=False): | |
| gr.Slider(label="Target Chunk Size (tokens)", minimum=200, maximum=800, value=500, step=50, interactive=False) | |
| gr.Slider(label="Chunk Overlap (tokens)", minimum=0, maximum=100, value=50, step=10, interactive=False) | |