| import gradio as gr |
| import uuid |
| import logging |
| from src.controller.agent_cacher import AgentManager |
|
|
| |
| logging.basicConfig(level=logging.INFO, format="-->%(asctime)s [%(levelname)s] %(message)s") |
|
|
| |
| VALID_USERS = { |
| "ankit": "mlpass123", |
| "demo": "test123" |
| } |
|
|
| def create_gradio_interface(): |
| manager = AgentManager() |
|
|
| with gr.Blocks(title="AI Learning Assistant") as demo: |
| auth_state = gr.State(False) |
|
|
| with gr.Column(visible=True) as login_section: |
| gr.Markdown("## ๐ Login to Continue") |
| username = gr.Textbox(label="Username") |
| password = gr.Textbox(label="Password", type="password") |
| login_btn = gr.Button("Login") |
| login_error = gr.Markdown(visible=False) |
|
|
| with gr.Column(visible=False) as app_section: |
| gr.Markdown("# ๐ง Learn with LlamaIndex Tools") |
|
|
| with gr.Row(): |
| session_id = gr.Textbox(label="Session ID", value=str(uuid.uuid4()), visible=True) |
| llm_selector = gr.Dropdown( |
| label="LLM Type", |
| choices=["Google", "OpenAI", "HuggingFace", "Mistral"], |
| value="Google", |
| interactive=True |
| ) |
|
|
| with gr.Row(): |
| with gr.Column(scale=3): |
| chatbot = gr.Chatbot(label="Learning Dialog", height=500, type="messages") |
| query_input = gr.Textbox(label="Your Learning Query", placeholder="Ask about ML/DL algorithms...") |
| submit_btn = gr.Button("Submit") |
|
|
| with gr.Column(scale=1): |
| gr.Markdown("### Tools Preview") |
| tool_output = gr.Textbox(label="Selected Tools", interactive=False) |
| response_output = gr.Textbox(label="Full Response", interactive=False, lines=10) |
|
|
| def process_query(session_id_val, query, chat_history, llm_val): |
| agent = manager.get_agent(session_id_val, llm_type=llm_val) |
| chat_history, tools_used, response = agent.process_query(query) |
| manager.save_agent(session_id_val, agent) |
| return chat_history, tools_used, response, "" |
|
|
| submit_btn.click( |
| process_query, |
| inputs=[session_id, query_input, chatbot, llm_selector], |
| outputs=[chatbot, tool_output, response_output, query_input] |
| ) |
|
|
| def load_history(session_id_val, llm_val): |
| agent = manager.get_agent(session_id_val, llm_val) |
| return agent.chat_history |
|
|
| session_id.change( |
| load_history, |
| inputs=[session_id, llm_selector], |
| outputs=chatbot |
| ) |
|
|
| def check_login(username, password): |
| if username == "admin" and password == "123": |
| return "", True |
| else: |
| return "Invalid credentials", False |
|
|
| login_btn.click( |
| check_login, |
| inputs=[username, password], |
| outputs=[login_error, auth_state] |
| ) |
|
|
| def toggle_ui(is_logged_in): |
| return ( |
| gr.update(visible=is_logged_in), |
| gr.update(visible=not is_logged_in) |
| ) |
|
|
| auth_state.change( |
| toggle_ui, |
| inputs=auth_state, |
| outputs=[app_section, login_section] |
| ) |
|
|
| return demo |
|
|
| if __name__ == "__main__": |
| interface = create_gradio_interface() |
| interface.launch() |
|
|