尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

完整版:对话 Agent 全链路架构详解:从 RAG 召回、Prompt 构建到 ReAct 交互落地指南

完整版:对话 Agent 全链路架构详解:从 RAG 召回、Prompt 构建到 ReAct 交互落地指南 一、整体架构总览对话 Agent 的核心能力来自「RAG 知识召回 动态 Prompt 构建 ReAct 工具调用」三者的协同同时覆盖私有知识问答与复杂任务执行两类需求。完整执行链路为用户输入问题 → 向量化处理 → 向量数据库召回相关知识片段动态拼接召回内容、对话历史、用户问题构建结构化 Prompt进入 ReAct 多轮交互循环按需调用工具分步解决复杂问题生成最终答案返回用户这套架构既通过 RAG 保证了私有知识的准确性又通过 ReAct 扩展了工具执行能力是企业级对话 Agent 的标准落地方案。二、核心流程拆解1. RAG 召回注入外部知识从源头抑制幻觉目标从向量知识库中召回与用户问题最相关的文档片段作为回答的事实依据减少大模型编造内容的概率。执行步骤预处理通过 InputToRag 组件对用户问题做清洗、改写生成适配召回的查询文本向量化调用 Embedding 模型将查询文本转为向量相似度检索在向量数据库中执行 TopK 相似度匹配返回最相关的文档片段结果封装召回文档存入上下文变量作为后续 Prompt 的事实来源2. 动态 Prompt 构建整合上下文与对话记忆目标将用户问题、RAG 召回结果、对话历史、系统规则整合为标准化 Prompt输入给大模型。核心组件ChatTemplate 模板引擎标准 Prompt 结构系统提示词定义角色、回答规则、约束条件嵌入召回文档与当前时间用户提示词包含用户原始问题与历史对话上下文核心占位符设计{content}用户当前的原始问题{documents}RAG 召回的相关文档片段核心事实依据{date}当前时间提升时效性问题的回答准确性{history}多轮对话历史保证上下文连贯性3. ReAct 多轮交互拆解复杂任务调用外部工具目标对于需要实时数据、精确计算、业务接口调用的复杂问题通过「思考 - 行动 - 观察」循环分步解决。标准四步循环Reason思考大模型基于当前 Prompt 分析问题判断是否需要调用工具、调用哪个工具Action执行返回结构化工具调用指令函数名 参数执行对应工具获取结果Observation观察将工具执行结果回传给大模型作为下一轮思考的依据循环 / 终止信息充足则输出最终答案信息不足则进入下一轮循环三、关键组件深度解析1. Lambda Node数据流转转换器负责流程中各节点的数据格式转换是链路中的「适配器」InputToRag输入原始用户问题输出经过预处理的召回查询文本直接影响召回精度InputToChat输入用户问题 对话历史输出结构化 map 参数为 ChatTemplate 提供动态变量2. Retriever向量召回连接器负责和向量数据库交互是 RAG 能力的核心执行单元。以 Milvus 向量库为例核心逻辑为调用 Embedding 接口向量化查询文本 → 调用向量库 Search 接口执行 TopK 查询 → 将返回结果统一转为标准 Document 格式。3. ToolAgent 的能力执行单元Tool 本质是「带语义描述的函数」必须包含三要素函数名称唯一标识供大模型调用功能描述清晰说明工具用途与适用场景决定大模型会不会正确调用参数定义用 JSON Schema 定义入参类型、含义、必填项四、企业级分层架构设计一套可扩展的对话 Agent 系统建议分为 6 层架构交互层用户入口IM、网页、API负责会话管理、流式输出编排层流程调度核心控制 RAG 召回、Prompt 构建、ReAct 循环的全链路执行模型层统一管理 Embedding 模型与对话大模型支持多模型切换与降级召回层向量检索、关键词召回、重排序负责知识片段的精准召回工具层统一注册管理各类业务工具、通用工具负责鉴权与执行数据层向量数据库、文档库、会话日志、效果数据存储五、核心参数调优建议1. RAG 召回参数TopK 召回数通用场景设 3~5 条单条 512 字符总参考文本控制在 2000 字符内相似度阈值向量相似度低于 0.6 的结果直接过滤避免无关内容干扰分块大小通用文档 512 字符技术文档 256 字符重叠率 10%~20%2. Prompt 配置系统提示词明确规则必须基于召回文档回答无答案时说明无法解答对话历史保留最近 5 轮过长时做摘要压缩避免挤占上下文窗口工具描述简洁精准单工具描述不超过 200 字3. ReAct 循环参数最大循环步数设 5~8 步防止死循环温度值Temperature设 0.1~0.3保证工具调用格式稳定工具数量单场景工具不超过 10 个过多会降低选择准确率六、完整代码示例Python LangChain实现「RAG 召回 ReAct 工具调用」的完整对话 Agent可直接运行python运行from langchain_chroma import Chroma from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain_core.tools import tool from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain_core.prompts import ChatPromptTemplate from langchain_text_splitters import RecursiveCharacterTextSplitter ​ # 1. 构建RAG向量知识库 knowledge_text 地球质量为5.972×10²⁴kg火星质量为6.42×10²³kg。 公司内部API接入需先申请权限审批流程为提交工单→部门审核→中台开通。 splitter RecursiveCharacterTextSplitter(chunk_size200, chunk_overlap30) docs splitter.create_documents([knowledge_text]) vector_store Chroma.from_documents(docs, OpenAIEmbeddings(modeltext-embedding-3-small)) retriever vector_store.as_retriever(search_kwargs{k: 2}) ​ # 2. 定义工具 tool def calculator(expression: str) - str: 执行精确数学计算输入为合法数学表达式 try: return str(eval(expression)) except: return 计算错误 ​ tools [calculator] ​ # 3. 构建Prompt与Agent prompt ChatPromptTemplate.from_messages([ (system, 你是团队知识助手请基于下方参考资料回答问题。 参考资料{context} 如果需要计算请调用计算器工具资料中没有的内容说明无法解答。), (placeholder, {chat_history}), (human, {input}), (placeholder, {agent_scratchpad}) ]) ​ llm ChatOpenAI(modelgpt-3.5-turbo, temperature0.2) agent create_tool_calling_agent(llm, tools, prompt) agent_executor AgentExecutor(agentagent, toolstools, max_iterations5) ​ # 4. 执行问答 def chat_agent(question, history[]): # 先做RAG召回 context_docs retriever.invoke(question) context \n.join(doc.page_content for doc in context_docs) # 执行Agent result agent_executor.invoke({ input: question, chat_history: history, context: context }) return result[output] ​ # 测试 if __name__ __main__: print(chat_agent(地球和火星的质量加起来是多少))七、效果评测方法1. 分环节量化指标表格环节核心指标合格标准RAG 召回召回率Top3 召回包含正确答案 ≥90%生成回答事实准确率答案无事实错误 ≥85%ReAct 工具工具调用准确率工具与参数选择正确 ≥85%整体体验首字响应时长≤2 秒2. 评测执行方法构建 50~100 条测试集覆盖纯知识问答、需工具调用、无答案三类场景每次参数调整后跑回归测试跟踪指标变化定期抽样人工评测评估回答可读性与实用性八、总结对话 Agent 的能力由三大支柱共同支撑RAG 提供外部知识记忆动态 Prompt 实现上下文整合ReAct 负责复杂任务拆解与工具执行。落地时建议先跑通 RAG 纯问答再逐步叠加 ReAct 工具能力通过分层架构保证可扩展性通过持续评测迭代优化效果。
返回列表