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

OpenAI API 中的函數調用

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

更新日期:6 days ago

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

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

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

我們於 2024 年 6 月推出了結構化輸出內容。當你在函數定義中設定 `strict: true` 以啟用此功能時,結構化輸出內容可保證模型為函數調用產生的引數,會與你在函數定義中提供的 JSON Schema 完全一致。

我們於 2024 年 10 月推出「Generate Anything」功能,讓開發者可描述一個函數、直接貼上該函數,或貼上你的程式碼,並產生有效的函數結構定義。有關「Generate Anything」的詳情,請參閱此說明中心文章

我可以如何使用函數調用?

函數調用適用於大量使用情境,例如:

  • 讓助手擷取資料

    • 當使用者問「我最近有哪些訂單?」時,AI 助手需要先從內部系統擷取最新的客戶資料,之後才能向使用者產生回應。

  • 讓助手採取行動

    • AI 助手需要根據使用者偏好及行事曆空檔安排會議。

  • 讓助手執行運算

    • 數學導師助手需要進行數學運算。

  • 建立豐富工作流程

    • 例如一個資料擷取流程會先抓取原始文字,然後將其轉換為結構化資料,再儲存到資料庫。

函數調用支援於 Responses API,此 API 整合了以往分散在 Chat Completions APIAssistants API 的功能。

我可以如何使用 JSON 模式?

啟用 JSON 模式後,除了你應偵測並妥善處理的某些邊緣情況外,模型的輸出會確保為有效的 JSON。

若要透過 Responses API 或 Chat Completions API 要求使用 JSON 模式,你可在支援的模型上將 response_format 設為 { "type": "json_object" };但這只會在滿足模型/訊息/工具的前提條件時生效(例如模型支援 json_object、對話包含產生 JSON 的指示,以及任何工具限制均相容)。如要以 response_format: {"type": "json_object"} 使用 JSON 模式,至少有一則請求訊息必須以某種形式包含 json,例如 JSONjsonJson;否則 API 會回傳錯誤。當在相容的模型/路徑上使用函數調用時,JSON 限制會自動套用至函數調用引數;不相容的模型或工具/回應格式組合可能會遭拒絕,或不會使用受 JSON 約束的抽樣。

重要注意事項:

  • 使用 JSON 模式時,你必須始終透過對話中的某則訊息指示模型產生 JSON,例如在系統訊息中說明。如果你沒有加入明確指示來產生 JSON,模型可能會持續輸出無止境的空白字元,而請求亦可能一直執行,直到達到 token 上限。為協助確保你不會忘記,JSON 模式會拒絕相關輸入訊息或指示未以任何大小寫形式包含 json 一詞的請求。

  • JSON 模式不會保證輸出符合任何特定結構定義,只會保證其為有效內容並可在不出錯的情況下剖析。你應使用結構化輸出內容以確保其符合你的結構定義;若無法這樣做,則應使用驗證函式庫,並在需要時重試,以確保輸出符合你所需的結構定義。

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

這篇文章對你有幫助嗎?