Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import os | |
| import requests | |
| # ========================= | |
| # CONFIG | |
| # ========================= | |
| 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" | |
| SYSTEM_PROMPT = """ | |
| You are StudyBuddy, a smart and friendly study companion for students. | |
| Your job is to help with study planning, exam preparation, time management, | |
| and staying motivated. | |
| Your style: | |
| - Clear and structured explanations | |
| - Simple language | |
| - Practical study tips | |
| - Motivational and supportive tone | |
| You help with: | |
| - Making study schedules | |
| - Exam preparation strategies | |
| - Time management (Pomodoro, focus tips) | |
| - Reducing exam stress | |
| - Improving learning habits | |
| """ | |
| # ========================= | |
| # GROQ QUERY FUNCTION | |
| # ========================= | |
| def query_groq(user_message, chat_history): | |
| headers = { | |
| "Authorization": f"Bearer {GROQ_API_KEY}", | |
| "Content-Type": "application/json" | |
| } | |
| messages = [{"role": "system", "content": SYSTEM_PROMPT}] | |
| for user, bot in chat_history: | |
| messages.append({"role": "user", "content": user}) | |
| messages.append({"role": "assistant", "content": bot}) | |
| messages.append({"role": "user", "content": user_message}) | |
| response = requests.post( | |
| GROQ_API_URL, | |
| headers=headers, | |
| json={ | |
| "model": MODEL_NAME, | |
| "messages": messages, | |
| "temperature": 0.7 | |
| } | |
| ) | |
| if response.status_code == 200: | |
| return response.json()["choices"][0]["message"]["content"] | |
| else: | |
| return f"Error {response.status_code}: {response.text}" | |
| # ========================= | |
| # RESPONSE FUNCTION | |
| # ========================= | |
| def respond(message, chat_history): | |
| reply = query_groq(message, chat_history) | |
| chat_history.append((message, reply)) | |
| return "", chat_history | |
| # ========================= | |
| # UI | |
| # ========================= | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """ | |
| # 📘 StudyBuddy – Smart Study Companion | |
| Your personal assistant for study planning, exams, and motivation. | |
| """ | |
| ) | |
| chatbot = gr.Chatbot() | |
| msg = gr.Textbox( | |
| label="Ask StudyBuddy", | |
| placeholder="e.g. Make a study plan for exams" | |
| ) | |
| clear = gr.Button("Clear Chat") | |
| msg.submit(respond, [msg, chatbot], [msg, chatbot]) | |
| clear.click(lambda: [], None, chatbot) | |
| demo.launch() | |