import gradio as gr import requests import os # Import os to access environment variables # Retrieve the API key securely from Hugging Face Secrets GROQ_API_KEY = os.getenv("myapi") # Ensure API key is set if not GROQ_API_KEY: raise ValueError("Error: GROQ_API_KEY is missing! Check your Hugging Face secret settings.") # Groq API URL GROQ_API_URL = "https://api.groq.com/openai/v1/chat/completions" # Function to interact with Groq API def chat_with_groq(prompt, history): headers = {"Authorization": f"Bearer {GROQ_API_KEY}", "Content-Type": "application/json"} # System role for chatbot identity messages = [{"role": "system", "content": "You are Faraz-Chatbot, an AI assistant created by Muhammad Faraz."}] # Ensure history is in the correct format for entry in history: if isinstance(entry, list) and len(entry) == 2: user_msg, bot_msg = entry messages.append({"role": "user", "content": user_msg}) messages.append({"role": "assistant", "content": bot_msg}) # Add the latest user query messages.append({"role": "user", "content": prompt}) # Custom response when asked about the owner if "who is your owner" in prompt.lower() or "who created you" in prompt.lower(): return "I was created by Muhammad Faraz, a passionate developer!" payload = {"model": "llama3-8b-8192", "messages": messages} try: response = requests.post(GROQ_API_URL, headers=headers, json=payload) response_data = response.json() if response.status_code == 200: return response_data["choices"][0]["message"]["content"] else: return f"API Error: {response_data.get('error', {}).get('message', 'Unknown error')}" except Exception as e: return f"Exception Error: {str(e)}" # Function to handle chatbot responses def chatbot(query, history): if not query.strip(): return history, "" response = chat_with_groq(query, history) history = history + [[query, response]] return history, "" # Gradio Interface with gr.Blocks() as demo: gr.HTML("
🤖 How can I help you?
") chatbot_interface = gr.Chatbot() user_input = gr.Textbox(placeholder="Ask me anything...", show_label=False) history = gr.State([]) user_input.submit(fn=chatbot, inputs=[user_input, history], outputs=[chatbot_interface, user_input]) # Launch the chatbot demo.launch()