精華筆記

· @aihub.tw

Prompt Engineering 大全

結構化輸出:表格、JSON、清單,結果直接能用

結構化輸出:表格、JSON、清單,結果直接能用

你有沒有試過請 AI 幫你整理一份比較表,然後拿到一大段散文——工具名稱、優缺點、定價全部混在一起,你還要自己再整理一次才能用?

這不是 AI 的錯,是 Prompt 沒有告訴它「用什麼形狀把答案裝回來給我」。一旦你學會指定輸出格式,整個工作流程就會從「AI 幫你草稿,你再整理」變成「AI 直接給你可用的結果」。這才是真正省時間的用法。

這堂課適合誰 適合:想讓 AI 輸出直接可貼進 Sheets 或 Notion 的表格、清單、JSON 的所有人。需要基礎:零基礎 OK,但建議先讀第 2 課了解 Prompt 四要素。前置課:第 3 課(給範例的威力)。

這堂學什麼

  • 什麼是結構化輸出,與散文輸出的差異
  • 為什麼要求格式能減少 AI 幻覺(不是魔法,是邏輯)
  • Markdown 表格、JSON、清單三種格式的具體 Prompt 寫法
  • 2026 年 Claude、ChatGPT、Gemini 三家 AI 的結構化輸出能力現況
  • 實戰:把雜亂資訊整理成可貼的 Google Sheets 表格 + Notion 頁面

觀念一:散文 vs. 結構化輸出

同一個問題,AI 預設會給你散文——因為「寫一段話說明」是它訓練時最常做的事。要拿到結構,你得主動說你要什麼形狀。

同樣的問題,兩種截然不同的回答

看左右兩邊的差距:左邊的散文要你再讀一遍、自己提取資訊;右邊的表格可以直接 Ctrl+C 貼走。兩者用的資訊量完全一樣,差別只在你有沒有告訴 AI 輸出格式。

這是整堂課最重要的一句話:輸出格式不是裝飾,它決定了你拿到的結果能不能直接用。

觀念二:為什麼結構化輸出能減少幻覺

很多人問:「要求格式跟準確度有什麼關係?」有,而且關係很直接。

為什麼結構化輸出能減少幻覺?

核心邏輯是三層:

第一層:格式限制了「胡說的空間」。當你要求「price 欄位只填金額」,AI 不能在那個格子裡塞一段感想或模糊的描述,只能填具體數字或寫「N/A」。沒有文字空間,幻覺就沒有地方躲。

第二層:每個欄位是獨立判斷。散文輸出時,AI 是線性生成的——前一句的「氣氛」會帶著它往下走,容易滾雪球加入不確定的細節。表格強迫它逐欄獨立思考:「這格我有把握嗎?」沒把握的欄位更容易留空或給保守答案。

第三層:你更快發現錯誤。幻覺不會消失,但結構讓你一眼掃過表格就能注意到異常值(例如定價欄位出現「非常實惠」這種文字),而不是在一大段文字裡找錯。核查效率提升,等於出錯成本降低。

結構化輸出不保證零幻覺,但把你「能及時發現」的機率大幅提高。遇到重要數字(定價、日期、統計資料),貼進去之前一定要人工確認。

觀念三:三家 AI 的結構化輸出能力(2026 現況)

在你開始實戰之前,先知道手上的工具各有什麼特性:

三家 AI 的結構化輸出方式對照

重點整理:

  • ChatGPT(GPT-5 系列):透過 API 可開啟 json_schema 嚴格模式,保證輸出 100% 符合你定義的 JSON 結構——這是目前最強的技術約束。對話介面則靠 Prompt 指定。
  • Gemini(2.5 Flash / Pro):API 支援 responseSchema 參數;對話介面 Prompt 表現穩定。
  • Claude(Sonnet / Opus):對話 Prompt 指定格式可高度穩定;搭配 <example> XML 標籤給樣板效果最好。API 層自 2025 年 11 月起也推出 Structured Outputs,可保證輸出 100% 符合你定義的 JSON schema(一般用戶在對話介面用 Prompt 就夠了)。

這門課主要教你在對話介面用 Prompt 控制格式——三家 AI 都適用,不需要會寫程式。

手把手實戰

以下從最簡單的表格開始,逐步到 JSON、清單,最後走完貼進 Sheets 和 Notion 的完整流程。

