OpenAI
此頁面由機器翻譯。查看原始英文文章

OpenAI API 中的函式呼叫

什麼是函式呼叫?它在 OpenAI API 中如何運作?

更新日期:8 days ago

截至 2025 年 3 月 11 日,我們已發布全新 Agents 平台的基礎建構元件。詳情請參閱我們的 API 文件,內容涵蓋Responses API、工具(包括Web SearchFile SearchComputer Use),以及包含TracingAgents SDK

函式呼叫可讓你將 OpenAI 模型連接到外部工具與系統。這對許多事情都很有用,例如賦予 AI 助理各種能力,或在你的應用程式與 LLM 之間建立深度整合。

請參閱我們的函式呼叫開發人員指南以瞭解更多資訊。

2024 年 6 月,我們推出了結構化輸出。當你在函式定義中設定 strict: true 來開啟它時,結構化輸出可保證模型為函式呼叫產生的引數會精確符合你在函式定義中提供的 JSON Schema。

2024 年 10 月,我們推出了「生成任何內容」功能,讓開發人員可以描述函式、直接貼上函式,或貼上你的程式碼並產生有效的函式結構描述。請在這篇說明中心文章中進一步瞭解「生成任何內容」

如何使用函式呼叫?

函式呼叫適用於大量使用案例,例如:

  • 讓助理擷取資料

  • 讓助理採取動作

  • 讓助理執行運算

  • 建構豐富的工作流程

  • 擷取原始文字,接著將其轉換為結構化資料並儲存到資料庫的資料擷取管線。

函式呼叫受 Responses API 支援,該 API 統一了先前分散於 Chat Completions APIAssistants API 的功能。

如何使用 JSON 模式?

開啟 JSON 模式時,模型的輸出會確保為有效的 JSON,但某些邊緣情況例外;你應偵測並妥善處理。

若要透過 Chat Completions API 要求 JSON 模式,請在支援的模型上將 response_format 設為 { "type": "json_object" }。使用 Responses API 時,請在適用情況下將 text.format 設為 { "type": "json_object" },例如 text: { "format": { "type": "json_object" } }。在任一 API 中,JSON 模式只有在符合模型、訊息和工具的先決條件時才會運作(例如,模型支援 json_object、對話包含產生 JSON 的指示,且任何工具限制皆相容)。在有效輸入內容中,至少一則請求訊息或輸入訊息必須包含不區分大小寫形式的 json,例如 JSONjsonJson;否則 API 會傳回錯誤。在 Responses 中,僅有最上層的 instructions 欄位並不足以通過此驗證。在相容的模型/路徑上使用函式呼叫時,JSON 限制會自動套用至函式呼叫引數;不相容的模型或工具/回應格式組合可能遭到拒絕,或可能不使用受 JSON 限制的取樣。

重要注意事項:

  • 使用 JSON 模式時,你必須一律透過對話中的某則訊息指示模型產生 JSON,例如透過你的系統訊息。如果未包含產生 JSON 的明確指示,模型可能會產生無止盡的空白字元串流,而請求可能會持續執行,直到達到 Token 限制。為協助確保你不會忘記,除非相關輸入訊息或指示中包含某種形式且不區分大小寫的 json 一詞,否則 JSON 模式會拒絕請求。

  • JSON 模式不保證輸出符合任何特定結構描述,只保證其為有效且可剖析而無錯誤。你應使用結構化輸出以確保其符合你的結構描述;若無法這麼做,則應使用驗證程式庫,並視需要重試,以確保輸出符合你想要的結構描述。

  • 你的應用程式必須偵測並處理可能導致模型輸出不是完整 JSON 物件的邊緣情況(見下文)

這篇文章有幫助嗎?