Anupam251272's picture
Create app.py
71ef560 verified
Raw
History Blame Contribute Delete
6.59 kB
import re
import gradio as gr
import time
from typing import List, Dict
# Mock backend responses
class MockBackend:
def generate_response(self, prompt: str, model: str) -> str:
# Simulate some processing time
time.sleep(1)
# Mock responses for different types of queries
if "binary search" in prompt.lower():
return """
def binary_search(arr: list, target: int) -> int:
'''
Implements binary search algorithm
Args:
arr: Sorted list of numbers
target: Number to find
Returns:
Index of target if found, -1 otherwise
'''
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# Example usage:
numbers = [1, 3, 5, 7, 9, 11, 13, 15]
result = binary_search(numbers, 7)
print(f"Found 7 at index: {result}") # Output: Found 7 at index: 3
"""
elif "machine learning" in prompt.lower():
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."
else:
return f"Mock response for query: {prompt}"
# Initialize mock backend and query list
mock_backend = MockBackend()
queries_list = []
# Model name mappings
llm_name2id = {
"Llama-3.1-70B-Versatile": "llama-3.1-70b-versatile",
"Llama-3-70B-8192": "llama3-70b-8192",
"Llama-3-8B-8192": "llama3-8b-8192"
}
# Default values
DEFAULT_TEMP = 0.2
DEFAULT_MODEL = "Llama-3-70B-8192"
DEFAULT_USE_RAG = True
def clear_queries():
global queries_list
queries_list = []
return "", DEFAULT_MODEL, DEFAULT_TEMP, DEFAULT_USE_RAG, "", ""
def add_to_list(query_txt: str, model: str, temperature: float, use_rag: bool) -> tuple:
global queries_list
if len(query_txt.strip()) > 0:
queries_list.append({
"prompt": query_txt.strip(),
"temperature": str(temperature),
"model": llm_name2id[model],
"use_rag": str(use_rag),
})
return "", generate_queries_str(queries_list)
def submit(query_txt: str, model: str, temperature: float, use_rag: bool) -> tuple:
global queries_list
if len(query_txt.strip()) > 0:
_, queries = add_to_list(query_txt, model, temperature, use_rag)
else:
queries = generate_queries_str(queries_list)
if len(queries_list) > 0:
# Use mock backend instead of HTTP requests
answers = []
for query in queries_list:
response = mock_backend.generate_response(query["prompt"], query["model"])
answers.append({"answer": response})
answers_str = generate_answers_str(answers)
queries_list = []
else:
answers_str = "No queries submitted yet."
return "", queries, answers_str
def generate_queries_str(queries: List[Dict]) -> str:
delimiter = f"\n{'-' * 120}\n"
return delimiter.join([f"Query: {q['prompt']}" for q in queries])
def generate_answers_str(answers: List[Dict]) -> str:
delimiter = f"\n{'-' * 120}\n"
return delimiter.join([clean(a["answer"]) for a in answers])
def clean(answer_str: str) -> str:
answer_str = re.sub('^\s*:', '', answer_str)
garbages = [
"Here is the generated paragraph:",
"Let me know if this meets your requirements!",
]
for g in garbages:
answer_str = answer_str.replace(g, "")
return answer_str.strip()
if __name__ == "__main__":
with gr.Blocks(theme=gr.themes.Default()) as demo:
gr.Markdown("""
# Multilingual LLM Interface (Mock Version)
Enter your query in any language. This is a mock version for testing - responses are simulated.
Test queries:
1. Ask about "binary search" to get a code implementation
2. Ask about "machine learning" to get an explanation
3. Try any other query to see mock responses
""")
with gr.Row():
with gr.Column(scale=2):
query_txt = gr.Textbox(
placeholder="Enter your query here...",
label="Query",
lines=3
)
with gr.Column(scale=1):
model = gr.Radio(
choices=[
"Llama-3-8B-8192",
"Llama-3-70B-8192",
"Llama-3.1-70B-Versatile",
],
value=DEFAULT_MODEL,
label="Select Model"
)
use_rag = gr.Checkbox(
value=DEFAULT_USE_RAG,
label="Enable RAG (Retrieval-Augmented Generation)"
)
temperature = gr.Slider(
minimum=0,
maximum=1,
value=DEFAULT_TEMP,
step=0.1,
label="Temperature (Creativity)"
)
with gr.Row():
clear_btn = gr.Button("Clear All", variant="stop")
add_btn = gr.Button("Add Query", variant="secondary")
submit_btn = gr.Button("Submit All", variant="primary")
with gr.Row():
with gr.Column():
queries_box = gr.Textbox(
placeholder="Your queries will appear here...",
label="Submitted Queries",
interactive=False,
lines=5
)
with gr.Column():
answers_box = gr.Textbox(
placeholder="Model responses will appear here...",
label="Model Responses",
interactive=False,
lines=5
)
clear_btn.click(
fn=clear_queries,
inputs=[],
outputs=[query_txt, model, temperature, use_rag, queries_box, answers_box]
)
add_btn.click(
fn=add_to_list,
inputs=[query_txt, model, temperature, use_rag],
outputs=[query_txt, queries_box]
)
submit_btn.click(
fn=submit,
inputs=[query_txt, model, temperature, use_rag],
outputs=[query_txt, queries_box, answers_box]
)
demo.launch()