advanced_usage.py 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. """
  2. 高级使用示例 - 展示更多功能
  3. """
  4. import os
  5. import sys
  6. from pathlib import Path
  7. # 添加项目根目录到Python路径
  8. project_root = Path(__file__).parent.parent
  9. sys.path.insert(0, str(project_root))
  10. from src.core.llm_manager import llm_manager
  11. from src.core.vector_store import vector_store_manager
  12. from src.core.document_processor import document_processor
  13. from src.services.chat_service import chat_service
  14. from src.services.qa_service import qa_service
  15. from src.services.document_service import document_service
  16. from src.utils.logger import setup_logger
  17. from src.utils.cache import cache_manager
  18. from loguru import logger
  19. def demo_multi_provider_llm():
  20. """演示多提供商LLM使用"""
  21. print("=== 多提供商LLM演示 ===")
  22. providers = ["openrouter", "openai", "anthropic"]
  23. for provider in providers:
  24. try:
  25. print(f"\n使用 {provider} 提供商:")
  26. # 获取可用模型
  27. models = llm_manager.get_available_models(provider)
  28. print(f" 可用模型: {models[:3]}...") # 只显示前3个
  29. # 测试连接
  30. if llm_manager.test_connection(provider):
  31. print(f" {provider} 连接正常")
  32. # 创建LLM实例
  33. llm = llm_manager.get_or_create_llm(provider)
  34. # 简单测试
  35. response = llm.invoke("请用一句话介绍自己")
  36. print(f" 回复: {response.content[:100]}...")
  37. else:
  38. print(f" {provider} 连接失败")
  39. except Exception as e:
  40. print(f" {provider} 测试失败: {e}")
  41. def demo_advanced_chat():
  42. """演示高级聊天功能"""
  43. print("\n=== 高级聊天功能演示 ===")
  44. # 创建多个会话
  45. sessions = [
  46. ("session_1", "你是一个技术专家,专门回答编程问题"),
  47. ("session_2", "你是一个创意写作助手,帮助用户创作故事"),
  48. ("session_3", "你是一个数据分析师,帮助用户分析数据")
  49. ]
  50. for session_id, system_prompt in sessions:
  51. try:
  52. # 创建会话
  53. session = chat_service.create_session(session_id, system_prompt)
  54. print(f"\n创建会话: {session_id}")
  55. # 发送消息
  56. if session_id == "session_1":
  57. message = "请解释什么是Python装饰器"
  58. elif session_id == "session_2":
  59. message = "请写一个关于太空探险的短故事开头"
  60. else:
  61. message = "如何分析销售数据的趋势?"
  62. response = chat_service.send_message(session_id, message)
  63. print(f" 问题: {message}")
  64. print(f" 回答: {response['assistant_message'][:150]}...")
  65. except Exception as e:
  66. print(f" 会话 {session_id} 失败: {e}")
  67. # 获取会话摘要
  68. for session_id, _ in sessions:
  69. try:
  70. summary = chat_service.get_conversation_summary(session_id)
  71. print(f"\n会话 {session_id} 摘要: {summary[:100]}...")
  72. except Exception as e:
  73. print(f"获取会话 {session_id} 摘要失败: {e}")
  74. def demo_document_processing():
  75. """演示文档处理功能"""
  76. print("\n=== 文档处理功能演示 ===")
  77. # 创建不同类型的测试文档
  78. test_docs = {
  79. "technical.txt": """
  80. 人工智能技术发展迅速,机器学习算法在各个领域都有广泛应用。
  81. 深度学习模型如GPT、BERT等在自然语言处理任务中表现出色。
  82. 计算机视觉技术也在图像识别、目标检测等方面取得了重大突破。
  83. """,
  84. "business.txt": """
  85. 企业数字化转型是当前的重要趋势,云计算、大数据分析等技术正在改变商业模式。
  86. 远程办公和在线协作工具的使用率大幅提升,推动了企业效率的提升。
  87. 数据安全和隐私保护成为企业关注的重点问题。
  88. """,
  89. "creative.txt": """
  90. 创意写作需要丰富的想象力和独特的视角,每个故事都有其独特的魅力。
  91. 文学创作不仅仅是文字的堆砌,更是情感和思想的表达。
  92. 好的作品能够引起读者的共鸣,传递深刻的人生哲理。
  93. """
  94. }
  95. # 创建文档
  96. for filename, content in test_docs.items():
  97. with open(filename, "w", encoding="utf-8") as f:
  98. f.write(content.strip())
  99. try:
  100. # 批量处理文档
  101. for filename in test_docs.keys():
  102. print(f"\n处理文档: {filename}")
  103. # 验证文档
  104. validation = document_service.validate_document(filename)
  105. print(f" 验证结果: {validation['valid']}")
  106. if validation["valid"]:
  107. # 处理文档
  108. result = document_service.process_and_store_document(
  109. filename,
  110. collection_name=f"demo_{filename.split('.')[0]}",
  111. additional_metadata={"category": "demo", "filename": filename}
  112. )
  113. print(f" 处理完成: {result['processed_documents']} 个片段")
  114. # 搜索文档
  115. search_queries = ["人工智能", "企业", "创意"]
  116. for query in search_queries:
  117. print(f"\n搜索关键词: {query}")
  118. results = document_service.search_documents_with_scores(query, k=3)
  119. for i, result in enumerate(results, 1):
  120. print(f" 结果 {i}: {result['content'][:100]}... (相似度: {result['similarity_score']:.3f})")
  121. # 获取集合信息
  122. collections = document_service.get_document_collections()
  123. print(f"\n文档集合: {collections}")
  124. except Exception as e:
  125. print(f"文档处理演示失败: {e}")
  126. # 清理测试文件
  127. for filename in test_docs.keys():
  128. if os.path.exists(filename):
  129. os.remove(filename)
  130. def demo_advanced_qa():
  131. """演示高级问答功能"""
  132. print("\n=== 高级问答功能演示 ===")
  133. # 创建知识库文档
  134. knowledge_doc = """
  135. LangChain是一个用于开发由语言模型驱动的应用程序的框架。
  136. 它提供了以下主要功能:
  137. 1. 模型管理:支持多种LLM提供商,如OpenAI、Anthropic等
  138. 2. 提示管理:提供灵活的提示模板和链式处理
  139. 3. 记忆管理:支持对话历史和上下文管理
  140. 4. 索引和检索:集成向量数据库,支持文档检索
  141. 5. 代理和工具:支持工具调用和自动化任务
  142. LangChain的主要优势:
  143. - 模块化设计,易于扩展
  144. - 丰富的集成选项
  145. - 活跃的社区支持
  146. - 详细的文档和示例
  147. """
  148. # 创建测试文档
  149. test_file = "langchain_knowledge.txt"
  150. with open(test_file, "w", encoding="utf-8") as f:
  151. f.write(knowledge_doc)
  152. try:
  153. # 处理文档并添加到问答系统
  154. documents = document_processor.process_document_pipeline(test_file)
  155. qa_service.add_documents_for_qa(documents, collection_name="langchain_qa")
  156. # 批量问答
  157. questions = [
  158. "LangChain是什么?",
  159. "LangChain有哪些主要功能?",
  160. "LangChain的优势是什么?",
  161. "如何使用LangChain进行文档检索?"
  162. ]
  163. print("批量问答测试:")
  164. results = qa_service.batch_qa(questions, collection_name="langchain_qa")
  165. for i, result in enumerate(results, 1):
  166. print(f"\n问题 {i}: {result['question']}")
  167. print(f"答案: {result['answer'][:200]}...")
  168. print(f"来源数量: {result['source_count']}")
  169. # 相似文档搜索
  170. print(f"\n相似文档搜索:")
  171. similar_docs = qa_service.search_similar_documents(
  172. "LangChain框架",
  173. k=3,
  174. collection_name="langchain_qa"
  175. )
  176. for i, doc in enumerate(similar_docs, 1):
  177. print(f" 文档 {i}: {doc.page_content[:150]}...")
  178. except Exception as e:
  179. print(f"高级问答演示失败: {e}")
  180. # 清理测试文件
  181. if os.path.exists(test_file):
  182. os.remove(test_file)
  183. def demo_cache_management():
  184. """演示缓存管理功能"""
  185. print("\n=== 缓存管理功能演示 ===")
  186. # 测试缓存功能
  187. test_data = {"key": "value", "number": 42, "list": [1, 2, 3]}
  188. # 设置缓存
  189. cache_manager.set("test_key", test_data, ttl=60)
  190. print("设置缓存: test_key")
  191. # 获取缓存
  192. cached_data = cache_manager.get("test_key")
  193. if cached_data:
  194. print(f"获取缓存成功: {cached_data}")
  195. else:
  196. print("缓存获取失败")
  197. # 删除缓存
  198. cache_manager.delete("test_key")
  199. print("删除缓存: test_key")
  200. # 验证删除
  201. cached_data = cache_manager.get("test_key")
  202. if cached_data is None:
  203. print("缓存删除成功")
  204. else:
  205. print("缓存删除失败")
  206. def main():
  207. """主函数"""
  208. print("AI Architecture 高级使用示例")
  209. print("=" * 60)
  210. # 设置日志
  211. setup_logger()
  212. # 检查环境变量
  213. if not os.getenv("OPENROUTER_API_KEY"):
  214. print("警告: 未设置OPENROUTER_API_KEY环境变量")
  215. print("请复制env.example为.env并设置您的OpenRouter API密钥")
  216. return
  217. # 运行演示
  218. demo_multi_provider_llm()
  219. demo_advanced_chat()
  220. demo_document_processing()
  221. demo_advanced_qa()
  222. demo_cache_management()
  223. print("\n高级示例运行完成!")
  224. if __name__ == "__main__":
  225. main()