把清结算需求交给Agent之前,先写好任务契约
“按这个需求做清结算”不是一份足够安全的Agent任务。金额舍入、币种、重试和审批权限,只要有一项没说清楚,代码写得再像样也可能实现了另一个业务。
我会先把任务压缩成一张可审核的契约。它不追求把业务百科都塞进提示词,而是把这次修改的输入、约束和验收分开。
输入先落到可复现的例子
比如本次只实现人民币订单折扣后的应付金额,金额以“分”的整数表示,折扣以基点表示,10000代表原价。契约明确:不接外部支付,不修改账期,不引入浮点数,非整分结果向下取整。向下取整在这里是教学规则,真实结算必须由业务、财务共同确认。
下面是完整的Python最小例子。它用整数乘除,并在运算前拒绝不在契约里的输入,尤其避免Python把布尔值当作整数接受。
def payable(cents, basis_points): if type(cents) is not int or type(basis_points) is not int: raise TypeError("amount and rate must be integers") if cents < 0 or not 0 <= basis_points <= 10000: raise ValueError("amount or rate out of range") return cents * basis_points // 10000 assert payable(10000, 9500) == 9500 assert payable(101, 5000) == 50 assert payable(0, 10000) == 0 for args in [(-1, 9000), (1, 10001), (True, 9000)]: try: payable(*args) except (TypeError, ValueError): pass else: raise AssertionError(args) print("integer settlement example: passed")把禁止事项写成可检查边界
一个可交给Agent的任务还需要说明:允许修改哪些路径,能运行哪些命令,何时停止并交还给人。比如只允许改金额计算包和单元测试,禁止读取生产凭证,禁止执行迁移和付款请求。输出必须带Diff、测试命令和未覆盖项。
Anthropic在10月20日发布了企业Inference Hooks,可在请求进入模型前接入组织策略检查。它提供了额外的治理接口,但服务端策略无法替代仓库内的业务约束,也不能让一个错误的舍入规则自动变正确。规则由谁批准,仍需要明确。
验收也不要写成“全部测试通过”。本例应逐项检查边界输入、舍入、币种约束和调用方是否重复扣减。若涉及幂等或账务平衡,应增加对应状态模型和集成测试,而不是给这个纯函数起一个“清结算系统”的大名字。
最小通过不等于业务上线
这里的程序只验证整数规则及输入拒绝路径,没有连接数据库、支付通道或真实账本。它可以作为契约中的一个例子,不能证明并发、幂等、退款和审计已经完成。把这段边界写清楚,Agent才知道何时继续,审核人也知道自己究竟批准了什么。
参考
- Anthropic发布记录:Inference Hooks与接口更新
- Inference Hooks文档