Spaces:
Running
Running
import gradio as gr | |
import os | |
import requests | |
import json | |
# Configuration | |
ULTRAVOX_API_KEY = os.getenv("ULTRAVOX_API_KEY") | |
ULTRAVOX_API_URL = "https://api.ultravox.ai/api/chat" # Modified to use chat endpoint | |
SYSTEM_PROMPT = """Your name is Steve and you're answering queries on behalf of Knolabs AI Agency, a UK-based company specializing in AI Automation and Web Development services. | |
Greet the user warmly and introduce yourself as a representative of Knolabs AI Agency. Ask how you can assist them today. | |
If they inquire about services, explain that Knolabs specializes in: | |
- AI Automation solutions (including Voice AI) | |
- Web Development services | |
- Multimodal AI use cases | |
- Customized business automation solutions | |
If asked about pricing, explain that Knolabs AI Agency operates both as a Pure AI Automation Agency and a Web Development Agency. After understanding their requirements, you'll pass the details to the relevant team, and a team member will reach out within 24 hours with a detailed timeline and quotation tailored to their specific needs. | |
Focus on: | |
- Understanding their business needs | |
- Gathering specific requirements | |
- Being professional and helpful | |
- Explaining Knolabs' expertise in delivering effective business solutions | |
Remember to collect their contact details for follow-up if they show interest.""" | |
def create_ultravox_chat(message, history): | |
# Prepare the chat request | |
headers = { | |
"Content-Type": "application/json", | |
"X-API-Key": ULTRAVOX_API_KEY | |
} | |
# Include conversation history | |
messages = [] | |
for human, assistant in history: | |
messages.append({"role": "user", "content": human}) | |
messages.append({"role": "assistant", "content": assistant}) | |
messages.append({"role": "user", "content": message}) | |
data = { | |
"messages": messages, | |
"systemPrompt": SYSTEM_PROMPT, | |
"model": "fixie-ai/ultravox", | |
"temperature": 0.3 | |
} | |
try: | |
response = requests.post(ULTRAVOX_API_URL, headers=headers, json=data) | |
response.raise_for_status() | |
return response.json()["response"] | |
except Exception as e: | |
return f"I apologize, but I encountered an error: {str(e)}. Please try again later." | |
# Create the Gradio interface | |
with gr.Blocks(css="footer {display: none !important}") as demo: | |
gr.Markdown(""" | |
# Knolabs AI Agency Assistant | |
Welcome to Knolabs AI Agency! I'm Steve, your virtual assistant. How can I help you today? | |
""") | |
chatbot = gr.Chatbot( | |
[], | |
elem_id="chatbot", | |
bubble_full_width=False, | |
avatar_images=(None, "https://api.dicebear.com/7.x/bottts/svg?seed=steve") | |
) | |
msg = gr.Textbox( | |
placeholder="Type your message here...", | |
show_label=False | |
) | |
clear = gr.Button("Clear Conversation") | |
def respond(message, chat_history): | |
bot_message = create_ultravox_chat(message, chat_history) | |
chat_history.append((message, bot_message)) | |
return "", chat_history | |
msg.submit(respond, [msg, chatbot], [msg, chatbot]) | |
clear.click(lambda: None, None, chatbot, queue=False) | |
# Launch the app | |
demo.launch() |