什么是 Agent?
Agent 是一个智能体,可以接收用户请求,利用大模型(LLM)的推理能力,自动决定:
- 自己回答
- 还是调用外部工具(数据库、API、脚本等)
最终把结果返回给用户。
能够自主做任务拆分、结果反思、行为决策
Agent与workflow的本质区别
Agent(智能体)
- 类似一个“智能助手”,基于大模型(LLM)或规则引擎,具备自主决策与动态适应能力。
- 用户只需给目标或问题,Agent会自己规划步骤、调用工具、处理信息。
- 行为偏“灵活、不确定”。
Workflow(工作流,如dify、ragflow、langflow等)
- 类似一条“生产线”,由开发者预先定义步骤,每个节点都有固定的输入输出。
- 执行过程是确定性的,基本不会偏离设定流程。
- 行为偏“固定、可预测”。
Agent通常配合外部工具工作,工具则通常以MCP方式提供服务,下面简单介绍一下mcp:
什么是MCP
MCP 是 Model Context Protocol(模型上下文协议)的缩写,是由 Anthropic 2024年开发的一个开放标准协议。
用于连接AI模型(如Claude、GPT等)与外部数据源和工具,让AI能够安全、可控地访问和操作外部资源。
与http协议类比:
浏览器 ←→ HTTP协议 ←→ Web服务器 GET /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json HTTP协议是让浏览器和网站之间能互相理解的’语言
AI模型 ←→ MCP协议 ←→ 工具服务器
{"method": "tools/call","params": {"name": "query_service_cost","arguments": {"type": "短信","name": "test"}
}
}
MCP协议是让AI和各种工具之间能互相理解的’语言’
Agent 工作流程
用户提问:
“运维安全中心服务器费用是多少?”
Agent 理解问题:
判断是否需要调用工具, 如需要会自动识别工具、提取参数。
调用 MCP 工具:
自动提取“运维安全中心 + 服务器”两个参数传给 MCP 工具。
工具执行查询并返回结果:
mcp工具查询数据库查出 “服务器费用 = XXX 元”。
Agent 整理回答:
用自然语言告诉用户:2025年6月运维安全中心服务器费用总计为xxx元,如果您需要查看运维安全中心具体各项目组的费用分布情况,我可以为您进一步分析。
常见挑战 & 解决思路 & 注意事项
1、用户提问中的“业务词” 和 工具(如数据库)中“标准词” 不一致、提问理解不准确
如运维安全中心6月份的数据库费用是多少?
但数据源存储的是 运维安全部 云数据库MongoDB\云数据库Redis\云数据库MySQL
解决思路:
- 规则/词典映射
运维安全中心 → 运维安全部,云盘 → 云硬盘等 - 多轮澄清
如果不确定,就反问用户(例如:“您是指捕运维安全部吗?”) - 模糊匹配(字符串相似度)
用算法计算用户输入和数据库条目的相似度,对同义词效果有限 - 向量语义匹配(Embedding)
用大模型或开源 embedding 模型(如 text-embedding-ada-002、bge-small-zh)把“用户提问中的关键词”和“数据库字段”都转成向量。通过向量相似度找到最接近的数据库字段 RAG。 - 结合大模型进行纠错/归一化
让模型帮你做“归一化”:
用户提问:“运维安全中心6月份的数据库费用是多少?”
LLM 输出:查询关键词应为 “运维安全部” MongoDB\云数据库Redis\云数据库MySQL 然后再把归一化后的结果传递给工具。 - 以上组合的智能混合匹配模式
2、模型调用工具混乱
- 如果工具过多或者描述不准确,会有此问题,可以优化工具描述。
- 如果工具达到一定量级,可以将工具也做向量化处理,让大模型用向量检索的方式选择工具
- 考虑使用多agent模式,每个agent负责各自领域内容,由父agent做任务分发
3、出现问题难以排查
agent决策不正确,工具执行结果不准确,出现问题难排查是开发agent时常遇到的问题。
- 不要用开源的agent框架!一个黑盒,有问题或者想干预策略有点难。
- 自己手搓的优势:
- 透明度:实时展示智能体决策逻辑与执行步骤
- 可控性:允许人为干预关键决策节点
- 可观测:很自由
4、调用链过长,响应慢
如果你的任务很复杂,Agent 需要多轮次调用工具,多次兜底,响应会变慢。
- 缓存:对常用中心/资源类型缓存标准化结果
- 异步并发:并行调用多个工具,再由 Agent 汇总
- 优化prompt:事先在prompt中预设好一些数据
5、错误处理 & 兜底策略
- 工具超时、报错,Agent 会输出一堆“模型幻觉”的回答。
- 兜底提示:比如“暂时无法查询,请稍后再试”
- 重试机制:失败时自动重试一次
6、安全与权限控制
- Agent 调用工具时可能越权,比如查询了不该暴露的数据。
- 结果是否可控、是否可承受
- 大模型本身的幻觉和不确定性,必然会有错误的决策,结果是否可承受,可承受在考虑使用agent
7、上下文工程、提示词工程的重要性
- prompt是逐渐迭代的,有演进过程
- 一个好的上下文和prompt会大大提高agent输出的准确性
下一步:
如何手搓一个Agent