#!/usr/bin/env python3
"""语义搜索示例(需要 API key)."""
from src.config_manager import ConfigManager
from src.graphiti_client import GraphitiClient
def main():
"""语义搜索示例."""
print("🚀 语义搜索示例\n")
print("⚠️ 注意:此功能需要配置 API key\n")
config_manager = ConfigManager()
# 检查是否配置了 API key
api_config = config_manager.get_api_config()
if not api_config or not api_config.api_key:
print("❌ 未配置 API key")
print("💡 提示:使用 configure_api 工具配置 API key 后即可使用语义搜索")
return
client = GraphitiClient(config_manager)
if not client.connect():
print("❌ 连接失败")
return
# 先添加一些数据
print("📝 添加示例数据...")
client.add_episode("我喜欢使用 TypeScript 和 React")
client.add_episode("我使用 Next.js 构建全栈应用")
client.add_episode("PostgreSQL 是我的首选数据库")
# 语义搜索
print("\n🔍 执行语义搜索...")
result = client.semantic_search(
query="前端开发技术栈",
num_results=5
)
if result['success']:
print(f"✅ {result['message']}")
if result['results']:
print("\n搜索结果:")
for i, rel in enumerate(result['results'], 1):
print(f"{i}. {rel.get('from_node', {}).get('name', 'Unknown')} "
f"-[{rel.get('relationship', 'RELATED_TO')}]-> "
f"{rel.get('to_node', {}).get('name', 'Unknown')}")
else:
print(f"❌ {result['message']}")
client.disconnect()
print("\n🎉 语义搜索示例完成!")
if __name__ == "__main__":
main()