跳轉到
版本 v1.0.25

結構化大型語言模型

結構化大型語言模型任務和一般 LLM 任務類似,但會強制模型把回應整理成你指定的 JSON Schema 結構,方便後續步驟直接用程式取值,不必再從自由文字裡剖析。

它和一般 大型語言模型 任務一樣非常常用,差別只在「多了一份輸出結構」。提示詞(系統提示詞、使用者訊息、樣板)的寫法與一般 LLM 完全相同,本頁先帶你看特有的 JSON Schema 欄位,再用「怎麼寫提示詞」補上結構化任務特有的提示詞技巧。

這頁能幫你做什麼

  • 讓模型輸出固定欄位的 JSON(例如把客訴內容拆成「分類」「情緒」「摘要」)。
  • 從非結構化文字擷取結構化資料,直接餵給資料庫或 API(例如從合約抽出「甲方」「乙方」「金額」「到期日」)。
  • 確保下游步驟拿到的資料格式穩定、可預期。

本頁只說明結構化 LLM 任務特有的欄位(主要是輸出結構 Schema 與相應的提示詞技巧)。名稱、附註、下一個狀態、輸入與輸出、錯誤處理及共用開關,集中在 任務通用設定

開始前

需要先建立 LLM 資源

與 LLM 任務相同,必須綁定一個已建立的 大型語言模型 (LLM) 資源。如何建立請見 LLM 資源

操作步驟

  1. 在工作流程編輯器中新增一個 結構化大型語言模型 任務(如何新增請見 任務使用指南)。

    結構化大型語言模型任務設定面板

  2. 填入「名稱」。

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

    點調整圖示後跳出的系統提示詞與模型參數覆寫對話框

    這個對話框與大型語言模型任務共用(圖中的標題是示範用的模型名稱)。「最大 Token 數」「溫度」「Top P」「Top K」四項左側各有勾選框,要先勾起來滑桿才拉得動,詳見大型語言模型任務的特有欄位

  4. 在「對話」表格加入訊息,引導模型要產生什麼內容(提示詞寫法見下方教學)。

  5. 在「JSON Schema」定義你要的輸出結構。預設是一張視覺化建構器表格,欄位為「名稱」「類型」「必填」「可空」;不必會寫 JSON 也能用(詳細操作見下方 JSON Schema 建構器怎麼用):

    結構化大型語言模型任務的「JSON Schema」建構器表格,面板放寬後可看到名稱、類型、必填、可空四欄,已有一列名為 summary 的欄位

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

    結構化大型語言模型任務展開「進階任務設定」後的欄位

  7. 設定「下一個狀態」,必要時填「附註」。

  8. 用「測試任務」按鈕()試跑,確認輸出符合 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

下一步