# llm **Repository Path**: lvxin1234/llm ## Basic Information - **Project Name**: llm - **Description**: 跟进主流大模型应用方法,欢迎大家加入一起完善 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-05-09 - **Last Updated**: 2025-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: llm, RAG, langgraph, Agent2Agent, MCP ## README # RAG智能问答系统 ## 功能特点 - 支持多种数据源的智能问答 - 基于LangGraph的工作流引擎 - 提供流式问答和批量处理能力 - 支持知识库构建与检索 - 包含查询转换、上下文构建等高级特性 - 提供评估模块进行效果验证 - **新增A2A (Agent-to-Agent) 服务框架支持** - 标准化的Agent服务接口 - 支持同步和流式问答 - 完整的任务状态管理 - 客户端SDK支持 - 支持Agent Card发现机制 ## 系统架构 ```mermaid flowchart TD __start__([start]) parse_query[[Parse Query]] transform_query[[Transform Query]] check_retrieve_knowledge[[Check Retrieve Knowledge]] retrieve_knowledge[[Retrieve Knowledge]] check_call_tools[[Check Call Tools]] call_tools[[Call Tools]] build_context[[Build Context]] generate_answer[[Generate Answer]] update_memory[[Update Memory]] handle_error[[Handle Error]] __end__([end]) __start__ --> parse_query parse_query -->|transform| transform_query parse_query -->|skip_transform| check_retrieve_knowledge parse_query -->|error| handle_error transform_query -->|do_retrieve| retrieve_knowledge transform_query -->|skip_retrieve| check_call_tools transform_query -->|error| handle_error check_retrieve_knowledge -->|do_retrieve| retrieve_knowledge check_retrieve_knowledge -->|skip_retrieve| check_call_tools check_retrieve_knowledge -->|error| handle_error retrieve_knowledge -->|skip_tools| build_context retrieve_knowledge --> call_tools retrieve_knowledge -->|error| handle_error check_call_tools -->|skip_tools| build_context check_call_tools --> call_tools check_call_tools -->|error| handle_error call_tools --> build_context build_context --> generate_answer generate_answer -->|finish| __end__ generate_answer --> update_memory generate_answer -->|error| handle_error update_memory --> __end__ handle_error --> __end__ ``` ## 核心模块 - **Pipeline**: 主流程控制模块 - **LangGraph Pipeline**: 基于LangGraph的工作流引擎 - **Memory**: 对话记忆管理 - **Query Transformer**: 查询转换与处理 - **Embedding**: 文本嵌入向量处理 - **LLM**: 大语言模型封装 - **Vector DB**: 向量数据库操作(Milvus) - **Document Loader**: 支持多种文档格式加载(PDF, Markdown, Docx, Excel, Txt) - **Data Processor**: 文本处理与分割 - **A2A Agent Executor**: A2A服务执行器 - **A2A Client SDK**: 客户端SDK ## A2A服务架构 ### 服务端组件 - **QAAgentExecutor**: 继承自A2A的AgentExecutor,提供标准化的Agent服务接口 - **任务管理**: 支持任务状态跟踪、进度更新和结果返回 - **事件队列**: 异步事件处理机制 - **Agent Card**: 服务发现和元数据管理 ### 客户端组件 - **QAServiceClient**: 完整的A2A客户端SDK - **连接管理**: 自动化的连接初始化和资源管理 - **请求封装**: 将QA请求转换为A2A标准格式 - **流式支持**: 支持流式问答和实时状态更新 ### 主要特性 - **标准化接口**: 遵循A2A协议标准 - **异步支持**: 全异步架构,支持高并发 - **状态管理**: 完整的任务生命周期管理 - **错误处理**: 统一的错误处理和恢复机制 - **扩展性**: 支持技能扩展和功能增强 ## 工作流程 1. 用户输入问题 2. 查询解析与转换 3. 知识库检索 4. 上下文构建 5. LLM生成答案 6. 结果输出 7. 记忆存储(可选) 8. 评估(可选) ## LangGraph 工作流引擎 - 支持状态管理(QAState) - 提供完整的工作流定义 - 包含多个处理节点: - 查询解析 - 查询转换 - 知识检索判断 - 工具调用判断 - 知识检索 - 工具调用 - 上下文构建 - 答案生成 - 内存更新 - 错误处理 ## 主要流程节点 - 查询解析: 识别用户输入意图 - 查询转换: 支持多种转换模式 - 知识检索: 从向量数据库检索相关信息 - 工具调用: 需要外部工具时进行调用 - 答案生成: 使用LLM生成最终答案 - 内存更新: 可选的对话记忆更新 ## 代码示例 ### 基础问答 ```python # 初始化问答流水线 pipeline = QAPipeline(config) # 构建知识库 pipeline.build_knowledge_base("data/knowledge_db") # 简单问答 response = pipeline.ask("如何做南瓜派?") # 流式问答 for chunk in pipeline.ask_stream("请详细介绍量子计算"): print(chunk, end="") # 批量问答 questions = ["问题1", "问题2", "问题3"] answers = pipeline.batch_ask(questions) ``` ### A2A服务使用 #### 启动A2A服务 ```python # 运行A2A服务 python tests/__main__.py ``` #### 客户端使用 ```python import asyncio from tests.a2a_client_test import QAServiceClient async def test_a2a_client(): async with QAServiceClient('http://localhost:9999') as client: # 同步问答 result = await client.ask( query="什么是人工智能?", use_knowledge_base=True, k=5 ) print("同步问答结果:", result) # 流式问答 async for chunk in client.ask_stream( query="请解释机器学习的基本概念", use_knowledge_base=True, k=3 ): print(f"流式数据: {chunk}") # 运行测试 asyncio.run(test_a2a_client()) ``` #### 服务端配置 ```python # 定义Agent技能 skill = AgentSkill( id='qa_basic', name='知识问答', description='基于知识库和大模型的智能问答', tags=['问答', '知识库', 'RAG'], examples=['什么是RAG?', '请用中文回答以下问题:……'], ) # 创建Agent卡片 agent_card = AgentCard( name='智能知识问答助手', description='基于LangGraph和RAG的智能知识问答服务', url='http://localhost:9999/', version='1.0.0', capabilities=AgentCapabilities(streaming=True), skills=[skill], supportsAuthenticatedExtendedCard=True, ) ``` ## Mermaid 流程图导出 支持导出工作流为Mermaid格式,便于可视化分析和文档展示 ## 安装说明 1. 克隆仓库 2. 安装依赖: `pip install -r requirements.txt` 3. 配置环境变量 4. 安装Milvus数据库(如使用向量检索功能) ## 配置说明 - **Embedding**: 配置API密钥和模型参数 - **LLM**: 支持OpenAI和LangChain格式 - **向量数据库**: 配置Milvus连接参数 - **检索参数**: 设置检索深度(k)等参数 - **评估参数**: 配置评估方法和指标 - **A2A服务**: 配置服务端口、Agent卡片等 ## 注意事项 - 确保网络连接稳定,特别是在调用远程API时 - 大型模型处理需要适当硬件支持 - 知识库构建可能需要较长预处理时间 - 流式输出需要处理中断机制 - **A2A服务需要单独安装a2a依赖包** - **A2A客户端支持异步上下文管理器,建议使用async with语法** ## 许可证 本项目使用MIT许可证。详情请参见LICENSE文件。 ## 贡献指南 欢迎贡献!请遵循以下步骤: 1. Fork仓库 2. 创建新分支 3. 提交代码更改 4. 创建Pull Request ## 联系方式 如需技术支持或有建议,请联系我们的团队: - 邮箱: support@gitee.com - 论坛: [Gitee社区](https://gitee.com/community) - 微信公众号: @Gitee ## 评估相关 - 支持ROUGE、BERTScore等评估指标 - 提供GPT-Judge评估方法 - 支持RAGAS评估框架 - 可导出评估报告 ## 其他配置 - 支持日志级别配置 - 支持消息构建参数配置 - 支持最大token数配置 - 支持历史对话轮次配置 - **支持A2A服务发现和认证配置**