Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import requests | |
| import os | |
| from dotenv import load_dotenv | |
| # Load .env (for local testing) | |
| load_dotenv() | |
| # Get API Key | |
| GROQ_API_KEY = os.getenv("GROQ_API_KEY") | |
| if not GROQ_API_KEY: | |
| raise ValueError("Missing GROQ_API_KEY") | |
| # Groq API Config | |
| GROQ_API_URL = "https://api.groq.com/openai/v1/chat/completions" | |
| MODEL = "llama3-8b-8192" | |
| headers = { | |
| "Authorization": f"Bearer {GROQ_API_KEY.strip()}", | |
| "Content-Type": "application/json" | |
| } | |
| # Core Chat Function with updated system prompt | |
| def echo(message, history): | |
| messages = [ | |
| { | |
| "role": "system", | |
| "content": ( | |
| "You are an AI tutor specializing in large language models (LLMs). " | |
| "Always give short, clear, beginner-friendly answers. " | |
| "When a user refers to 'RAG', always interpret it as 'Retrieval-Augmented Generation' in the context of LLMs, " | |
| "not as the traffic-light system (Red, Amber, Green). " | |
| "Avoid jargon, and break complex ideas into bite-sized explanations. " | |
| "If the user asks a follow-up question, respond with full awareness of the prior conversation." | |
| ) | |
| } | |
| ] | |
| # Add chat history | |
| for user_msg, bot_msg in history: | |
| messages.append({"role": "user", "content": user_msg}) | |
| messages.append({"role": "assistant", "content": bot_msg}) | |
| # Append current message | |
| messages.append({"role": "user", "content": message}) | |
| try: | |
| response = requests.post( | |
| GROQ_API_URL, | |
| headers=headers, | |
| json={ | |
| "model": MODEL, | |
| "messages": messages | |
| } | |
| ) | |
| if response.status_code == 200: | |
| reply = response.json()["choices"][0]["message"]["content"] | |
| return reply | |
| else: | |
| return f"Error {response.status_code}: {response.text}" | |
| except Exception as e: | |
| return f"Error: {str(e)}" | |
| # Gradio Chat UI | |
| demo = gr.ChatInterface( | |
| fn=echo, | |
| title="LLM Mentor", | |
| examples=["What is an LLM?", "What is RAG in LLMs?", "Explain NLP simply"], | |
| theme="default" | |
| ) | |
| # For Hugging Face compatibility | |
| demo.launch(ssr_mode=False) | |