AI Agent 工程 · 05
05.2 实战:有边界的单 Agent 客服
用可运行的模拟决策程序,练习单 Agent 的工具调用、失败处理和执行上限。
目标、输入与系统位置
本节在 examples/cross-border-ai-support-agent/v3-core-engineering.mjs 中运行 runSingleAgent。输入是模拟的 requesterId、orderId 和 decisions;输出是 completed 或带原因的 stopped 与 trace。它连接 03 的订单工具,却不接模型、支付或真实客户数据。
模拟决定 lookup → rpc(order_lookup) → 授权结果 → 模拟决定 answer → completed
decisions 是模拟模型响应,不能宣称为真实 LLM Agent。其价值是把工程边界变成可复现测试:未知决定、未授权工具结果、到达三轮上限都停止。
操作、验收与失败
执行 npm run test:agent-course。预期 authorized loop 通过:Amy 读取自己的 XB-1024 后完成;bounded loop 通过:重复查询达到上限后停止。试着把请求者换成 Ben,预期工具返回无权访问而不是订单详情。
真实项目中,把 decisions 换成模型调用时,仍保留循环控制器:它负责 schema 校验、权限、超时、追踪与人工转交。订单查询是开放式对话中的动态选择;退款资格仍适合 04 的确定性 Workflow。
主动回忆:若模型连续要求同一个失败工具,应该把错误原文、摘要还是两者放回上下文?为什么?
- 必须记:单 Agent 也能拥有多个工具。
- 建议记:trace 是排查工具与决策边界的证据。
- 不用记:模拟订单号。