Spaces:
Sleeping
Sleeping
| # modules/knowledge_base.py | |
| import json | |
| from pathlib import Path | |
| from utils.logger import log | |
| class KnowledgeBase: | |
| def __init__(self, file_path: Path = Path("./config/general_travelplan.json")): | |
| self.knowledge = [] | |
| try: | |
| with open(file_path, 'r', encoding='utf-8') as f: | |
| self.knowledge = json.load(f).get('clean_knowledge', []) | |
| log.info(f"✅ 知识库加载完成") | |
| except Exception as e: | |
| log.error(f"❌ 知识库加载失败: {e}", exc_info=True) | |
| raise | |
| def search(self, query: str) -> list: | |
| relevant_knowledge = [] | |
| query_lower = query.lower() | |
| for item in self.knowledge: | |
| # 简单实现:如果查询的城市在知识库的目的地中,则返回该知识 | |
| destinations = item.get('knowledge', {}).get('travel_knowledge', {}).get('destination_info', {}).get('primary_destinations', []) | |
| for dest in destinations: | |
| if dest.lower() in query_lower: | |
| if item not in relevant_knowledge: | |
| relevant_knowledge.append(item) | |
| break | |
| return relevant_knowledge | |