結構化 Prompt 的解剖

先看一個完整 Prompt 的結構:

結構化 Prompt 的解剖圖

四個零件:角色設定、輸出格式宣告、任務與素材、格式約束規則。這個順序不是隨意的——輸出格式宣告要在任務之前出現,AI 才能在生成時就帶著「格式框架」去組織答案,而不是答完再套格式。

Step 1:Markdown 表格——最常用格式

Markdown 表格是最容易貼進 Notion 的格式,也是 Google Sheets 加上一個步驟就能用的格式。

Prompt 範例:工具比較表

你是一位科技工具研究員。

請以 Markdown 表格輸出,欄位依序為:工具名稱 | 月費(美元) | 有無免費版 | 最適合誰 | 一句話亮點
不輸出表格以外的文字,不輸出說明段落。

若某欄位資訊不確定或沒有公開資料,填「待確認」。
月費欄位格式統一為「$X/月」,免費版填「有」或「無」。

請比較以下工具:Notion、Trello、Asana、ClickUp、Linear

你會拿到一個乾淨的 Markdown 表格,長這樣:

| 工具名稱  | 月費(美元) | 有無免費版 | 最適合誰     | 一句話亮點         |
|-----------|-----------|-----------|--------------|-------------------|
| Notion    | $10/月     | 有        | 個人與小團隊 | 全能筆記+資料庫    |
| Trello    | $5/月      | 有        | 小型團隊     | 看板式最直覺       |
| Asana     | $11/月     | 有(限制版)| 中大型團隊   | 時間表任務追蹤     |
| ClickUp   | $7/月      | 有        | 進階用戶     | 客製化彈性最高     |
| Linear    | $8/月      | 有        | 工程團隊     | 專為軟體開發設計   |

關鍵寫法重點:

  • 說「欄位依序為」+列出所有欄位名稱——AI 知道要幾欄、叫什麼
  • 加「不輸出表格以外的文字」——去掉 AI 愛加的「希望以上比較對你有幫助!」
  • 說明空值規則「待確認」——避免 AI 亂填

Step 2:JSON 格式——白話版 schema

JSON 適合要給程式處理的場景,或者你在建自動化流程時。很多人聽到 JSON 就怕,但你不需要懂程式——你只要懂「這個格子叫什麼名字、裝什麼東西」就夠了。

白話 JSON 的三個概念:

{}  = 一筆資料(一個物件)
[]  = 很多筆(陣列)
"key": "value"  = 欄位名稱:欄位值

Prompt 範例:輸出 JSON

你是產品資料整理員。

請以 JSON 格式輸出,不輸出任何 Markdown、不加 code block,直接輸出純 JSON。
格式如下:
{
  "tools": [
    {
      "name": "工具名稱",
      "monthly_price_usd": 數字或 null,
      "has_free_plan": true 或 false,
      "best_for": "最適合對象(一句話)",
      "highlight": "亮點(一句話)"
    }
  ]
}

若月費未知填 null,若有免費版填 true,否則 false。

請整理:Notion、Trello、Asana

你會拿到這樣的輸出,可以直接餵給程式或自動化工具:

{
  "tools": [
    {
      "name": "Notion",
      "monthly_price_usd": 10,
      "has_free_plan": true,
      "best_for": "個人與小型團隊",
      "highlight": "全能筆記加資料庫一體"
    },
    {
      "name": "Trello",
      "monthly_price_usd": 5,
      "has_free_plan": true,
      "best_for": "小型團隊",
      "highlight": "看板式管理最直覺"
    },
    {
      "name": "Asana",
      "monthly_price_usd": 11,
      "has_free_plan": true,
      "best_for": "中大型團隊",
      "highlight": "時間表與任務追蹤並重"
    }
  ]
}
Claude 的最佳招式 在 Claude 裡,把 JSON 格式範例包在 XML 標籤裡效果最穩定: ```text 請以 JSON 輸出,格式如下: {"name": "...", "price": ..., "free": true} 不輸出其他文字。 ``` 這是 Claude 官方建議的 few-shot 寫法,格式命中率大幅提高。

Step 3:清單與編號格式

清單是最簡單的結構化格式,適合「行動步驟」「優缺點列舉」「待辦事項」等場景。

Prompt 範例:行動清單

我要開始學習 Python。

