For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主导航

函数

定义函数、处理待处理的调用并返回结果。

函数工具让智能体能够调用您的应用程序代码。您定义函数及其参数,智能体发起调用请求,您的代码返回结果,然后执行框架继续执行当前轮次。

您的处理程序可以在应用服务器、工作进程或您控制的环境中运行。将环境关联到会话并不会自动在该环境中运行函数工具。

如果您使用 Responses API 中的函数调用,就可以在此处介绍的会话流程中复用您的函数实现。

定义函数

配置智能体时,将函数定义添加到 agent.tools。为函数指定名称、描述以及定义其参数的 JSON Schema:

{
  "type": "function",
  "name": "get_customer",
  "description": "Look up a customer by ID.",
  "parameters": {
    "type": "object",
    "properties": { "customer_id": { "type": "string" } },
    "required": ["customer_id"],
    "additionalProperties": false
  }
}

处理所需操作

当智能体需要函数结果时,会话会发出 agent.session.requires_action 事件。从 event.session.required_actions 中读取待处理的调用。您也可以不使用流式传输,而是获取会话并读取 session.required_actions

required_actions 中的函数条目如下所示:

{
  "type": "function_call",
  "turn_id": "turn_123",
  "call_id": "call_123",
  "name": "get_customer",
  "arguments": { "customer_id": "123" }
}

使用提供的参数运行指定名称的函数。根据 required_actions 判断哪些调用需要返回结果;仅凭会话历史中的 function_call 条目,无法确定某个调用是否仍在等待结果。

返回结果

会话事件端点发送 agent.session.input.tool_result。从待处理操作中复制 turn_idcall_id

  • 成功时,设置 success: true,并以字符串或受支持的内容数组形式提供 output。请将 JSON 对象序列化为字符串。
  • 出错时,设置 success: false,并在 error 中提供智能体可以使用的错误消息。

对于每个待处理的 get_customer 调用,执行查询并返回结果。这里的 actionrequired_actions 中的条目:

返回函数结果
const result = {
  turn_id: action.turn_id,
  call_id: action.call_id,
};
let outcome;

outcome = {
  success: true,
  output: JSON.stringify(getCustomer(action.arguments)),
};

await client.beta.agents.sessions.events.create(sessionId, {
  events: [
    { type: "agent.session.input.tool_result", ...result, ...outcome },
  ],
});

执行框架收到所需结果后,会继续执行当前轮次。跟踪会话事件和条目,以检查该轮次的执行结果并获取其输出。

断开连接后恢复

获取会话以查找待处理操作。如果您已经运行过某个函数,请使用相同的 turn_idcall_id 提交已保存的结果。

对于有副作用的函数,请按会话、轮次和调用 ID 持久化存储结果。如果函数可能已执行成功,但未保存结果,请先核实执行结果,再重新运行函数。

按需加载函数

函数默认会预先加载。要延迟加载某个函数,请在其定义中设置 defer_loading: true,并在 agent.tools 中添加 { "type": "tool_search" }。完整示例请参阅工具搜索