Muhammad Ahmad Zia
Upload 2 files
d2343d2 verified
import gradio as gr
import os
import requests
# Load GROQ API key from environment
GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
GROQ_API_URL = "https://api.groq.com/openai/v1/chat/completions"
MODEL_NAME = "llama3-8b-8192"
def query_groq(message, chat_history, complexity):
headers = {
"Authorization": f"Bearer {GROQ_API_KEY}",
"Content-Type": "application/json"
}
# Customizing the prompt based on the UI improvement (Complexity Level)
system_message = f"""You are 'Sprint', an expert Unity Game Developer and C# Mentor.
Your goal is to help students build games.
Current Explanation Level: {complexity}.
If Beginner: Use simple analogies and explain basic terms.
If Intermediate: Focus on clean code and Unity best practices.
If Expert: Discuss optimization, design patterns, and low-level memory management.
Always be encouraging and provide code snippets in C# where applicable."""
messages = [{"role": "system", "content": system_message}]
for user, bot in chat_history:
messages.append({"role": "user", "content": user})
messages.append({"role": "assistant", "content": bot})
messages.append({"role": "user", "content": message})
payload = {
"model": MODEL_NAME,
"messages": messages,
"temperature": 0.7
}
try:
response = requests.post(GROQ_API_URL, headers=headers, json=payload)
response.raise_for_status()
reply = response.json()["choices"][0]["message"]["content"]
return reply
except Exception as e:
return f"Error: {str(e)}"
def respond(message, chat_history, complexity):
bot_reply = query_groq(message, chat_history, complexity)
chat_history.append((message, bot_reply))
return "", chat_history
# Gradio UI Layout
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("# 🎮 Sprint: Your Unity & C# Mentor")
gr.Markdown("I'm here to help you debug scripts, setup Colliders, or optimize your game performance.")
with gr.Row():
# UI IMPROVEMENT: Complexity Level Selector
complexity_level = gr.Dropdown(
label="Explanation Complexity",
choices=["Beginner", "Intermediate", "Expert"],
value="Intermediate"
)
chatbot = gr.Chatbot()
msg = gr.Textbox(label="Ask a Unity/C# question (e.g., 'How do I use Raycasts?')")
with gr.Row():
submit = gr.Button("Submit", variant="primary")
clear = gr.Button("Clear Chat")
state = gr.State([])
# Event Handlers
msg.submit(respond, [msg, state, complexity_level], [msg, chatbot])
submit.click(respond, [msg, state, complexity_level], [msg, chatbot])
clear.click(lambda: ([], []), None, [chatbot, state])
demo.launch()