追问与审批
智能体在执行中停下来问用户(追问),或在执行命令、改文件前请用户放行(审批),chatkit 画默认卡片,用户回答后交给适配器继续。
正在加载真实示例…
接入 SOP
前提条件:后端需提供交互请求与答复能力;部分连接协议使用自定义卡片。
- 按协议将问题或审批挂到工具交互信息上。
- 默认卡片走 respond;Codex 等特定连接按对应适配器页提供卡片和回答方式。
- 保留 pending、answering、answered 或取消状态,处理发送失败与重复点击。
验证结果
使用真实后端触发问题,回答后检查执行继续;拒绝或失败后应进入相应状态。
排错入口
Mock 通用对话不能证明审批服务已接通;只读卡片先检查 respond 或连接专用回答函数。
完整文件可从本页示例下载;对应配置参考与公开入口用于核对准确签名。
什么时候出现
适配器在工具调用片段的 metadata['chatkit.interaction'] 上挂交互请求,界面按它画卡片:
回答后追问卡片只留下问题本身,回答显示为一条用户消息(顶部引用被回答的问题),之后的回答另起一条。
回答怎么发出
卡片调用 actions.respond(toolCallId, response)(运行时上是 runtime.respond({ toolCallId, response })):
- 回答作为新的一轮交给适配器的
respond能力函数;有一轮在进行时不受理; - 交互请求立刻标为回答中(
answering),新的一轮有了产出后记为已回答(answered),没受理时退回等待(pending),可以再答; - 适配器没有
respond时卡片只读,选项不可点。
各适配器从协议里怎么认出交互请求、respond 要发什么,见对应的接入页,例如 ADK · 长时工具与追问。
换成自己的卡片
按工具名登记整行接管,默认卡片就不再出现;自己的卡片里用 getChatkitInteraction 读请求,用 useChatkitActions().respond 回答。也可以直接用导出的 ChatkitInteractionCard 包一层: