結構化輸出

Structured Outputs

強制 LLM 輸出 JSON 等格式

詳細解釋

要求 LLM 生成符合特定結構(JSON Schema、Pydantic 模型)的輸出,而非自由文本。這對於需要將 LLM 輸入解析為程序數據的應用至關重要。

傳統方法的問題:

  • 提示工程:「請以 JSON 格式返回」不一定可靠,模型可能輸出解釋文字再跟 JSON,或 JSON 語法錯誤
  • 後處理:正則表達式提取容易出錯
  • 驗證:需額外檢查輸出是否符合預期結構

結構化輸出技術:

  • 受限解碼:修改採樣過程,僅允許符合語法的 token(如必須先輸出 {)
  • 語法引導:CFG(Context-Free Grammar)限制輸出空間
  • 輪詢修復:生成 → 驗證 → 若錯誤則重試(可能多次)

支持結構化輸出的平台:

  • OpenAI:response_format={"type": "json_object"},或函數調用模式
  • Anthropic:工具使用模式實際上強制結構化
  • Ollama:format 參數指定 JSON schema
  • Instructor:開源庫,包裝任何 LLM 實現結構化輸出

應用場景:

  • API 調用:生成結構化的工具參數
  • 數據提取:從文本提取姓名、日期、金額到 JSON
  • 表單填寫:根據對話自動填充醫療問診表
  • 配置生成:生成 YAML/TOML 配置文件

示例:提取發票信息 → 必須包含 {vendor, amount, date, items[]},每個字段有類型約束。

挑戰:複雜嵌套結構(深度 >3)的可靠性仍有限;強制結構可能降低輸出質量(為了符合語法犧牲內容)。

探索更多AI詞彙

查看所有分類,繼續學習AI知識