請用以下格式輸出一份 30 天學習計畫:

**第 1 週:基礎語法(第 1–7 天)**
- 第 1 天:XXX(預計 30 分鐘)
- 第 2 天:XXX(預計 30 分鐘)
...

每週一個大標題,每天一個 bullet,括號內填預計學習時間。
只輸出計畫本體,不輸出說明或前言。

優缺點對照清單:

請列出遠端工作的優點與缺點。

格式:
**優點**
1. ...
2. ...
3. ...

**缺點**
1. ...
2. ...
3. ...

每點一句話,不超過 20 個字。共各列 5 點。

清單格式的關鍵:說清楚「幾個點」「每點幾字」「有沒有大標題分組」。越具體,輸出越整齊。

Step 4:貼進 Google Sheets

拿到 Markdown 表格後,貼進 Google Sheets 有兩種方法:

方法 A:直接貼(最快,瀏覽器版)

  1. 複製 AI 輸出的整個 Markdown 表格(含 | 符號)
  2. 到 Google Sheets,點一個空白儲存格
  3. Ctrl+V 貼上

瀏覽器版 Google Sheets 通常能識別 Markdown 表格語法,自動拆分欄位。如果貼進去變成一整行文字,試方法 B。

方法 B:改用 TSV 格式(更乾淨)

直接告訴 AI 輸出 TSV(用 Tab 分隔,不用 |):

請以 TSV(Tab 分隔值)輸出,第一行是欄位名稱,不加任何多餘符號。
欄位:工具名稱、月費、免費版、適合對象

TSV 貼進 Google Sheets 時會自動分欄,乾淨俐落。

方法 C:JSON 轉 Sheets

如果拿到的是 JSON,可以用 Google Sheets 內建函數轉換,或者把 JSON 直接餵給同一個 AI:

請把以下 JSON 轉成 CSV 格式(第一行欄位名稱用英文,其餘資料用逗號分隔):
[貼上你的 JSON]

拿到 CSV 後存成 .csv 檔,在 Google Sheets 點「檔案 → 匯入」。

Step 5:貼進 Notion

Notion 對 Markdown 表格的支援是三者中最直接的:

  1. 複製 AI 輸出的 Markdown 表格
  2. 到 Notion 頁面,點一個空行
  3. Ctrl+V 直接貼——Notion 會自動把 Markdown 表格轉成 Notion 表格

如果貼出來只是文字,試這個方法:先在 Notion 輸入 /table,建立一個空白表格,再把資料逐欄貼入。

進階:貼清單

編號清單和 Bullet 清單在 Notion 裡貼上也能自動識別格式。但如果 AI 輸出的是 - 開頭的清單,Notion 有時會全部合成一個 block。解法:貼進 Notion 後,全選那段文字,點右鍵 → 「Turn into → Bulleted List」。

從 AI 輸出到直接可用的完整流程

核查習慣要養成:不管格式多整齊,定價、日期、統計數字這類欄位一定要人工點開原始資料核對。結構化輸出讓你核查更快,不是讓你跳過核查。

實戰:把雜亂資訊整理成可貼表格

現在把以上全部整合成一個完整場景:你有一份雜亂的會議紀錄,要整理成可貼的行動清單。

輸入:雜亂會議紀錄

8月開放Beta版本、先做官網SEO優化、Tina負責社群貼文三篇、要找KOL合作、
預算還沒確定、Jason去談廣告投放方案、要在7月底前把demo影片錄好、
用戶問卷要在Beta前兩週發出、行銷組需要logo定案

Prompt:整理成行動表格

你是專案管理助理。

以下是雜亂的會議討論摘要,請幫我整理成行動清單表格。

請以 Markdown 表格輸出,欄位:待辦事項 | 負責人 | 截止日期 | 狀態
- 負責人未提到的填「待指派」
- 截止日期未提到的填「待確認」
- 狀態欄統一填「未開始」
- 不輸出表格以外的文字

以下是會議摘要:
[貼上你的雜亂文字]

AI 會輸出這樣的表格:

