文章目录
- [1. Agent架构图例](#1. Agent架构图例)
- [2. 工作流程文字说明](#2. 工作流程文字说明)
-
- [2.1. 输入 User Prompt](#2.1. 输入 User Prompt)
- [2.2. 构建Prompt](#2.2. 构建Prompt)
- [2.3. 调用 LLM(模型推理)](#2.3. 调用 LLM(模型推理))
- [2.4. Tool Call 解析(Agent 决策)](#2.4. Tool Call 解析(Agent 决策))
- [2.5. 调用 MCP Server(执行工具)](#2.5. 调用 MCP Server(执行工具))
- [2.6. MCP Server 返回结果(Tool Result)](#2.6. MCP Server 返回结果(Tool Result))
- [2.7. 结果注入上下文(Context Injection)](#2.7. 结果注入上下文(Context Injection))
- [2.8. 再次调用 LLM(生成最终回答)](#2.8. 再次调用 LLM(生成最终回答))
- [2.9. 返回最终答案给用户](#2.9. 返回最终答案给用户)
- [3. 流程内可多轮循环](#3. 流程内可多轮循环)
1. Agent架构图例

一句话概括工作流程:用户提问 → Agent 构造上下文 → LLM 判断是否用工具 → Agent 执行工具 → 结果回注 → LLM 生成最终答案
2. 工作流程文字说明
2.1. 输入 User Prompt
用户输入自己的问题,如:女朋友肚子疼怎么办?
- 流程开始
- 输入是自然语言
2.2. 构建Prompt
Agent 会将用户输入加工为一个完整的 Prompt,其中包含:
- System Prompt 系统提示词,角色设定
- Memory 历史对话信息
- 用户的当前问题
- Tool Schema 可用工具列表
目的是让LLM知道:
- 自己是谁
- 能做什么(有哪些工具)
- 当前任务是什么
2.3. 调用 LLM(模型推理)
Agent 把构造好的 Prompt 发给大模型,模型会返回两种可能:
- 普通文本回答:多喝热水
- Tool Call(结构化输出):
json
{
"type": "call",
"name": "web_browse",
"args": {
"url": "https://xxx.com"
}
}
注意:模型不会真的调用工具,只是"建议调用"
2.4. Tool Call 解析(Agent 决策)
Agent 接收到 LLM 输出后,会做:
- 判断是不是 tool call
- 解析 JSON / function call
- 提取:
- 工具名(name)
- 参数(args)
- 参数校验(防止乱调用)
注意:Agent 才是"执行者",模型只是"建议者"
2.5. 调用 MCP Server(执行工具)
如果需要调用工具:Agent 会通过 MCP 协议发送请求(本质类似:HTTP API)
txt
Tool: web_browse
Args: { url: xxx }
2.6. MCP Server 返回结果(Tool Result)
工具执行完成后返回数据,可能是:
- JSON(最常见)
- HTML(网页内容)
- Text(文本)
- Binary(文件)
例如:
json
{
"title": "...",
"content": "..."
}
2.7. 结果注入上下文(Context Injection)
Agent 不会直接把结果给用户,而是:把 Tool Result 加入 Prompt
- 用户问题 + 工具返回结果
然后重新组织成新的输入给 LLM (关键机制),LLM 必须"看到工具结果"才能生成正确答案
2.8. 再次调用 LLM(生成最终回答)
Agent 再次调用模型:
- 输入
- 原问题
- 工具结果
- 输出
- 更准确、更有依据的回答
例如:
txt
根据查询结果,可能是胃部不适,建议......
2.9. 返回最终答案给用户
Agent 将模型最终生成的回答返回给用户
- 流程结束
3. 流程内可多轮循环
如:LLM → Tool → LLM → Tool → LLM ...