File size: 3,008 Bytes
dbf2148
 
ca50eaa
c1f5409
 
 
 
 
 
 
 
a99e208
08754c1
 
c1f5409
 
ca50eaa
c1f5409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a99e208
08754c1
 
 
 
 
 
ca50eaa
ba81cc3
ca50eaa
ba81cc3
 
ca50eaa
ba81cc3
c1f5409
 
ca50eaa
 
 
 
c1f5409
 
 
 
 
 
 
 
 
ba81cc3
a99e208
08754c1
 
b18fec3
 
c1f5409
b18fec3
dbf2148
c1f5409
ca50eaa
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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
    )