拆问:和智能体有何不同、并行调用、如何强制某个函数。本页用库存查询当案例。
把工具写窄#
一个函数做一件事。get_inventory(sku) 比 do_anything(query) 更不容易被乱用。描述里写清何时不要调用。枚举合法仓库代码。
const tools = [{
type: 'function',
function: {
name: 'get_inventory',
description: 'Look up on-hand quantity for one SKU. Do not call for price history.',
parameters: {
type: 'object',
additionalProperties: false,
required: ['sku'],
properties: { sku: { type: 'string' } },
},
},
}];执行循环#
解析 tool_calls,校验 sku 格式,查库,返回短 JSON。并行调用时按 id 对齐。超过 N 步或同一 sku 连查三次就停,转为人工。不要把数据库错误栈原样喂给模型。
鉴权在你这边#
模型给的参数不可信。执行层检查当前用户是否允许该 sku。禁止提供“任意 SQL”工具。写操作要二次确认或只允许幂等更新。
何时升级到智能体#
单轮或两三轮工具用函数调用足够。需要计划、子代理、计算机使用时再上 Agents SDK。不要因为演示好看就把每个 CRUD 都叫智能体。
要点#
- 工具窄、参数校验、循环有上限。
- 副作用鉴权发生在服务器。
- 多步编排才需要智能体框架。