深色模式
Agent 生产落地案例:工单自动处理系统
摘要:本文以一个可落地的「运维工单自动处理 Agent」为例,把本目录各篇概念串成端到端系统:ReAct 循环驱动、Function Calling 调内部 API、MCP 接数据源、记忆做用户/历史沉淀、护栏防越权与失控、可观测做 trace 与成本。给出架构图、分阶段上线、成本测算与故障处置清单。文中模型名、价格、配额标注
[版本相关],请勿当作承诺值。
核心概念:我们要解决什么
场景:客服/运维每天收到大量工单(查订单、查告警、重启服务、回复用户)。目标是用一个 Agent 自动完成「理解意图 → 调工具取数 → 执行安全动作 → 回复」,同时保证不越权、不泄露、不失控。
能力边界(对齐术语):
- 这是 Agent(多步循环 + 工具),不是单轮 RAG。
- 工具调用走 Function Calling,内部系统经 MCP Server 暴露。
- 跨会话的用户偏好与历史工单存入 记忆。
- 全链路受 护栏 与 可观测 约束。
架构与原理:端到端
控制流:每来一张工单,Agent 进入 ReAct 循环;先查记忆拿到用户上下文,再经网关调用 MCP 工具取数/执行;敏感动作(如重启)卡人工确认;最终回复经脱敏后回写工单。全程 trace 上报,成本受预算熔断约束。
生产实践:分阶段落地
不要一步到位
- 阶段一(只读):只开放查询类工具(查订单、查告警),不执行任何写操作。验证闭环与准确率。
- 阶段二(受控写):开放低风险写操作,全部走人工确认 + 审计。
- 阶段三(自动写):仅对高置信、低风险动作放开自动执行,仍受预算与护栏约束。
阶段一最小实现骨架(示意 [未实测]):
python
# ticket_agent.py
def handle_ticket(ticket_text):
memory_ctx = recall(user_id(ticket_text), top_k=3) # 记忆召回
messages = [{"role":"user","content": ticket_text + "\n上下文:" + memory_ctx}]
for step in range(MAX_STEPS):
resp = llm_call(messages, tools=TICKET_TOOLS) # Function Calling
if no_tool_use(resp): return finalize(resp)
for tu in tool_uses(resp):
result = tool_gateway(tu) # 网关: RBAC+沙箱
messages.append(tool_result(tu, result))
return budget_hit_response()1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
操作步骤 / 配置
bash
# 依赖
pip install anthropic mcp langgraph prometheus-client # [版本相关]
# 环境变量(护栏 + 接入)
export ANTHROPIC_API_KEY="..."
export AGENT_MAX_STEPS=12
export AGENT_MAX_COST_USD=0.5
export AGENT_SENSITIVE_TOOLS="restart_service,delete_record"
export LANGCHAIN_TRACING_V2=true # 可观测1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
json
// MCP Server 注册(订单/告警)
{
"mcpServers": {
"ops": { "command": "python", "args": ["ops_mcp_server.py"] }
}
}1
2
3
4
5
6
2
3
4
5
6
验证
- 只读验证:用真实工单跑阶段一,确认能正确调用查询工具并给出答案。
- 护栏验证:预埋注入与越权请求,确认被网关拦截。
- 熔断验证:构造循环工单,确认在预算内中止。
- 记忆验证:二次咨询能召回首次的用户偏好。
回滚 / 清理
- 阶段开关(feature flag)控制是否启用自动写;异常时回退到「只读 + 人工」。
- 工具网关、MCP Server 独立部署,回滚不影响核心服务。
- 定期清理 trace 与记忆中的工单敏感数据,落实合规保留期。
故障排查
- 工具频繁失败:MCP Server 下游超时。对策:网关加超时 + 重试退避 + 降级提示。
- 循环不收敛:prompt 未要求「信息足够即作答」。对策:收紧
MAX_STEPS+ 显式终止指令。 - 误回复用户:输出护栏漏检 PII。对策:增强脱敏正则/分类器 + 人工抽检。
安全与合规
- 提示注入:工单正文/工具返回可能含注入,统一视为不可信数据,网关与输出层独立校验。
- 数据泄露:工单含用户 PII,记忆与输出必须脱敏与 tenant 隔离。
- 越权工具调用:重启/删除等敏感动作强制人工确认 + RBAC + 审计。
- 成本失控:预算熔断 + 并发上限 + 云账户日额度兜底。
成本 / 性能
以 Claude 4 Sonnet(200K 上下文)参考 [版本相关,价格以官方为准]:输入约 $3/MTok、输出约 $15/MTok。一张工单平均 8 步、每步 3K 输入 + 1.5K 输出 ≈ 24K 输入 + 12K 输出 ≈ $0.25。若日处理 1 万工单、其中 30% 由 Agent 自动完成,日成本约 $750;全量自动则约 $2500/日。降本:Prompt Caching 缓存工具定义与系统提示(命中后输入 ~10%)、高频查询用小模型、非实时批次用 Batch API(约 50% 折扣)。性能:P95 延迟受步数放大,长工单建议异步处理 + 进度回写。