iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
自我挑戰組

從 Google AI Studio 玩轉提示工程的 30 天實戰修煉系列 第 8 篇

Day 08:拒絕胡言亂語:使用 Structured Output 讓 AI 乖乖輸出標準 JSON

  • 分享至 

  • xImage
  •  

進入第二週,我們要從單純的「人類對話」跨入「系統工程對接」。在開發後端系統或自動化流程時,工程師最怕的不是 AI 回答錯誤,而是 AI 輸出格式不穩定——一下多幾句「好的,這是你要的 JSON:」,一下漏了雙引號,導致整個後端程式 JSON.parse() 瞬間報錯崩潰。
今天我們要在 Google AI Studio 裡開啟一個工程級神器:Structured Output(結構化輸出),強制模型輸出 100% 合法的 JSON 格式。
傳統 Prompt 限制 JSON 的痛點 vs. Structured Output

  • 傳統做法(純靠 Prompt 約束):
    • 在提示詞寫上:「請只輸出 JSON,不要包含任何 Markdown 標記、前後贅字或解釋」。
    • 隱憂:模型高興時遵守,偶爾還是會忍不住附贈代碼區塊或是「希望這對你有幫助!」等開頭結尾客套話,解析器依然容易閃退。
  • Structured Output 機制:
    • 這是從模型底層限制 Token 生成的機制(Constrained Decoding)。
    • 開啟後,模型根本無法產出不符合指定 Schema 的任何文字,確保 100% 格式合法,零贅字、零 Markdown 標籤包裹。
      Google AI Studio 實測對照實驗:病患就醫紀錄結構化抽取
      假設我們有一段雜亂的門診病患主訴口述,需要自動提取為後端資料庫可直接落庫的標準格式。

測試文本(User Input):
病患林阿姨(62歲女性)今早因劇烈頭痛前來就診,自述疼痛感已持續三天,伴隨噁心但無發燒,血壓測量為 145/90 mmHg,體溫 36.8 度。對阿斯匹靈有過敏史。

實驗 A:一般對話要求輸出 JSON(對照組)

  • 操作方式:右側面板保持預設,不開任何開關。

  • User Prompt:請從以下文本提取病患資訊,並轉為 JSON 格式輸出:
    病患林阿姨(62歲女性)今早因劇烈頭痛前來就診,自述疼痛感已持續三天,伴隨噁心但無發燒,血壓測量為 145/90 mmHg,體溫 36.8 度。對阿斯匹靈有過敏史。

  • 預期表現:模型通常會在前後附帶「好的,以下是提取出的 JSON 資料:」或使用json 程式碼區塊包裹,不是純文字 JSON。

  • 實際結果:https://ithelp.ithome.com.tw/upload/images/20260922/20178834GP2Kq4ASqb.jpg
    實驗 B:開啟 Structured outputs(實驗組)

  • 操作步驟:

    1. 在右側面板找到 Tools 區塊中的 Structured outputs。
    2. 將右邊的開關切換為 開啟(Toggle On)。
    3. 點擊 Edit 按鈕,在跳出的彈窗中定義 JSON Schema(或直接貼上以下 JSON Schema):
      {
      "type": "object",
      "properties": {
      "patient_name": { "type": "string" },
      "age": { "type": "integer" },
      "gender": { "type": "string" },
      "chief_complaint": { "type": "string" },
      "symptoms": {
      "type": "array",
      "items": { "type": "string" }
      },
      "vitals": {
      "type": "object",
      "properties": {
      "blood_pressure": { "type": "string" },
      "body_temperature": { "type": "number" }
      },
      "required": ["blood_pressure", "body_temperature"]
      },
      "allergies": {
      "type": "array",
      "items": { "type": "string" }
      }
      },
      "required": ["patient_name", "age", "gender", "chief_complaint", "symptoms", "vitals"]
      }
      https://ithelp.ithome.com.tw/upload/images/20260922/20178834yFliuXgwTz.jpg
  • 預期表現:模型輸出的內容完全沒有任何引言、客套話或代碼區塊。

  • 輸出的是一個純淨、鍵名與型別完全符合規格的 JSON 物件。

  • 實際結果:https://ithelp.ithome.com.tw/upload/images/20260922/20178834hixykqLnKp.jpg

今日結語建議
從「文本生成」走向「系統串接」,最重要的一步就是消除不確定性。透過 Google AI Studio 內建的 Structured Output,我們不再需要透過反覆恐嚇模型「不准多說一句話」,而是直接在語法生成樹上建立硬性約束。這項功能是將 AI 融入自動化工作流、微服務與資料庫的核心基石!


上一篇
Day 07:少走彎路:常見的提示詞設計雷區與反模式(Anti-patterns)
下一篇
Day 09:Few-shot with JSON:透過範例精準控制巢狀資料結構
系列文
從 Google AI Studio 玩轉提示工程的 30 天實戰修煉 共 19 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言