結構化大型語言模型¶
結構化大型語言模型任務和一般 LLM 任務類似,但會強制模型把回應整理成你指定的 JSON Schema 結構,方便後續步驟直接用程式取值,不必再從自由文字裡剖析。
它和一般 大型語言模型 任務一樣非常常用,差別只在「多了一份輸出結構」。提示詞(系統提示詞、使用者訊息、樣板)的寫法與一般 LLM 完全相同,本頁先帶你看特有的 JSON Schema 欄位,再用「怎麼寫提示詞」補上結構化任務特有的提示詞技巧。
這頁能幫你做什麼¶
- 讓模型輸出固定欄位的 JSON(例如把客訴內容拆成「分類」「情緒」「摘要」)。
- 從非結構化文字擷取結構化資料,直接餵給資料庫或 API(例如從合約抽出「甲方」「乙方」「金額」「到期日」)。
- 確保下游步驟拿到的資料格式穩定、可預期。
本頁只說明結構化 LLM 任務特有的欄位(主要是輸出結構 Schema 與相應的提示詞技巧)。名稱、附註、下一個狀態、輸入與輸出、錯誤處理及共用開關,集中在 任務通用設定。
開始前¶
需要先建立 LLM 資源
與 LLM 任務相同,必須綁定一個已建立的 大型語言模型 (LLM) 資源。如何建立請見 LLM 資源。
操作步驟¶
-
在工作流程編輯器中新增一個 結構化大型語言模型 任務(如何新增請見 任務使用指南)。

-
填入「名稱」。
-
在「大型語言模型」選擇 LLM 資源(可用調整()圖示覆寫系統提示詞與模型參數)。

這個對話框與大型語言模型任務共用(圖中的標題是示範用的模型名稱)。「最大 Token 數」「溫度」「Top P」「Top K」四項左側各有勾選框,要先勾起來滑桿才拉得動,詳見大型語言模型任務的特有欄位。
-
在「對話」表格加入訊息,引導模型要產生什麼內容(提示詞寫法見下方教學)。
-
在「JSON Schema」定義你要的輸出結構。預設是一張視覺化建構器表格,欄位為「名稱」「類型」「必填」「可空」;不必會寫 JSON 也能用(詳細操作見下方 JSON Schema 建構器怎麼用):

-
視需要展開「進階任務設定」設定 Guardrail、備用模型、允許重試等。

