import gradio as gr import groq import os from config.settings import settings from core.rag_system import EnhancedRAGSystem from core.tts_service import EnhancedTTSService from core.wikipedia_processor import WikipediaProcessor from services.audio_service import AudioService from services.chat_service import ChatService from services.image_service import ImageService from services.streaming_voice_service import StreamingVoiceService from services.voice_coding_service import VoiceCodingService from services.openai_realtime_service import HybridStreamingService from services.sambanova_voice_service import SambanovaVoiceService from ui.components import create_custom_css, create_header from ui.tabs import create_all_tabs def main(): # Initialize clients and services if not settings.GROQ_API_KEY: raise ValueError("Please set the GROQ_API_KEY environment variable.") client = groq.Client(api_key=settings.GROQ_API_KEY) # Initialize core systems rag_system = EnhancedRAGSystem() tts_service = EnhancedTTSService() wikipedia_processor = WikipediaProcessor() # Initialize services audio_service = AudioService(client, rag_system, tts_service) chat_service = ChatService(client, rag_system, tts_service) image_service = ImageService(client) streaming_voice_service = StreamingVoiceService(client, rag_system, tts_service) voice_coding_service = VoiceCodingService(client) sambanova_voice_service = None if os.environ.get("SAMBANOVA_API_KEY"): sambanova_voice_service = SambanovaVoiceService() print("✅ Sambanova Voice Service initialized") else: print("⚠️ Sambanova API key not found, skipping Sambanova service") # FIXED: Sử dụng client thay vì groq_client hybrid_service = HybridStreamingService( groq_client=client, # Sửa thành client rag_system=rag_system, tts_service=tts_service, openai_key=os.getenv("OPENAI_API_KEY") # Có thể là None ) # Create Gradio interface with gr.Blocks( css=create_custom_css(), theme=gr.themes.Soft(primary_hue="orange", neutral_hue="slate") ) as demo: create_header() gr.Markdown("### 🌐 Hệ thống Đa ngôn ngữ - Tự động chuyển đổi model theo ngôn ngữ") create_all_tabs( audio_service=audio_service, chat_service=chat_service, image_service=image_service, rag_system=rag_system, tts_service=tts_service, wikipedia_processor=wikipedia_processor, streaming_voice_service=streaming_voice_service, hybrid_service=hybrid_service, voice_coding_service = voice_coding_service, sambanova_voice_service = sambanova_voice_service ) return demo if __name__ == "__main__": demo = main() demo.launch( share=True, server_name="0.0.0.0", server_port=7860 )