Anupam251272 commited on
Commit
71ef560
·
verified ·
1 Parent(s): d7be7d3

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +200 -0
app.py ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ import gradio as gr
3
+ import time
4
+ from typing import List, Dict
5
+
6
+ # Mock backend responses
7
+ class MockBackend:
8
+ def generate_response(self, prompt: str, model: str) -> str:
9
+ # Simulate some processing time
10
+ time.sleep(1)
11
+
12
+ # Mock responses for different types of queries
13
+ if "binary search" in prompt.lower():
14
+ return """
15
+ def binary_search(arr: list, target: int) -> int:
16
+ '''
17
+ Implements binary search algorithm
18
+ Args:
19
+ arr: Sorted list of numbers
20
+ target: Number to find
21
+ Returns:
22
+ Index of target if found, -1 otherwise
23
+ '''
24
+ left, right = 0, len(arr) - 1
25
+
26
+ while left <= right:
27
+ mid = (left + right) // 2
28
+ if arr[mid] == target:
29
+ return mid
30
+ elif arr[mid] < target:
31
+ left = mid + 1
32
+ else:
33
+ right = mid - 1
34
+
35
+ return -1
36
+
37
+ # Example usage:
38
+ numbers = [1, 3, 5, 7, 9, 11, 13, 15]
39
+ result = binary_search(numbers, 7)
40
+ print(f"Found 7 at index: {result}") # Output: Found 7 at index: 3
41
+ """
42
+ elif "machine learning" in prompt.lower():
43
+ return "Machine Learning is a subset of artificial intelligence that enables systems to learn and improve from experience without being explicitly programmed. It uses statistical techniques to allow computers to 'learn' from data."
44
+ else:
45
+ return f"Mock response for query: {prompt}"
46
+
47
+ # Initialize mock backend and query list
48
+ mock_backend = MockBackend()
49
+ queries_list = []
50
+
51
+ # Model name mappings
52
+ llm_name2id = {
53
+ "Llama-3.1-70B-Versatile": "llama-3.1-70b-versatile",
54
+ "Llama-3-70B-8192": "llama3-70b-8192",
55
+ "Llama-3-8B-8192": "llama3-8b-8192"
56
+ }
57
+
58
+ # Default values
59
+ DEFAULT_TEMP = 0.2
60
+ DEFAULT_MODEL = "Llama-3-70B-8192"
61
+ DEFAULT_USE_RAG = True
62
+
63
+ def clear_queries():
64
+ global queries_list
65
+ queries_list = []
66
+ return "", DEFAULT_MODEL, DEFAULT_TEMP, DEFAULT_USE_RAG, "", ""
67
+
68
+ def add_to_list(query_txt: str, model: str, temperature: float, use_rag: bool) -> tuple:
69
+ global queries_list
70
+
71
+ if len(query_txt.strip()) > 0:
72
+ queries_list.append({
73
+ "prompt": query_txt.strip(),
74
+ "temperature": str(temperature),
75
+ "model": llm_name2id[model],
76
+ "use_rag": str(use_rag),
77
+ })
78
+
79
+ return "", generate_queries_str(queries_list)
80
+
81
+ def submit(query_txt: str, model: str, temperature: float, use_rag: bool) -> tuple:
82
+ global queries_list
83
+
84
+ if len(query_txt.strip()) > 0:
85
+ _, queries = add_to_list(query_txt, model, temperature, use_rag)
86
+ else:
87
+ queries = generate_queries_str(queries_list)
88
+
89
+ if len(queries_list) > 0:
90
+ # Use mock backend instead of HTTP requests
91
+ answers = []
92
+ for query in queries_list:
93
+ response = mock_backend.generate_response(query["prompt"], query["model"])
94
+ answers.append({"answer": response})
95
+
96
+ answers_str = generate_answers_str(answers)
97
+ queries_list = []
98
+ else:
99
+ answers_str = "No queries submitted yet."
100
+
101
+ return "", queries, answers_str
102
+
103
+ def generate_queries_str(queries: List[Dict]) -> str:
104
+ delimiter = f"\n{'-' * 120}\n"
105
+ return delimiter.join([f"Query: {q['prompt']}" for q in queries])
106
+
107
+ def generate_answers_str(answers: List[Dict]) -> str:
108
+ delimiter = f"\n{'-' * 120}\n"
109
+ return delimiter.join([clean(a["answer"]) for a in answers])
110
+
111
+ def clean(answer_str: str) -> str:
112
+ answer_str = re.sub('^\s*:', '', answer_str)
113
+
114
+ garbages = [
115
+ "Here is the generated paragraph:",
116
+ "Let me know if this meets your requirements!",
117
+ ]
118
+ for g in garbages:
119
+ answer_str = answer_str.replace(g, "")
120
+ return answer_str.strip()
121
+
122
+ if __name__ == "__main__":
123
+ with gr.Blocks(theme=gr.themes.Default()) as demo:
124
+ gr.Markdown("""
125
+ # Multilingual LLM Interface (Mock Version)
126
+ Enter your query in any language. This is a mock version for testing - responses are simulated.
127
+
128
+ Test queries:
129
+ 1. Ask about "binary search" to get a code implementation
130
+ 2. Ask about "machine learning" to get an explanation
131
+ 3. Try any other query to see mock responses
132
+ """)
133
+
134
+ with gr.Row():
135
+ with gr.Column(scale=2):
136
+ query_txt = gr.Textbox(
137
+ placeholder="Enter your query here...",
138
+ label="Query",
139
+ lines=3
140
+ )
141
+ with gr.Column(scale=1):
142
+ model = gr.Radio(
143
+ choices=[
144
+ "Llama-3-8B-8192",
145
+ "Llama-3-70B-8192",
146
+ "Llama-3.1-70B-Versatile",
147
+ ],
148
+ value=DEFAULT_MODEL,
149
+ label="Select Model"
150
+ )
151
+ use_rag = gr.Checkbox(
152
+ value=DEFAULT_USE_RAG,
153
+ label="Enable RAG (Retrieval-Augmented Generation)"
154
+ )
155
+ temperature = gr.Slider(
156
+ minimum=0,
157
+ maximum=1,
158
+ value=DEFAULT_TEMP,
159
+ step=0.1,
160
+ label="Temperature (Creativity)"
161
+ )
162
+
163
+ with gr.Row():
164
+ clear_btn = gr.Button("Clear All", variant="stop")
165
+ add_btn = gr.Button("Add Query", variant="secondary")
166
+ submit_btn = gr.Button("Submit All", variant="primary")
167
+
168
+ with gr.Row():
169
+ with gr.Column():
170
+ queries_box = gr.Textbox(
171
+ placeholder="Your queries will appear here...",
172
+ label="Submitted Queries",
173
+ interactive=False,
174
+ lines=5
175
+ )
176
+ with gr.Column():
177
+ answers_box = gr.Textbox(
178
+ placeholder="Model responses will appear here...",
179
+ label="Model Responses",
180
+ interactive=False,
181
+ lines=5
182
+ )
183
+
184
+ clear_btn.click(
185
+ fn=clear_queries,
186
+ inputs=[],
187
+ outputs=[query_txt, model, temperature, use_rag, queries_box, answers_box]
188
+ )
189
+ add_btn.click(
190
+ fn=add_to_list,
191
+ inputs=[query_txt, model, temperature, use_rag],
192
+ outputs=[query_txt, queries_box]
193
+ )
194
+ submit_btn.click(
195
+ fn=submit,
196
+ inputs=[query_txt, model, temperature, use_rag],
197
+ outputs=[query_txt, queries_box, answers_box]
198
+ )
199
+
200
+ demo.launch()