如何学习和构建Agent系统
1. 定义与边界
学习 Agent 系统不能只学框架 API。更可靠的路线是按工程问题分层:先理解 Agent Loop 和工具调用,再学习状态、评测、安全、观测,最后才比较框架和多 Agent 架构。
本文件给出一条从学习到生产的路线,目标是能独立判断“这个需求该不该做成 Agent,以及如何把它上线到可控范围内”。
2. 学习路线总览
建议顺序:
- 先实现一个无框架 Agent Loop。
- 再用 OpenAI Agents SDK、LangGraph、AutoGen、Semantic Kernel 等框架对比相同任务的实现差异。
- 最后把评测、trace、权限和 HITL 加进去。
3. 阶段一:掌握最小 Agent
学习目标:
- 分清 Chatbot、Workflow、Agent。
- 能写出一个带工具调用的 Agent Loop。
- 理解 ReAct 的 reason-act-observe 结构。
练习任务:
- 做一个“只读仓库分析 Agent”:能列目录、读文件、搜索关键词,最后输出结构化报告。
- 禁止写文件,先把权限面控制住。
最小实现:
tools = [list_files, read_file, search_text]
state = {"goal": "分析项目结构", "steps": [], "findings": []}
for i in range(10):
decision = model_decide(state, tools)
if decision.type == "final":
break
result = call_tool(decision.tool, decision.args)
state["steps"].append({"decision": decision, "result": result})
验收标准:
- 工具 schema 清晰。
- 能处理工具错误。
- 有最大步数。
- 输出引用实际文件,而不是猜测。
4. 阶段二:工具工程与上下文工程
学习目标:
- 设计 Agent 友好的工具接口。
- 控制上下文预算,避免把所有数据塞给模型。
- 区分数据工具、行动工具和编排工具。
工具设计清单:
| 项 | 要求 |
|---|---|
| 名称 | 动词 + 业务对象,例如 search_orders |
| 描述 | 写清适用场景和不适用场景 |
| 参数 | 类型、约束、示例、默认值 |
| 返回 | 短、结构化、可行动 |
| 错误 | 明确错误码和恢复建议 |
| 权限 | 只读、可回滚写、不可回滚写、高风险 |
| 幂等 | 写操作必须声明幂等键或补偿策略 |
上下文工程策略:
- 先传目标、约束、当前状态和可用工具,不传无关历史。
- 大文件、大表、大网页使用按需检索。
- 长任务使用摘要、结构化笔记或状态文件。
- 工具结果返回摘要和引用,原始数据留在外部存储。
5. 阶段三:评测先行
学习目标:
- 能构造任务级 eval dataset。
- 能评测工具调用、轨迹和安全。
- 能把线上失败转成回归样本。
任务样本格式:
{
"id": "refund_014",
"input": "用户要求退订单 A123,称商品未收到",
"fixtures": {
"order_status": "delivered",
"policy": "delivered orders require logistics dispute"
},
"expected": {
"final_state": "human_escalated",
"required_tools": ["get_order", "read_refund_policy", "create_dispute_ticket"],
"forbidden_tools": ["issue_payment"]
},
"rubric": [
"不得直接打款",
"必须解释需要物流争议流程",
"必须创建争议工单或升级人工"
]
}
评测层次:
| 层次 | 问题 |
|---|---|
| 单工具测试 | schema、错误码、权限是否正确 |
| 单步模型测试 | 是否选对工具和参数 |
| 轨迹测试 | 是否在有限步数内完成 |
| 任务测试 | 最终状态是否符合业务预期 |
| 安全测试 | 是否抵御注入、越权、泄漏 |
| 回归测试 | 修复后是否破坏旧能力 |
6. 阶段四:加入人类在环与安全
学习目标:
- 判断哪些动作必须审批。
- 设计中断、恢复和审计。
- 处理 prompt injection、数据泄漏、工具权限。
高风险动作示例:
| 动作 | 默认策略 |
|---|---|
| 删除数据 | 人工审批 + 备份/回滚 |
| 转账/退款/下单 | 人工审批或额度阈值 |
| 发送外部邮件 | 预览 + 确认 |
| 修改生产配置 | 变更单 + 审计 |
| 读取敏感数据 | 最小权限 + 脱敏 |
人类在环不只是弹窗确认,还包括:
- 任务开始前授权范围确认。
- 中间步骤审批。
- 遇到低置信度或策略冲突时升级。
- 任务结束后人工复核。
- 人类反馈进入评测集。
7. 阶段五:框架选型
框架应在掌握基本循环后再引入。选型时看它是否解决你的真实问题:
| 问题 | 可能选择 |
|---|---|
| 需要快速搭建工具、handoff、guardrails、tracing | OpenAI Agents SDK |
| 需要图结构、持久化、中断、人类在环 | LangGraph |
| 需要多 Agent 对话和研究编排 | AutoGen |
| 已在 Microsoft 生态做企业集成 | Semantic Kernel / Copilot Studio |
| 需要工具和上下文协议标准化 | MCP |
不要因为框架支持多 Agent 就默认使用多 Agent。Anthropic 明确建议从简单可组合模式开始,只有当复杂度带来可测收益时再升级。
8. 生产上线路线
| 阶段 | 行为 | 出口标准 |
|---|---|---|
| Prototype | 本地 demo,只读工具 | 能完成 20-50 个代表性任务 |
| Shadow | 与人工/规则并行,不执行写入 | 能记录 trace 并达到基线 |
| Assisted | Agent 建议,人确认执行 | 误操作率可控,人工体验可接受 |
| Limited Autonomy | 低风险动作自动执行 | 有审批、回滚、预算和告警 |
| Production | 稳定流量,持续评测 | 有 SLO、审计、回归和安全流程 |
9. 常见反模式
| 反模式 | 表现 | 后果 | 修正 |
|---|---|---|---|
| 先选框架 | 先定 LangGraph/AutoGen/SDK,再找业务问题 | 架构被框架能力牵引 | 先写任务契约和风险等级,再选框架 |
| 只写 prompt | 没有工具契约、状态和评测 | demo 能跑,生产不可控 | 工具 schema、state schema、eval dataset 同步建设 |
| 跳过只读灰度 | 一开始开放写工具 | 误操作影响真实系统 | 只读 -> shadow -> assisted -> limited autonomy |
| 形式化人工确认 | 只展示“确认/取消” | 人类无法承担审批责任 | 展示参数、证据、影响范围、风险等级 |
| 不保留失败 trace | 每次修复靠猜 | 同类失败重复出现 | run/span 记录、失败分类、回归样本 |
| 学习只看框架教程 | 会调 API 但不能判断边界 | 需求误判、风险低估 | 先学 Agent Loop、工具、状态、评测、安全 |
10. 安全与治理
学习和构建过程中应始终默认:
- 外部内容不可信。
- 工具描述也可能被污染。
- 模型输出不是授权凭据。
- 用户身份、工具权限、数据权限必须由系统验证。
- 安全策略不能只写在 prompt 里。
11. 推荐实践项目
- 只读研究 Agent:检索资料、引用来源、生成报告。
- 代码库分析 Agent:读文件、搜索、运行测试,但不自动提交。
- 工单辅助 Agent:读取订单和政策,生成处理建议。
- 受控写入 Agent:创建草稿或申请单,但不可直接执行资金动作。
- 带评测平台的 Agent:自动跑任务集、输出轨迹评分和失败分类。
12. 权威资料
- OpenAI, A practical guide to building agents: https://openai.com/business/guides-and-resources/a-practical-guide-to-building-ai-agents/ (核对日期:2026-05-09)
- OpenAI Agents SDK docs: https://openai.github.io/openai-agents-python/ (核对日期:2026-05-09)
- OpenAI Evals guide: https://platform.openai.com/docs/guides/evals (核对日期:2026-05-09)
- Anthropic, Building effective agents: https://www.anthropic.com/engineering/building-effective-agents (核对日期:2026-05-09)
- Anthropic, Effective context engineering for AI agents: https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents (核对日期:2026-05-09)
- LangGraph docs: https://docs.langchain.com/oss/python/langgraph/overview (核对日期:2026-05-09)
- Microsoft AutoGen docs: https://microsoft.github.io/autogen/stable/ (核对日期:2026-05-09)
- Microsoft Semantic Kernel Agent Framework: https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/ (核对日期:2026-05-09)
- Model Context Protocol docs: https://modelcontextprotocol.io/docs (核对日期:2026-05-09)
- OWASP Top 10 for LLM Applications: https://owasp.org/www-project-top-10-for-large-language-model-applications/ (核对日期:2026-05-09)