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" }。完整範例請參閱工具搜尋