File size: 1,915 Bytes
af60cba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# modules/travel_assistant.py
from .config_loader import ConfigLoader
from .ai_model import AIModel
from .knowledge_base import KnowledgeBase
from .info_extractor import InfoExtractor
from .session_manager import SessionManager
from .response_generator import ResponseGenerator
from utils.logger import log

class TravelAssistant:
    def __init__(self):
        # 依赖注入:在这里实例化所有需要的模块
        log.info("开始初始化 Travel Assistant 核心模块...")
        self.config = ConfigLoader()
        self.kb = KnowledgeBase()
        self.ai_model = AIModel()
        self.session_manager = SessionManager()
        self.info_extractor = InfoExtractor(self.config)
        self.response_generator = ResponseGenerator(self.ai_model, self.kb)
        log.info("✅ Travel Assistant 核心模块全部初始化完成!")

    def chat(self, message: str, session_id: str, history: list):
        # 1. 获取或创建会话
        session_state = self.session_manager.get_or_create_session(session_id)
        current_session_id = session_state['session_id']

        # 2. 从用户输入中提取信息
        extracted_info = self.info_extractor.extract(message)
        
        # 3. 更新会话状态
        if extracted_info:
            self.session_manager.update_session(current_session_id, extracted_info)
            # 重新获取更新后的状态
            session_state = self.session_manager.get_or_create_session(current_session_id)

        # 4. 生成回复
        bot_response = self.response_generator.generate(message, session_state)
        
        # 5. 格式化状态信息用于前端显示
        status_info = self.session_manager.format_session_info(session_state)
        
        # 6. 更新对话历史
        new_history = history + [[message, bot_response]]
        
        return bot_response, current_session_id, status_info, new_history