跳轉到

結構化大型語言模型

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

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

這頁能幫你做什麼

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

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

開始前

需要先建立 LLM 資源

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

操作步驟

  1. 在工作流程編輯器中新增一個 結構化大型語言模型 任務。

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

  2. 填入「名稱」。

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

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

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

  5. 在「JSON Schema」定義你要的輸出結構(欄位、型別、是否必填),可用視覺化建構器或直接切到 JSON 模式編輯。

    結構化大型語言模型任務的「JSON Schema」欄位建構器

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

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

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

  8. 用測試按鈕()試跑,確認輸出符合 Schema。

結構化 LLM 任務特有欄位

設定分頁

欄位 必填 預設 說明
大型語言模型 選擇這次呼叫要用的 LLM 資源,可用旁邊的調整()圖示覆寫系統提示詞與模型參數。也可切換為從工作流程輸入帶入。
對話 一列空白的使用者訊息 提供給模型的對話內容(多列表格),每列有 角色(使用者/系統助理)與 內容。內容可選「提示詞來源」並用樣板或 JSONPath 帶入前一步資料,行為與 LLM 任務完全相同,詳見 LLM 任務特有欄位內容區塊的「編輯內容」
JSON Schema 預設空白物件結構 定義模型輸出必須符合的結構。可用視覺化建構器逐欄新增欄位與型別,或切到 JSON 模式直接貼上一份 JSON Schema。模型會被要求依此結構回應,結果放在輸出的 response 欄位。也可切換為用 JSONPath 從輸入帶入整份 Schema。

Note

對話表格每列的「角色/內容」欄位,以及「系統提示詞」是獨立欄位(透過調整圖示設定)等行為,都與 LLM 任務相同,詳見 LLM 任務特有欄位

進階任務設定(摺疊區塊)

與 LLM 任務相同,提供 Guardrail ID、Guardrail 版本、備用大型語言模型、允許重試等欄位。各欄位詳細說明見 LLM 任務特有欄位Action 通用設定

欄位 必填 預設 說明
Guardrail ID 空白 指定要套用的 Guardrail 識別碼。
Guardrail 版本 DRAFT 指定要使用的 Guardrail 設定版本。
備用大型語言模型 主模型失敗時依序改用的備援模型。設定備援模型時會沿用相同的 JSON Schema。
允許重試 關閉 開關。任務無法產生有效回應時自動重新產生,每次重試溫度加 0.1。

執行設定(摺疊區塊)

執行設定區塊(上傳輸出至外部記憶體、即時輸出串流、錯誤時中止、預設輸出)皆為共用欄位。其中「預設輸出」的結構會自動套用你定義的 JSON Schema,說明見 Action 通用設定

怎麼寫提示詞(重點教學)

結構化任務的提示詞寫法(系統提示詞、使用者訊息、三種「提示詞來源」、樣板、改寫工具)與一般 LLM 完全相同,建議先讀 大型語言模型的「怎麼寫提示詞」。以下只補結構化任務特有的三個重點。

重點一:欄位的「指示」寫在 Schema,不是堆在提示詞

一般 LLM 要靠提示詞交代「輸出要有哪些欄位、格式長怎樣」;結構化任務則由 JSON Schema 直接規定。所以你的提示詞可以更精簡——把重心放在「要模型做什麼判斷」,欄位結構交給 Schema:

系統提示詞:

你是一位客服分析助理。
請閱讀使用者提供的客訴內容,做分類與情緒判斷,並寫一句摘要。
請完全依照指定的結構輸出,不要加入結構以外的文字。

對話(角色:使用者;提示詞來源:自訂提示詞,勾 JSONPath): $.customer_message

重點二:在 Schema 裡善用「欄位說明」引導模型

JSON Schema 的每個欄位都可以填「說明 (description) 」。模型會讀這段說明來決定填什麼,等於是「欄位層級的提示詞」。把判斷標準、可選值、格式要求寫在這裡,比全部塞進提示詞更精準:

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "description": "客訴分類,只能是「物流延遲」「商品瑕疵」「服務態度」「其他」其中之一"
    },
    "sentiment": {
      "type": "string",
      "description": "顧客情緒,只能是「正面」「中立」「負面」"
    },
    "summary": {
      "type": "string",
      "description": "用一句話(30 字以內)摘要客訴重點"
    }
  },
  "required": ["category", "sentiment", "summary"]
}

想限制只能填特定幾個值,就用列舉

像「分類」「情緒」這種只有固定幾個選項的欄位,除了在 description 寫清楚,也可在 Schema 用 enum 直接限制可選值(例如 "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

下一步