工程场景
示意智能体工作流自动化
一个工程场景:用 AI 智能体自动化多步骤业务流程,智能体在策略检查、人工审批和完整审计轨迹的约束下进行规划、调用工具并执行操作。
问题
设想一个运营团队,持续处理着源源不断的请求。每个请求都需要阅读一条非结构化的消息或一份文档,在若干内部系统中查询记录,依据政策作出判断,然后更新一个或多个系统。步骤本身很清楚,但输入的变化太大,基于规则的工作流覆盖不了。
语言模型可以读懂输入并决定下一步做什么,于是人们很容易想让智能体直接访问这些系统并放手让它运行。如果没有约束,这样的智能体可能满怀信心地执行错误操作,在失败后重复同一操作,或者被它所读内容中隐藏的指令带偏。工程上要解决的是:既获得智能体的灵活性,又保有受控流程的可预测性。
设计必须满足的需求
- 智能体只能通过一组明确的工具行动,每个工具都有既定的 Schema 和自己的权限范围。
- 任何会修改数据、转移资金或联系客户的操作都必须通过策略检查,高影响操作必须等待人工审批。
- 工作流必须能够经受进程重启和模型错误,并在恢复时不重复已经完成的操作。
- 智能体读取的内容必须被视为不可信数据,不得改变它的指令或权限。
- 每一份计划、每一次工具调用、审批和结果都必须记录下来,使一次运行可以被审阅和重放。
- 每个工作流的开销和运行时间都必须有上限,当智能体无法继续时,要有清晰的人工交接。
设计
组件
推理
- 01
触发
事件、定时任务或用户请求
- 02
规划
把目标拆成有边界的步骤
- 03
工具调用
通过类型化工具只读查询
- 04
拟定操作
拟议的变更及其证据
受控执行
- 01
策略检查
限额、权限与风险评级
- 02
人工审批
高影响操作必须审批
- 03
执行
向目标系统幂等写入
- 04
验证
确认结果,重试或回滚
- 05
审计
每一步都有日志且可重放
触发与接入
工作流由事件、定时任务或用户请求启动,每次启动都以唯一的运行标识记录。接入环节对输入做规范化处理,提取附件,并对请求类型进行分类。不在支持范围内的请求类型会直接转给人工,而不去尝试处理。
持久化工作流引擎
工作流引擎保存每次运行的状态,并在每一步完成时记录下来。如果某个 worker 崩溃或某次模型调用超时,运行会从最后一个已完成的步骤恢复。定时器、带退避的重试以及等待人工处理,都表达为普通的工作流步骤。
规划器与智能体运行时
智能体接收目标、可用工具和相关策略,并产出一份由有限步骤组成的计划。运行时限制迭代次数、token 数量和耗时,一旦触及上限就终止运行。智能体只提出操作建议,不直接执行写入。
工具网关
每个工具都是一个类型化函数,带有经过校验的输入 Schema,并通过统一的网关对外提供。读工具与写工具相互分离,每次调用都使用能完成任务的最小权限凭据。写工具要求提供由运行和步骤派生的幂等键,因此被重试的步骤不会生效两次。
策略与护栏层
拟议的操作由模型之外的确定性规则进行评估:金额上限、允许的目标、必填字段和风险评级。输入和工具结果在到达模型之前,会接受注入指令和敏感数据方面的检查。结果只有三种:放行、需要审批或拒绝。
人工审批
需要审批时,审核人会看到拟议的操作、智能体收集的证据及其背后的推理。他们可以批准、修改或拒绝,其决定会与本人身份关联并记录在案。在设定时间内未被审核的请求会被升级处理,而不是自动批准。
审计与评估
每次运行都把输入、计划、工具调用、模型响应、策略决定和审批保存为一条追踪记录。同一批追踪记录构成回归测试集:新的提示词或模型在发布之前,要先对已记录的案例重放一遍。审核人的修改和拒绝会被持续跟踪,作为智能体哪里需要改进的信号。
取舍
设计决策
| 决策 | 理由 |
|---|---|
| 把受约束的智能体放在工作流内,而不是采用自主智能体 | 完全自主可以应对全新的情况,但难以测试,也难以设定边界。把智能体置于既定的工作流之内,限制了它可以尝试的范围,放弃了一部分灵活性,换来的是可以推理、可以评估、事后也可以解释的行为。 |
| 策略在代码中、在模型之外强制执行 | 提示词中的指令只是指引,模型通常会遵守,但也可能被说服而放弃。因此限额和权限由模型无法影响的确定性代码来检查,这意味着有些规则会表述两次:一次作为指引,一次作为强制执行。 |
| 人工审批按风险划定范围,而不是事事审批 | 每个操作都审批,会抹掉自动化的大部分收益,还会让审核人养成不看就点通过的习惯。完全不审批则不安全。按影响程度给操作评级,可以让人参与在出错代价高的环节,同时让低风险、可逆的操作直接进行。 |
| 持久化执行搭配幂等工具 | 智能体的运行时间长,模型调用和网络调用失败是常态。工作流引擎会增加基础设施和一套需要学习的编程模型,但正是它避免了一次重试把同一笔付款或同一封邮件发送两遍。 |
| 读工具与写工具按凭据分离 | 单一的宽泛凭据配置起来更简单。分开权限范围则意味着,在收集证据阶段被恶意内容误导的智能体此时并不具备写权限,从而把提示注入的影响控制在有限范围内。 |
