Ankit93 commited on
Commit
34bbf8e
ยท
verified ยท
1 Parent(s): 555b208

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -60
app.py CHANGED
@@ -1,79 +1,101 @@
1
- import os
2
- import re, uuid
3
- import json, logging
4
  import gradio as gr
5
- from typing import List, Dict
6
- from dotenv import load_dotenv
7
- from data.css import custom_css
8
  from src.controller.agent_cacher import AgentManager
 
9
  # Configure logging
10
  logging.basicConfig(level=logging.INFO, format="-->%(asctime)s [%(levelname)s] %(message)s")
11
 
12
- load_dotenv()
13
-
14
-
 
 
15
 
16
  def create_gradio_interface():
17
- gr.HTML('<link href="https://fonts.googleapis.com/css2?family=Fira+Code&family=Roboto&display=swap" rel="stylesheet">')
18
- gr.HTML(custom_css)
19
  manager = AgentManager()
20
-
21
  with gr.Blocks(title="AI Learning Assistant") as demo:
22
- gr.Markdown("# ๐Ÿง  Learn with LlamaIndex Tools")
23
- logging.info("Starting Learning Application")
24
-
25
- with gr.Row():
26
- session_id = gr.Textbox(label="Session ID", value=str(uuid.uuid4()), visible=True)
27
- llm_selector = gr.Dropdown(
28
- label="LLM Type",
29
- choices=["Google", "OpenAI", "HuggingFace", "Mistral"],
30
- value="Google",
31
- interactive=True
32
- )
33
 
34
- with gr.Row():
35
- with gr.Column(scale=3):
36
- chatbot = gr.Chatbot(
37
- label="Learning Dialog",
38
- height=500,
39
- type="messages"
 
 
 
 
 
 
 
 
 
 
 
40
  )
41
- query_input = gr.Textbox(label="Your Learning Query", placeholder="Ask about ML/DL algorithms...")
42
- submit_btn = gr.Button("Submit")
43
-
44
- with gr.Column(scale=1):
45
- gr.Markdown("### Tools Preview")
46
- tool_output = gr.Textbox(label="Selected Tools", interactive=False)
47
- response_output = gr.Textbox(label="Full Response", interactive=False, lines=10)
48
-
49
- def process_query(session_id_val, query, chat_history, llm_val):
50
- print("Session:", session_id)
51
- print("Query:", query)
52
- #print("Chat History:", chat_history)
53
- print("Option selected:", llm_val)
54
- agent = manager.get_agent(session_id_val, llm_type=llm_val)
55
- chat_history, tools_used, response = agent.process_query(query)
56
- manager.save_agent(session_id_val, agent)
57
- return chat_history, tools_used, response, ""
58
-
59
- submit_btn.click(
60
- process_query,
61
- inputs=[session_id, query_input, chatbot, llm_selector], # โœ… 4 inputs
62
- outputs=[chatbot, tool_output, response_output, query_input]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  )
64
 
65
- def load_history(session_id_val, llm_val):
66
- agent = manager.get_agent(session_id_val, llm_val)
67
- return agent.chat_history
 
 
68
 
69
- session_id.change(
70
- load_history,
71
- inputs=[session_id, llm_selector], # โœ… Pass component objects, not .value
72
- outputs=chatbot
73
  )
74
 
75
  return demo
 
76
  if __name__ == "__main__":
77
- auth_users = [(os.environ["GRADIO_USER"], os.environ["GRADIO_PASS"])]
78
  interface = create_gradio_interface()
79
- interface.launch(auth=auth_users)
 
 
 
 
1
  import gradio as gr
2
+ import uuid
3
+ import logging
 
4
  from src.controller.agent_cacher import AgentManager
5
+
6
  # Configure logging
7
  logging.basicConfig(level=logging.INFO, format="-->%(asctime)s [%(levelname)s] %(message)s")
8
 
9
+ # User credentials
10
+ VALID_USERS = {
11
+ "ankit": "mlpass123",
12
+ "demo": "test123"
13
+ }
14
 
15
  def create_gradio_interface():
 
 
16
  manager = AgentManager()
17
+
18
  with gr.Blocks(title="AI Learning Assistant") as demo:
19
+ auth_state = gr.State(False) # store login status
 
 
 
 
 
 
 
 
 
 
20
 
21
+ with gr.Column(visible=True) as login_section:
22
+ gr.Markdown("## ๐Ÿ” Login to Continue")
23
+ username = gr.Textbox(label="Username")
24
+ password = gr.Textbox(label="Password", type="password")
25
+ login_btn = gr.Button("Login")
26
+ login_error = gr.Markdown(visible=False)
27
+
28
+ with gr.Column(visible=False) as app_section:
29
+ gr.Markdown("# ๐Ÿง  Learn with LlamaIndex Tools")
30
+
31
+ with gr.Row():
32
+ session_id = gr.Textbox(label="Session ID", value=str(uuid.uuid4()), visible=True)
33
+ llm_selector = gr.Dropdown(
34
+ label="LLM Type",
35
+ choices=["Google", "OpenAI", "HuggingFace", "Mistral"],
36
+ value="Google",
37
+ interactive=True
38
  )
39
+
40
+ with gr.Row():
41
+ with gr.Column(scale=3):
42
+ chatbot = gr.Chatbot(label="Learning Dialog", height=500, type="messages")
43
+ query_input = gr.Textbox(label="Your Learning Query", placeholder="Ask about ML/DL algorithms...")
44
+ submit_btn = gr.Button("Submit")
45
+
46
+ with gr.Column(scale=1):
47
+ gr.Markdown("### Tools Preview")
48
+ tool_output = gr.Textbox(label="Selected Tools", interactive=False)
49
+ response_output = gr.Textbox(label="Full Response", interactive=False, lines=10)
50
+
51
+ def process_query(session_id_val, query, chat_history, llm_val):
52
+ agent = manager.get_agent(session_id_val, llm_type=llm_val)
53
+ chat_history, tools_used, response = agent.process_query(query)
54
+ manager.save_agent(session_id_val, agent)
55
+ return chat_history, tools_used, response, ""
56
+
57
+ submit_btn.click(
58
+ process_query,
59
+ inputs=[session_id, query_input, chatbot, llm_selector],
60
+ outputs=[chatbot, tool_output, response_output, query_input]
61
+ )
62
+
63
+ def load_history(session_id_val, llm_val):
64
+ agent = manager.get_agent(session_id_val, llm_val)
65
+ return agent.chat_history
66
+
67
+ session_id.change(
68
+ load_history,
69
+ inputs=[session_id, llm_selector],
70
+ outputs=chatbot
71
+ )
72
+
73
+ def check_login(username, password):
74
+ if username == "admin" and password == "123":
75
+ return "", True
76
+ else:
77
+ return "Invalid credentials", False
78
+
79
+ login_btn.click(
80
+ check_login,
81
+ inputs=[username, password],
82
+ outputs=[login_error, auth_state]
83
  )
84
 
85
+ def toggle_ui(is_logged_in):
86
+ return (
87
+ gr.update(visible=is_logged_in), # app_section
88
+ gr.update(visible=not is_logged_in) # login_section
89
+ )
90
 
91
+ auth_state.change(
92
+ toggle_ui,
93
+ inputs=auth_state,
94
+ outputs=[app_section, login_section]
95
  )
96
 
97
  return demo
98
+
99
  if __name__ == "__main__":
 
100
  interface = create_gradio_interface()
101
+ interface.launch()