你要设计一个付款 tool,让 agent 能根据用户请求创建付款单。schema 和执行链路怎么设计?
考察点:考副作用控制。模型可以提出 intent,但不能绕过权限、校验、审批和审计。
7+ 分回答骨架:schema 只接受 payee_id、amount、currency、invoice_id、reason、idempotency_key,不接受 tenant_id、role、approval_status。服务端从 auth context 注入身份并校验金额、收款方、发票状态和权限。先 dry-run 生成付款摘要和风险等级,高风险进入审批;确认后使用幂等键执行并写 audit log。
继续追问会衍生:衍生知识点:schema validation、auth context、dry-run、approval、idempotency、audit log。
知识展开
| 概念 | 是什么 | 工程落点 | 面试表达 / 常见坑 |
|---|---|---|---|
| schema validation | schema validation 只保证字段类型、必填和枚举合法,不保证业务动作安全。 | 在 tool adapter 入口做 JSON schema 校验,然后进入业务校验和权限校验。 | 面试表达:schema 是第一道门,不是安全系统。 |
| auth context | auth context 是服务端可信身份上下文,包括 user_id、tenant_id、role、scope,不应由模型传入。 | 工具执行时从 session/JWT/server context 注入身份,再查 RBAC/ACL。 | 常见坑是让模型传 user_role 或 tenant_id,等于让不可信输入决定权限。 |
| idempotency | 幂等保证同一个业务请求重复执行不会产生重复副作用。 | 写工具接收 idempotency_key,后端以 key 查询已有结果或锁定执行。 | 强回答要把幂等和 retry 连起来:没有幂等就不能安全重试写操作。 |