|
import gradio as gr |
|
import openai |
|
import os |
|
|
|
|
|
openai.api_key = os.getenv("GROQ_API_KEY") |
|
openai.api_base = "https://api.groq.com/openai/v1" |
|
|
|
|
|
if not openai.api_key: |
|
raise ValueError("API key is missing. Please set the GROQ_API_KEY environment variable.") |
|
|
|
def get_groq_response(message): |
|
try: |
|
|
|
print(f"Sending message: {message}") |
|
|
|
|
|
response = openai.ChatCompletion.create( |
|
model="llama-3.3-70b-versatile", |
|
messages=[ |
|
{"role": "system", "content": "Precise answer"}, |
|
{"role": "user", "content": message} |
|
] |
|
) |
|
|
|
|
|
if not response.get('choices'): |
|
raise ValueError("API response does not contain choices.") |
|
|
|
|
|
bot_message = response['choices'][0]['message']['content'] |
|
|
|
|
|
print(f"Received response: {bot_message}") |
|
|
|
return bot_message |
|
|
|
except openai.error.AuthenticationError: |
|
return "Authentication error: Invalid API key." |
|
except openai.error.RateLimitError: |
|
return "Rate limit exceeded: Too many requests. Please try again later." |
|
except openai.error.APIError as e: |
|
return f"API error: {e.user_message} Please try again later." |
|
except openai.error.Timeout: |
|
return "Request timed out. Please try again later." |
|
except Exception as e: |
|
|
|
return f"An unexpected error occurred: {str(e)}" |
|
|
|
def chatbot(user_input, history=None): |
|
|
|
if history is None: |
|
history = [] |
|
|
|
|
|
if not user_input.strip(): |
|
return history, history |
|
|
|
|
|
bot_response = get_groq_response(user_input) |
|
|
|
|
|
history.append((user_input, bot_response)) |
|
|
|
return history, history |
|
|
|
|
|
chat_interface = gr.Interface( |
|
fn=chatbot, |
|
inputs=["text", "state"], |
|
outputs=["chatbot", "state"], |
|
live=False, |
|
title="My Chatbot", |
|
description="Mom: We have ChatGPT at Home, \nChatGPT at Home: " |
|
) |
|
|
|
|
|
chat_interface.launch() |