Solution_2 / app.py
voldemortuk's picture
Upload 113 files
5cc1949 verified
"""Script to run the Gradio chatbot application"""
import sys
import os
from dotenv import load_dotenv
# Load environment variables from .env file if available
load_dotenv()
# Ensure the correct path is added to the system to avoid import issues
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
import gradio as gr
from genai_voice.bots.chatbot import ChatBot
from genai_voice.logger.log_utils import log, LogLevels
# Ensure API key is set
api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
raise ValueError("Missing OpenAI API key. Please set the environment variable OPENAI_API_KEY.")
# Function to run the chatbot in microphone mode
def run():
"""Run Chatbot app"""
chatbot = ChatBot(enable_speakers=True, threaded=True)
history = []
def get_response(audio):
"""Get audio response from Chatbot"""
if not audio:
raise ValueError("No audio file provided.")
prompt = chatbot.get_prompt_from_gradio_audio(audio)
log(f"Transcribed prompt: {prompt}", log_level=LogLevels.ON)
response = chatbot.respond(prompt, history)
history.append([prompt, response])
return response
demo = gr.Interface(
fn=get_response,
inputs=gr.Audio(sources="microphone"),
outputs="text",
title="Wanderwise Travel Assistant",
)
demo.launch(share=True)
# Function to run chatbot with file support
def run_with_file_support():
"""Run Chatbot app and save files to disk"""
chatbot = ChatBot(enable_speakers=True, threaded=True)
history = []
def get_response_from_file(file):
"""Process file input and generate response"""
prompt = chatbot.get_prompt_from_file(file)
response = chatbot.respond(prompt, history)
history.append([prompt, response])
return response
demo = gr.Interface(
fn=get_response_from_file,
inputs=gr.Audio(sources="microphone", type="filepath"),
outputs="text",
)
demo.launch(share=True)
# Entry point to run the chatbot
if __name__ == "__main__":
mode = os.getenv("RUN_MODE", "mic") # Set RUN_MODE=microphone or file in environment
if mode == "file":
run_with_file_support()
else:
run()