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

OpenAI API 中的函數調用

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

更新日期:4 days ago

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

函數調用讓你可將 OpenAI 模型連接至外部工具和系統。這可用於多種用途,例如賦予 AI 助理更多能力,或將你的應用程式與大型語言模型深度整合。

詳情請參閱函數調用開發者指南

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

這篇文章對你有幫助嗎?