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

OpenAI API 中的函數調用

甚麼是函數調用?它如何在 OpenAI API 中運作?

更新日期:13 days ago

截至 2025 年 3 月 11 日,我們已推出全新智能代理平台的基礎組件。詳情請參閱我們的 API 文件,包括Responses API、工具(包括Web SearchFile SearchComputer Use),以及附有TracingAgents SDK

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

請在我們的 函數調用開發者指南 中了解更多。

2024 年 6 月,我們推出了結構化輸出內容。當你在函數定義中設定 strict: true 來啟用它時,結構化輸出內容可保證模型為函數調用產生的引數,會與你在函數定義中提供的 JSON 結構定義完全相符。

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 物件的邊緣情況(見下文)

這篇文章對你有幫助嗎?