File size: 1,040 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
# modules/info_extractor.py
import re
from .config_loader import ConfigLoader

class InfoExtractor:
    def __init__(self, config_loader: ConfigLoader):
        self.configs = config_loader

    def extract(self, user_input: str) -> dict:
        """从用户输入中提取目的地、天数和旅行风格"""
        extracted_info = {}
        user_lower = user_input.lower()

        # 提取目的地
        for alias, city_info in self.configs.cities.items():
            if alias in user_lower:
                extracted_info["destination"] = city_info
                break

        # 提取天数
        match = re.search(r'(\d+)\s*天', user_input)
        if match:
            extracted_info["duration"] = {"days": int(match.group(1))}
        
        # 提取旅行风格 (persona)
        for p_name, p_info in self.configs.personas.items():
            if p_info['name'] in user_input or p_name in user_input:
                extracted_info["persona"] = p_info
                break
        
        return extracted_info