import gradio as gr import groq 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 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) # 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 ) return demo if __name__ == "__main__": demo = main() demo.launch(share=True)