-
設定「下一個狀態」,必要時填「附註」。
- 用「測試任務」按鈕()試跑,確認輸出符合 Schema。
JSON Schema 建構器怎麼用¶
「JSON Schema」欄位預設是一張視覺化建構器表格,四欄分別是「名稱」「類型」「必填」「可空」。它的操作方式和一般表格不一樣,第一次用最容易卡在這裡:
- 新節點不是空表格:一加上節點,表格裡就已經有一列名為
my_property(類型「字串」、必填「是」、可空「否」)的示範欄位。記得把它改成你真正要的欄位,不改的話模型的輸出就會多一個叫my_property的欄位。 - 表格上的字是唯讀的,點了不會有反應:包含「必填」「可空」那兩顆綠色/灰色的「是」「否」,它們只是顯示目前的狀態,直接點不會切換。
-
要改內容,點該列的 鉛筆鈕,會開出一個「編輯屬性」對話框,在裡面改完按右上角的「儲存」才會寫回表格(按「放棄」則不套用)。對話框的欄位:
欄位 必填 說明 類型 是 這個欄位的型別,下拉共八種:字串、數字、整數、布林值、陣列、物件、檔案、空值。日常最常用的是「字串」與「數字」;要放巢狀結構才選「物件」或「陣列」。 名稱 是 欄位名(例如 summary),也就是模型回傳的 JSON 裡的鍵名。必填 否 開關。開啟代表模型一定要回這個欄位。 可空 否 開關。開啟代表允許這個欄位的值是 null。對話框底部還有一個「進階設定」摺疊區塊,展開後可填「標題」「描述」「列舉」「預設值」「最小長度」「最大長度」——本頁後面建議你多寫的「欄位說明」與
enum,就是填在這裡,不必為了它們切到 JSON 模式。 -
新增一列:按表格下方的 圖示鈕,就多一個輸出欄位。
- 多層結構:每一列左側都有展開箭頭();型別選「物件」或「陣列」時展開,才能在裡面繼續加子欄位。
- 面板太窄就放寬:設定面板原本只有約 400 像素寬,表格塞不下會往右捲,「必填」「可空」要點表格右緣的 箭頭才看得到。按面板頂部的最大化鈕()放寬後四欄一次看得完(上方截圖就是放寬後的樣子),編輯 Schema 時建議都先放寬。
- 想直接貼一份現成的 JSON Schema:把滑鼠移到「JSON Schema」欄位上,標籤右側會出現「JSON」開關,打開後欄位會變成 JSON 編輯器(本頁後面的範例就是這個模式)。
結構化 LLM 任務特有欄位¶
設定分頁¶
| 欄位 | 必填 | 預設 | 說明 |
|---|---|---|---|
| 大型語言模型 | 是 | 無 | 選擇這次呼叫要用的 LLM 資源,可用旁邊的調整()圖示覆寫系統提示詞與模型參數。也可切換為從工作流程輸入帶入。 |
| 對話 | 是 | 一列空白的使用者訊息 | 提供給模型的對話內容(多列表格),每列有 角色(使用者/系統助理)與 內容。內容可選「提示詞來源」並用樣板或 JSONPath 帶入前一步資料,行為與 LLM 任務完全相同,詳見 LLM 任務特有欄位 與 內容區塊的「編輯內容」。 |
| JSON Schema | 是 | 預帶一列名為 my_property 的欄位(類型「字串」、必填「是」、可空「否」) | 定義模型輸出必須符合的結構。預設是視覺化建構器表格,欄位為「名稱/類型/必填/可空」;表格儲存格是唯讀的,要改內容得點該列的鉛筆開「編輯屬性」對話框,完整操作見 JSON Schema 建構器怎麼用。打開欄位上的「JSON」開關可改成直接貼一份 JSON Schema,打開「JSONPath」開關則可從輸入帶入整份 Schema。模型會被要求依此結構回應,結果放在輸出的 response 欄位。 |
Note
對話表格每列的「角色/內容」欄位,以及「系統提示詞」是獨立欄位(透過調整圖示設定)等行為,都與 LLM 任務相同,詳見 LLM 任務特有欄位。
進階任務設定(摺疊區塊)¶
與 LLM 任務相同,提供 Guardrail ID、Guardrail 版本、備用大型語言模型、允許重試等欄位。各欄位詳細說明見 LLM 任務特有欄位 與 任務通用設定。
| 欄位 | 必填 | 預設 | 說明 |
|---|---|---|---|
| Guardrail ID | 否 | 空白 | 指定要套用的 Guardrail 識別碼。 |
| Guardrail 版本 | 否 | DRAFT | 指定要使用的 Guardrail 設定版本。 |
| 備用大型語言模型 | 否 | 空表格 | 主模型失敗時依序改用的備援模型。是一張「名稱/模型」兩欄的表格,按 逐列新增。設定備援模型時會沿用相同的 JSON Schema。 |
| 允許重試 | 否 | 關閉 | 開關。任務無法產生有效回應時自動重新產生,每次重試溫度加 0.1。 |
執行設定(摺疊區塊)¶
執行設定區塊(上傳輸出至外部記憶體、即時輸出串流、錯誤時中止、預設輸出)皆為共用欄位。其中「預設輸出」的結構會自動套用你定義的 JSON Schema,說明見 任務通用設定。
怎麼寫提示詞(重點教學)¶
結構化任務的提示詞寫法(系統提示詞、使用者訊息、三種「提示詞來源」、樣板、改寫工具)與一般 LLM 完全相同,建議先讀 大型語言模型的「怎麼寫提示詞」。以下只補結構化任務特有的三個重點。
重點一:欄位的「指示」寫在 Schema,不是堆在提示詞¶
一般 LLM 要靠提示詞交代「輸出要有哪些欄位、格式長怎樣」;結構化任務則由 JSON Schema 直接規定。所以你的提示詞可以更精簡——把重心放在「要模型做什麼判斷」,欄位結構交給 Schema:
系統提示詞:
你是一位客服分析助理。
請閱讀使用者提供的客訴內容,做分類與情緒判斷,並寫一句摘要。
請完全依照指定的結構輸出,不要加入結構以外的文字。
對話(角色:使用者;提示詞來源:自訂提示詞,打開 JSONPath 開關): $.customer_message
重點二:在 Schema 裡善用「欄位說明」引導模型¶
JSON Schema 的每個欄位都可以填「說明 (description) 」。模型會讀這段說明來決定填什麼,等於是「欄位層級的提示詞」。把判斷標準、可選值、格式要求寫在這裡,比全部塞進提示詞更精準。
不用切到 JSON 模式也能填:在建構器表格點該列的 鉛筆 → 「編輯屬性」對話框 → 展開底部的「進階設定」,裡面就有「描述」欄位(見 JSON Schema 建構器怎麼用)。下面的 JSON 只是同一件事在 JSON 模式下的長相:
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "客訴分類,只能是「物流延遲」「商品瑕疵」「服務態度」「其他」其中之一"
},
"sentiment": {
"type": "string",
"description": "顧客情緒,只能是「正面」「中立」「負面」"
},
"summary": {
"type": "string",
"description": "用一句話(30 字以內)摘要客訴重點"
}
},
"required": ["category", "sentiment", "summary"]
}
想限制只能填特定幾個值,就用列舉
像「分類」「情緒」這種只有固定幾個選項的欄位,除了在 description 寫清楚,也可用「列舉」直接限制可選值,讓輸出更穩定。建構器裡的填法:點該列鉛筆 → 「編輯屬性」→ 展開「進階設定」→ 填「列舉」;JSON 模式下就是 "enum": ["正面", "中立", "負面"]。
重點三:用「必填」確保關鍵欄位一定有值¶
把一定要拿到的欄位放進 Schema 的 required 清單,模型就不會略過它們。選填欄位(例如「備註」)不放進 required,模型在資料不足時可以留空,避免硬編內容。
實際範例¶
JSON Schema¶
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "客訴分類,只能是「物流延遲」「商品瑕疵」「服務態度」「其他」其中之一"
},
"sentiment": {
"type": "string",
"description": "顧客情緒,只能是「正面」「中立」「負面」"
},
"summary": {
"type": "string",
"description": "用一句話摘要客訴重點"
}
},
"required": ["category", "sentiment", "summary"]
}
對話(使用者)¶
提示詞來源選「自訂提示詞樣板」,「樣板」寫:
請分析以下客訴並依結構回覆:
{{ customer_message }}
「樣板變數」:名稱 customer_message、值 $.customer_message。
測試執行輸出¶
{
"errors": null,
"action_type": "structured_llm_action",
"response": {
"category": "物流延遲",
"sentiment": "負面",
"summary": "顧客抱怨包裹超過預計到貨日仍未送達。"
}
}
結構化結果放在 response 欄位,可供後續步驟直接取用(例如 $.<步驟名>Result.response.category)。
技術識別¶
- action_type:
structured_llm_action
下一步¶
- 提示詞寫法詳見 大型語言模型的「怎麼寫提示詞」。
- 只需要自由文字回應時,改用 大型語言模型 (LLM)。
- 用 程式碼 (Code) 任務 進一步加工結構化輸出。
- 共用設定請見 任務通用設定。