Spaces:
Sleeping
Sleeping
import os | |
import requests | |
import gradio as gr | |
# Get Groq API key from Hugging Face secrets | |
groq_api_key = os.environ.get("GROQ_API_KEY") | |
if not groq_api_key: | |
raise ValueError("Please set the GROQ_API_KEY in the Hugging Face Space secrets.") | |
# Groq API configuration | |
url = "https://api.groq.com/openai/v1/chat/completions" | |
headers = { | |
"Authorization": f"Bearer {groq_api_key}" | |
} | |
# Prompt template | |
template = """ | |
You are a friendly and professional customer service assistant for a telecom company. | |
Respond to the customer's issue below with empathy and clear steps, especially for roaming support. | |
Customer Query: {query} | |
Your Response: | |
""" | |
# Core function to query the API | |
def generate_response(user_query): | |
structured_prompt = template.format(query=user_query) | |
body = { | |
"model": "llama-3.1-8b-instant", | |
"messages": [{"role": "user", "content": structured_prompt}] | |
} | |
response = requests.post(url, headers=headers, json=body) | |
if response.status_code == 200: | |
return response.json()['choices'][0]['message']['content'], "β Success" | |
else: | |
return f"Error {response.status_code}: {response.text}", "β Failed" | |
# Gradio app using Blocks layout | |
with gr.Blocks() as demo: | |
gr.Markdown("## π‘ Telecom Support Assistant powered by Groq API") | |
gr.Markdown( | |
"Enter your customer service query below. The AI assistant will respond with a helpful and empathetic reply, especially for **roaming issues**." | |
) | |
with gr.Row(): | |
with gr.Column(scale=2): | |
user_input = gr.Textbox( | |
lines=5, | |
label="Customer Query", | |
placeholder="e.g., My SIM card stopped working while traveling abroad." | |
) | |
submit_btn = gr.Button("Generate Response") | |
with gr.Column(scale=3): | |
status_output = gr.Textbox(label="Status", interactive=False) | |
response_output = gr.Textbox(label="AI Response", lines=10) | |
submit_btn.click( | |
fn=generate_response, | |
inputs=user_input, | |
outputs=[response_output, status_output] | |
) | |
demo.launch() | |