OpenAI推出結構化輸出功能:讓AI生成的JSON更加可靠

OpenAI在其API中新增了結構化輸出功能,大幅提升了AI模型生成有效JSON的可靠性。這項功能不僅讓開發者能更輕鬆地建立穩定的應用程式,還為AI在非結構化輸入中生成結構化資料開闢了新的可能性。

結構化輸出:AI生成JSON的革命性進展

在人工智慧領域,從非結構化輸入中生成結構化資料一直是一個核心應用場景。無論是透過函數呼叫獲取資料、提取結構化資訊進行資料輸入,還是建立多步驟的代理工作流程,開發者們都在不斷探索如何讓AI更好地完成這些任務。

然而,在此之前,開發者們常常需要依賴開源工具、精心設計的提示,甚至反覆嘗試請求,來確保AI模型的輸出能夠符合他們系統所需的格式。這不僅耗時耗力,還可能影響應用程式的穩定性和可靠性。

結構化輸出的突破

OpenAI推出的結構化輸出功能,通過兩種方式解決了這個問題:

  1. 限制模型輸出: 確保AI模型的輸出嚴格遵循開發者提供的JSON模式。
  2. 模型優化: 訓練模型更好地理解和處理複雜的JSON模式。

這項功能的效果令人驚嘆。在複雜JSON模式的評估中,配備結構化輸出功能的新模型gpt-4o-2024-08-06取得了100%的得分,遠超前代模型gpt-4-0613不到40%的成績。

如何使用結構化輸出

OpenAI在API中提供了兩種使用結構化輸出的方式:

1. 函數呼叫

開發者可以在函數定義中設置strict: true來啟用結構化輸出。這適用於所有支援工具的模型,包括gpt-4-0613和gpt-3.5-turbo-0613及更高版本。

2. 回應格式的新選項

開發者可以使用response_format參數的新選項json_schema來提供JSON Schema。這特別適用於模型需要以結構化方式直接回應用戶,而不是呼叫工具時的情況。

結構化輸出的技術原理

OpenAI採用了一種稱為”約束取樣”或”約束解碼”的技術來實現結構化輸出。這種方法將模型的輸出限制在符合提供的JSON模式的有效標記範圍內,從而確保輸出的有效性。

具體實現步驟如下:

  1. 將JSON模式轉換為上下文無關語法(CFG)。
  2. 在取樣過程中,根據之前生成的標記和語法規則,動態確定下一個有效的標記。
  3. 使用這個有效標記列表來遮罩下一個取樣步驟,有效地將無效標記的概率降為零。

這種方法不僅能處理簡單的JSON結構,還能處理涉及嵌套或遞歸資料結構的複雜模式,這是基於有限狀態機(FSM)的方法難以實現的。

結構化輸出的應用場景

結構化輸出功能為開發者開啟了許多新的可能性,以下是一些潛在的應用場景:

  1. 動態生成用戶界面: 根據用戶意圖生成符合特定結構的UI元素描述。
  2. 資料提取與分析: 從非結構化文本中提取結構化資訊,如會議記錄中的待辦事項、截止日期等。
  3. 自動化報告生成: 將原始資料轉換為結構化的報告格式。
  4. 對話系統優化: 確保聊天機器人的回應符合預定義的結構,便於後續處理。

結構化輸出的限制與注意事項

雖然結構化輸出功能強大,但開發者在使用時仍需注意以下幾點:

  • 僅支援JSON模式的子集,詳情請參閱官方文檔。
  • 首次使用新模式可能會有額外延遲,但後續請求將快速響應。
  • 如果模型選擇拒絕不安全的請求,可能無法遵循模式。
  • 達到max_tokens限制或其他停止條件時,可能無法完全遵循模式。
  • 結構化輸出不能防止所有類型的模型錯誤,如數學計算錯誤。
  • 與並行函數呼叫不相容,需設置parallel_tool_calls: false
  • 不符合零資料保留(ZDR)標準。

結構化輸出的可用性

結構化輸出功能現已在OpenAI API中全面可用:

  • 支援函數呼叫的結構化輸出適用於所有支援API中函數呼叫的模型。
  • 支援響應格式的結構化輸出適用於gpt-4o-mini和gpt-4o-2024-08-06及其微調模型。
  • 兼容聊天完成API、助理API和批次API。
  • 支援視覺輸入。

開發者可以通過查閱OpenAI的官方文檔來開始使用結構化輸出功能。

常見問題

  1. Q: 結構化輸出功能如何提高JSON生成的可靠性? A: 結構化輸出通過限制模型輸出和優化模型理解複雜JSON模式的能力,將JSON生成的可靠性提高到了100%。

  2. Q: 結構化輸出功能適用於哪些OpenAI模型? A: 結構化輸出適用於支援函數呼叫的所有模型,包括最新的gpt-4o系列和gpt-3.5-turbo系列。

  3. Q: 使用結構化輸出功能會影響API的響應速度嗎? A: 首次使用新的JSON模式可能會有些許延遲,但後續請求不會受到影響,響應速度很快。

  4. Q: 結構化輸出功能有哪些局限性? A: 主要局限包括只支援JSON模式的子集、無法防止所有類型的模型錯誤,以及與並行函數呼叫不相容等。

  5. Q: 如何開始使用結構化輸出功能? A: 開發者可以查閱OpenAI的官方文檔,了解如何在API調用中啟用和配置結構化輸出功能。

Share on:
Previous: 在 Wix 上善用 Google Workspace 的 Gemini AI:提升小型企業效率的革命性工具
Next: ChatGPT進階語音模式:AI對話革命,你準備好了嗎?
DMflow.chat

DMflow.chat

一站式整合Facebook、Instagram、Telegram、LINE和網站的聊天機器人,支持ChatGPT和Gemini模型,具備保留歷史紀錄、推播通知、行銷活動和客服轉接功能。

13 September 2024

OpenAI o1 模型:解決複雜問題的全新思考型 AI

OpenAI o1 模型:解決複雜問題的全新思考型 AI 突破性的 AI 推理能力,為科學、編程和數學領域帶來革命性進展 OpenAI 最近推出了一系列全新的 AI 模型,旨在解決複雜問題並...