123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- """
- 高级使用示例 - 展示更多功能
- """
- import os
- import sys
- from pathlib import Path
- # 添加项目根目录到Python路径
- project_root = Path(__file__).parent.parent
- sys.path.insert(0, str(project_root))
- from src.core.llm_manager import llm_manager
- from src.core.vector_store import vector_store_manager
- from src.core.document_processor import document_processor
- from src.services.chat_service import chat_service
- from src.services.qa_service import qa_service
- from src.services.document_service import document_service
- from src.utils.logger import setup_logger
- from src.utils.cache import cache_manager
- from loguru import logger
- def demo_multi_provider_llm():
- """演示多提供商LLM使用"""
- print("=== 多提供商LLM演示 ===")
-
- providers = ["openrouter", "openai", "anthropic"]
-
- for provider in providers:
- try:
- print(f"\n使用 {provider} 提供商:")
-
- # 获取可用模型
- models = llm_manager.get_available_models(provider)
- print(f" 可用模型: {models[:3]}...") # 只显示前3个
-
- # 测试连接
- if llm_manager.test_connection(provider):
- print(f" {provider} 连接正常")
-
- # 创建LLM实例
- llm = llm_manager.get_or_create_llm(provider)
-
- # 简单测试
- response = llm.invoke("请用一句话介绍自己")
- print(f" 回复: {response.content[:100]}...")
- else:
- print(f" {provider} 连接失败")
-
- except Exception as e:
- print(f" {provider} 测试失败: {e}")
- def demo_advanced_chat():
- """演示高级聊天功能"""
- print("\n=== 高级聊天功能演示 ===")
-
- # 创建多个会话
- sessions = [
- ("session_1", "你是一个技术专家,专门回答编程问题"),
- ("session_2", "你是一个创意写作助手,帮助用户创作故事"),
- ("session_3", "你是一个数据分析师,帮助用户分析数据")
- ]
-
- for session_id, system_prompt in sessions:
- try:
- # 创建会话
- session = chat_service.create_session(session_id, system_prompt)
- print(f"\n创建会话: {session_id}")
-
- # 发送消息
- if session_id == "session_1":
- message = "请解释什么是Python装饰器"
- elif session_id == "session_2":
- message = "请写一个关于太空探险的短故事开头"
- else:
- message = "如何分析销售数据的趋势?"
-
- response = chat_service.send_message(session_id, message)
- print(f" 问题: {message}")
- print(f" 回答: {response['assistant_message'][:150]}...")
-
- except Exception as e:
- print(f" 会话 {session_id} 失败: {e}")
-
- # 获取会话摘要
- for session_id, _ in sessions:
- try:
- summary = chat_service.get_conversation_summary(session_id)
- print(f"\n会话 {session_id} 摘要: {summary[:100]}...")
- except Exception as e:
- print(f"获取会话 {session_id} 摘要失败: {e}")
- def demo_document_processing():
- """演示文档处理功能"""
- print("\n=== 文档处理功能演示 ===")
-
- # 创建不同类型的测试文档
- test_docs = {
- "technical.txt": """
- 人工智能技术发展迅速,机器学习算法在各个领域都有广泛应用。
- 深度学习模型如GPT、BERT等在自然语言处理任务中表现出色。
- 计算机视觉技术也在图像识别、目标检测等方面取得了重大突破。
- """,
- "business.txt": """
- 企业数字化转型是当前的重要趋势,云计算、大数据分析等技术正在改变商业模式。
- 远程办公和在线协作工具的使用率大幅提升,推动了企业效率的提升。
- 数据安全和隐私保护成为企业关注的重点问题。
- """,
- "creative.txt": """
- 创意写作需要丰富的想象力和独特的视角,每个故事都有其独特的魅力。
- 文学创作不仅仅是文字的堆砌,更是情感和思想的表达。
- 好的作品能够引起读者的共鸣,传递深刻的人生哲理。
- """
- }
-
- # 创建文档
- for filename, content in test_docs.items():
- with open(filename, "w", encoding="utf-8") as f:
- f.write(content.strip())
-
- try:
- # 批量处理文档
- for filename in test_docs.keys():
- print(f"\n处理文档: {filename}")
-
- # 验证文档
- validation = document_service.validate_document(filename)
- print(f" 验证结果: {validation['valid']}")
-
- if validation["valid"]:
- # 处理文档
- result = document_service.process_and_store_document(
- filename,
- collection_name=f"demo_{filename.split('.')[0]}",
- additional_metadata={"category": "demo", "filename": filename}
- )
- print(f" 处理完成: {result['processed_documents']} 个片段")
-
- # 搜索文档
- search_queries = ["人工智能", "企业", "创意"]
- for query in search_queries:
- print(f"\n搜索关键词: {query}")
- results = document_service.search_documents_with_scores(query, k=3)
- for i, result in enumerate(results, 1):
- print(f" 结果 {i}: {result['content'][:100]}... (相似度: {result['similarity_score']:.3f})")
-
- # 获取集合信息
- collections = document_service.get_document_collections()
- print(f"\n文档集合: {collections}")
-
- except Exception as e:
- print(f"文档处理演示失败: {e}")
-
- # 清理测试文件
- for filename in test_docs.keys():
- if os.path.exists(filename):
- os.remove(filename)
- def demo_advanced_qa():
- """演示高级问答功能"""
- print("\n=== 高级问答功能演示 ===")
-
- # 创建知识库文档
- knowledge_doc = """
- LangChain是一个用于开发由语言模型驱动的应用程序的框架。
- 它提供了以下主要功能:
- 1. 模型管理:支持多种LLM提供商,如OpenAI、Anthropic等
- 2. 提示管理:提供灵活的提示模板和链式处理
- 3. 记忆管理:支持对话历史和上下文管理
- 4. 索引和检索:集成向量数据库,支持文档检索
- 5. 代理和工具:支持工具调用和自动化任务
- LangChain的主要优势:
- - 模块化设计,易于扩展
- - 丰富的集成选项
- - 活跃的社区支持
- - 详细的文档和示例
- """
-
- # 创建测试文档
- test_file = "langchain_knowledge.txt"
- with open(test_file, "w", encoding="utf-8") as f:
- f.write(knowledge_doc)
-
- try:
- # 处理文档并添加到问答系统
- documents = document_processor.process_document_pipeline(test_file)
- qa_service.add_documents_for_qa(documents, collection_name="langchain_qa")
-
- # 批量问答
- questions = [
- "LangChain是什么?",
- "LangChain有哪些主要功能?",
- "LangChain的优势是什么?",
- "如何使用LangChain进行文档检索?"
- ]
-
- print("批量问答测试:")
- results = qa_service.batch_qa(questions, collection_name="langchain_qa")
-
- for i, result in enumerate(results, 1):
- print(f"\n问题 {i}: {result['question']}")
- print(f"答案: {result['answer'][:200]}...")
- print(f"来源数量: {result['source_count']}")
-
- # 相似文档搜索
- print(f"\n相似文档搜索:")
- similar_docs = qa_service.search_similar_documents(
- "LangChain框架",
- k=3,
- collection_name="langchain_qa"
- )
-
- for i, doc in enumerate(similar_docs, 1):
- print(f" 文档 {i}: {doc.page_content[:150]}...")
-
- except Exception as e:
- print(f"高级问答演示失败: {e}")
-
- # 清理测试文件
- if os.path.exists(test_file):
- os.remove(test_file)
- def demo_cache_management():
- """演示缓存管理功能"""
- print("\n=== 缓存管理功能演示 ===")
-
- # 测试缓存功能
- test_data = {"key": "value", "number": 42, "list": [1, 2, 3]}
-
- # 设置缓存
- cache_manager.set("test_key", test_data, ttl=60)
- print("设置缓存: test_key")
-
- # 获取缓存
- cached_data = cache_manager.get("test_key")
- if cached_data:
- print(f"获取缓存成功: {cached_data}")
- else:
- print("缓存获取失败")
-
- # 删除缓存
- cache_manager.delete("test_key")
- print("删除缓存: test_key")
-
- # 验证删除
- cached_data = cache_manager.get("test_key")
- if cached_data is None:
- print("缓存删除成功")
- else:
- print("缓存删除失败")
- def main():
- """主函数"""
- print("AI Architecture 高级使用示例")
- print("=" * 60)
-
- # 设置日志
- setup_logger()
-
- # 检查环境变量
- if not os.getenv("OPENROUTER_API_KEY"):
- print("警告: 未设置OPENROUTER_API_KEY环境变量")
- print("请复制env.example为.env并设置您的OpenRouter API密钥")
- return
-
- # 运行演示
- demo_multi_provider_llm()
- demo_advanced_chat()
- demo_document_processing()
- demo_advanced_qa()
- demo_cache_management()
-
- print("\n高级示例运行完成!")
- if __name__ == "__main__":
- main()
|