ChatBotAnees / app.py
aneesqumar's picture
Update app.py
d961861 verified
Raw
History Blame Contribute Delete
2.6 kB
import os
import gradio as gr
from groq import Groq
# -----------------------------
# Groq Client (HF Secrets)
# -----------------------------
api_key = os.environ.get("GROQ_API_KEY")
if not api_key:
raise RuntimeError(
"GROQ_API_KEY is not set. Add it in Hugging Face Spaces → Settings → Secrets."
)
client = Groq(api_key=api_key)
# -----------------------------
# Chat Function
# -----------------------------
def chat(user_input, history):
if not user_input or not user_input.strip():
return history, ""
# Keep only valid messages for Groq
messages = [{"role": m["role"], "content": m["content"]}
for m in history if "role" in m and "content" in m]
# Add latest user message
messages.append({"role": "user", "content": user_input})
try:
completion = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=messages
)
assistant_reply = completion.choices[0].message.content
except Exception as e:
assistant_reply = f"⚠️ Error: {str(e)}"
# Add assistant reply to messages
messages.append({"role": "assistant", "content": assistant_reply})
return messages, ""
# -----------------------------
# Theme & CSS
# -----------------------------
theme = gr.themes.Soft(
primary_hue="blue",
secondary_hue="gray",
neutral_hue="gray",
font=["Inter", "sans-serif"]
)
custom_css = """
#container {
max-width: 900px;
margin: auto;
}
footer {display: none;}
"""
# -----------------------------
# UI
# -----------------------------
with gr.Blocks() as demo:
with gr.Column(elem_id="container"):
gr.Markdown(
"""
# 🤖 Groq AI Chatbot
**Fast • Responsive • HCI-Friendly Interface**
"""
)
# ✅ Just remove type="messages"
chatbot = gr.Chatbot(
height=420,
show_label=False
)
with gr.Row():
user_input = gr.Textbox(
placeholder="Type your message here…",
show_label=False
)
send_btn = gr.Button("Send", variant="primary")
with gr.Row():
clear_btn = gr.Button("Clear Chat", variant="secondary")
send_btn.click(chat, [user_input, chatbot], [chatbot, user_input])
user_input.submit(chat, [user_input, chatbot], [chatbot, user_input])
clear_btn.click(lambda: [], None, chatbot)
# -----------------------------
# Launch
# -----------------------------
demo.launch(theme=theme, css=custom_css)