| 待辦事項            | 負責人 | 截止日期     | 狀態   |
|--------------------|--------|-------------|--------|
| 官網 SEO 優化       | 待指派  | 待確認      | 未開始 |
| 社群貼文三篇        | Tina   | 待確認      | 未開始 |
| 找 KOL 合作方案     | 待指派  | 待確認      | 未開始 |
| 廣告投放方案洽談    | Jason  | 待確認      | 未開始 |
| Demo 影片錄製       | 待指派  | 7 月底      | 未開始 |
| 用戶問卷設計與發送  | 待指派  | Beta 前兩週  | 未開始 |
| Logo 定案           | 行銷組  | 待確認      | 未開始 |

這個表格可以直接貼進 Notion 或 Google Sheets,你只需要填上缺少的截止日期和負責人——AI 把結構做好了,你做最後的判斷。

常見坑

坑 1:AI 輸出表格,但前後多了一大段說明文字

症狀:表格出現了,但上面有「以下是我整理的比較表格:」,下面有「希望這份整理對您有所幫助!以下是一些補充說明……」

解法:在 Prompt 裡明確加這句話:

只輸出表格本體,不輸出任何說明、前言、結語或標題。

如果還是出現,再加:

第一個字必須是 |,最後一個字必須是 |。

強制讓 AI 從表格開始、以表格結束。

坑 2:要求 JSON,但 AI 在 JSON 外面包了 Markdown code block

症狀:輸出長這樣:

```json
{
  "tools": [...]
}
```

如果你要把這個 JSON 直接餵給程式,外面那兩行 ```json``` 會讓程式解析失敗。

解法:Prompt 裡加:

直接輸出純 JSON,不要加 Markdown code block,不要加 ```json 標記。

或者更直接:

第一個字元必須是 {,最後一個字元必須是 }。

坑 3:欄位名稱、格式每次不一樣

症狀:你問了三次類似的問題,AI 第一次輸出「工具名稱」,第二次輸出「名稱」,第三次輸出「product_name」——欄位名稱每次不同,貼進同一張 Sheets 就對不上。

解法:把你要的欄位名稱用引號明確列出,AI 會照你給的名稱輸出:

欄位名稱依序為:「工具名稱」、「月費(美元)」、「有無免費版」、「最適合誰」

引號讓 AI 知道這些是要照抄的字串,不是描述性說明。

坑 4:JSON 輸出結構不對,數字變成字串

症狀:你要求 "price": 數字,但 AI 輸出 "price": "10""price": "10 美元/月"——這在程式裡型別就錯了。

解法:在 Prompt 裡說清楚型別:

monthly_price_usd:純數字(integer),若不確定填 null
has_free_plan:布林值 true 或 false

或者直接在 schema 範例裡示範:

格式範例:
{"name": "Notion", "monthly_price_usd": 10, "has_free_plan": true}

給一個完整的具體範例,比說一百遍「要數字」更有效。

坑 5:表格列數跟你給的清單對不上

症狀:你給了 10 個工具要比較,但 AI 只輸出 7 行,漏掉了 3 個。

解法:在 Prompt 結尾加這句:

確認每個工具都有一列,共 10 列。

如果列數很多,可以分批處理——每次請 AI 比較 5 個,再拼起來——比讓 AI 一次處理 20 個更穩定。

作業

  1. 選一個你最近在用或想用的工具類別(電子報工具、設計軟體、記帳 App 都行),用本課的 Prompt 範例讓 AI 輸出一份可以貼進 Sheets 的比較表格,至少 5 個工具 4 個欄位。
  2. 把你工作或生活中一份雜亂的待辦清單(通訊軟體訊息截圖打字也行)餵給 AI,用本課的整理 Prompt 輸出成有「負責人、截止日期、狀態」三欄的行動表格。
  3. 進階挑戰:把同一份資料讓 AI 輸出 JSON 格式,然後再用一個新的 Prompt 把 JSON 轉回成 CSV,貼進 Google Sheets 完成匯入。

下一課預告

能讓 AI 輸出整齊的單一結果,是很重要的基礎——但真實工作裡最難搞的任務往往不是一問一答能解決的:寫一份報告、規劃一個專案、分析一個複雜問題……直接丟給 AI,它要麼回答太淺、要麼答非所問。

第 5 課教你拆步驟與追問:把複雜任務切成 AI 能處理的小塊,用連環追問讓它一步一步做到你要的深度。你會發現「多問幾次」不是笨方法,是正確方法。

#Prompt Engineering#結構化輸出#JSON#Google Sheets#Notion#新手

← 回所有文章