跳轉到
版本 v1.0.25

Template 語法

Template 語法({{ }})就像 Word 的合併列印:你先寫好一段罐頭文字,中間挖幾個空格放變數名(用雙大括號框起來),平台執行時會把每個空格換成真正的值。例如「親愛的 {{ 病人姓名 }},提醒您 {{ 看診日期 }} 的回診…」。

想讓 AI(大型語言模型)讀到動態內容?那不是這頁

這頁的 {{ }} 主要給 Text 任務(文字) 用。如果你的目標是「把使用者的問題等動態內容帶進 AI 的提示詞」,目前平台的大型語言模型步驟走的是 JSONPath 語法(打開欄位的「JSONPath」開關),不是 {{ }}。先確認你要的是哪一種,再往下讀,才不會用錯。

在畫面上怎麼做

{{ }} 樣板主要用在「文字」任務。打開該任務的設定面板,你會看到上下兩個欄位:「樣板」寫那段帶 {{ }} 的罐頭文字,「樣板變數」則是一張表格,把每個 {{ }} 對應到要帶入的值。

文字任務的「樣板」與「樣板變數」欄位:樣板寫 {{ name }}、{{ order_id }},表格兩列的值是橘色的 JSONPath 標籤 $.name 與 $.order_id

逐步這樣做(表格與那顆紫色按鈕的長相見通用介面元件 — 表格的新增列按鈕):

  1. 在「樣板」欄位寫好帶 {{ }} 的文字。表格不會自動跟著長出對應的列。
  2. 點「樣板變數」表格下方中央的紫色 ,跳出該列的設定小視窗(之後點該列的鉛筆再打開時,視窗標題會寫「編輯樣板變數」)。
  3. 「名稱」填 {{ }} 中間那個變數名(例如 name,不用打大括號);「值」填要帶入的內容。
  4. 值要從前一步的輸出取,就得先把滑鼠移到「值」欄位上、打開浮現的「JSONPath」開關,再填 $.user.name 這種路徑;沒開開關的話,你填的路徑會被當成一段固定文字(開關操作見 JSONPath 語法)。
  5. 按小視窗右上角「儲存」回到表格,重複到樣板裡每個 {{ }} 都有一列。上方那張圖就是兩個變數都補好的樣子。

想整包貼 JSON 也可以

把滑鼠移到「樣板變數」上,標題旁會浮出一個「JSON」開關(和「值」欄的「JSONPath」開關一樣是 hover 才出現)。打開它就能改用 JSON 一次貼上整包對應(例如 {"name.$": "$.user.name"}),關掉就回到表格檢視。逐列填或整包貼,兩種都行。

也因為如此,本頁為了說明方便,會把「一組樣板變數」寫成 JSON 物件的樣子——看到 JSON 時請把它讀成「表格裡的一列一列」:鍵去掉 .$ 後綴就是「名稱」欄,值就是「值」欄。表格的「名稱」欄有時會直接顯示成 name.$,那指的還是同一個變數 name,樣板裡仍然寫 {{ name }},不必改。

大型語言模型任務不吃 {{ }}

大型語言模型任務的提示詞走的是「自訂提示詞(純文字)+打開『JSONPath』開關」那一套,沒有 {{ }} 樣板與「樣板變數」這組欄位。要在提示詞裡帶入動態值,請改用 JSONPath 語法;或先用「文字」任務把提示詞組好,再把成品傳給大型語言模型任務。

語法格式

親愛的 {{ patient_name }},

您 {{ appointment_date }} 的看診結果為「{{ diagnosis }}」。

關鍵特性: 變數包含在雙大括號 {{ variable_name }} 中。

基本使用

範例裡的英文只是為了短,中文一樣可以用

下面幾個範例用 Welcome, {{ name }}! 這種英文短句,純粹是為了讓語法一眼看清。樣板內容與變數名稱都可以是中文(例如 親愛的 {{ 姓名 }},您好),平台不限制語言;本頁後面的診所範例就是中文的。

簡單變數替換

Template:

Welcome, {{ name }}!

工作流程輸入:

{
  "name": "Alice"
}

輸出:

Welcome, Alice!

多個變數

Template:

Order #{{ order_id }} for {{ customer_name }} is {{ status }}.
Total: ${{ amount }}

工作流程輸入:

{
  "order_id": "12345",
  "customer_name": "Bob",
  "status": "shipped",
  "amount": "99.99"
}

輸出:

Order #12345 for Bob is shipped.
Total: $99.99

實用範例

範例 1:使用 Text 任務的回診提醒 Email

Text 任務設定:

Template:

親愛的 {{ patient_name }}:

感謝您今日的看診,以下是本次的後續安排。

看診資訊:
- 分診建議科別:{{ department }}
- 醫師診斷:{{ diagnosis }}
- 回診日期:{{ followup_date }}

祝您早日康復,
OO 診所

工作流程輸入:

{
  "patient_name": "王小明",
  "department": "家醫科",
  "diagnosis": "流感",
  "followup_date": "2026-06-23"
}

輸出:

{
  "text": "親愛的 王小明:\n\n感謝您今日的看診,以下是本次的後續安排。\n\n看診資訊:\n- 分診建議科別:家醫科\n- 醫師診斷:流感\n- 回診日期:2026-06-23\n\n祝您早日康復,\nOO 診所"
}

範例 2:動態 Prompt(概念示意)

此範例為概念示意,非大型語言模型步驟的實際操作

以下用 {{ role }}{{ question }} 的寫法是為了示意「樣板+變數」的概念。但如前面所述,目前平台的大型語言模型步驟內容區塊並沒有 {{ }} +「樣板變數」的入口;要在提示詞裡帶入動態值,實際做法是打開「JSONPath」開關(產生 text.$,見 JSONPath 語法)。若你要的是純文字樣板渲染,請改用「文字」任務。

另外,大型語言模型任務沒有叫「System Message」「User Message」的欄位——那是「對話」表格裡「角色」為「系統」/「使用者」的那一列。

示意設定:

「對話」中角色為「系統」的訊息:

你是一位「{{ role }}」,專長是「{{ domain }}」。
請根據病人主訴,建議最合適的就診科別,語氣保持 {{ tone }}。

「對話」中角色為「使用者」的訊息:

{{ question }}

其他資訊:
{{ additional_context }}

工作流程輸入:

{
  "role": "AI 分診助理",
  "domain": "一般內科與家醫科分診",
  "tone": "親切",
  "question": "我頭痛又發燒,該看哪一科?",
  "additional_context": "病人體溫 38.5°C、血壓 120/80。"
}

LLM 收到:

System:

你是一位「AI 分診助理」,專長是「一般內科與家醫科分診」。
請根據病人主訴,建議最合適的就診科別,語氣保持 親切。

User:

我頭痛又發燒,該看哪一科?

其他資訊:
病人體溫 38.5°C、血壓 120/80。

範例 3:結合前一個任務輸出

工作流程設定:

  1. 大型語言模型任務生成摘要(輸出在 $.LLMActionResult.message——大型語言模型任務底下的欄位叫 message,不是 text,見 Path Parameters
  2. Text 任務建立格式化報告

Text 任務 Template:

# Analysis Report

## Summary
{{ summary }}

## Recommendations
Based on the analysis, we recommend:
{{ recommendations }}

## Next Steps
{{ next_steps }}

---
Generated: {{ timestamp }}

「文字」任務的「樣板變數」設定(讀成表格的一列一列):

{
  "summary.$": "$.LLMActionResult.message",
  "recommendations.$": "$.workflow_input.recommendations",
  "next_steps.$": "$.workflow_input.next_steps",
  "timestamp.$": "$.workflow_input.timestamp"
}

注意:「樣板變數」的「值」欄用 JSONPath 從工作流程狀態取值,取到的值再被 {{ }} 代入樣板。

存取巢狀資料

在「樣板變數」中使用 JSONPath

要在樣板中使用巢狀資料,先在「樣板變數」的「值」欄用 JSONPath 把它取出來,樣板裡就只需要引用那個變數名。

工作流程狀態:

{
  "user": {
    "profile": {
      "name": "Alice",
      "email": "alice@example.com"
    }
  }
}

「樣板變數」(名稱 → 值):

{
  "name.$": "$.user.profile.name",
  "email.$": "$.user.profile.email"
}

Template:

User: {{ name }}
Email: {{ email }}

結合其他語法

樣板常和 JSONPath 與外部記憶體語法一起用:

這一節的 .% 部分需要手寫定義,畫面上做不到

下面第 1 步的 .%(從變數資源載入樣板)在節點設定面板上沒有對應的表單,必須在編輯器「程式碼」檢視手動寫進定義,見外部記憶體語法。第 2 步的「樣板」與「樣板變數」則是正常的畫面操作(「樣板」欄位要當路徑用時記得開 hover 出現的「JSONPath」開關,見該步驟)。只用介面的話,可以先把樣板文字直接寫在「樣板」欄位裡,不必走變數資源這一段。

範例工作流程:

  1. 從變數資源載入 Template:
{
  "email_template.%": {
    "type": "variable",
    "id": "var-templates",
    "jsonpath": "$.welcome_email"
  }
}
  1. 將 Template 傳遞給 Text 任務:

  2. 「樣板」欄位填 $.load_config.email_template。這個欄位預設是「打什麼就是什麼」的純文字,要讓它當成路徑去取值,得先把滑鼠移到「樣板」上、打開浮現的「JSONPath」開關(和「值」欄那顆同一種),否則你填的 $.load_config.email_template 會被原字輸出。 -「樣板變數」:

    {
      "name.$": "$.user.name",
      "company.$": "$.load_config.company_name"
    }
    

這允許你:

  • 在變數資源中儲存 Template(.%
  • 從工作流程狀態引用 Template 和資料(.$
  • 使用 Template 語法渲染最終文字({{ }}

最佳實踐

保持 Template 可讀性:

  • 使用適當的格式和縮排
  • 為複雜邏輯新增註解
  • 將長 Template 拆分為多個部分

驗證變數存在:

  • 確保提供所有 Template 變數
  • 對可選值使用 Jinja2 預設值:{{ optional | default('N/A') }}
  • 使用不同輸入測試 Template

用於文字內容:

  • 電子郵件內容和通知
  • 報告生成
  • 格式化訊息
  • 給大型語言模型的提示詞(注意:LLM 任務的提示詞欄位不吃 {{ }},要動態帶值請走 JSONPath。這裡指的是先用文字任務把提示詞組好,再把成品傳給 LLM 任務)

不要用於結構化資料:

  • 對於 JSON/XML 生成或資料整形,改用傳遞任務(Pass)或程式碼(Code)任務
  • Template 用於人類可讀的文字
  • 避免在 Template 中進行複雜的資料操作

「資料轉換(Transformation)」已棄用

舊版文件可能會推薦「資料轉換(Transformation)」任務來做資料整形,但平台已將它標示為「資料轉換 (已棄用)」。新流程請改用 傳遞任務(Pass)程式碼(Code)任務 來準備/整形資料。

常見錯誤

在非 Template 欄位中使用 Template 語法

{
  "url": "https://api.example.com/users/{{ user_id }}"  // 錯誤!
}

對動態欄位使用 JSONPath

{
  "url.$": "$.api_url"  // 正確
}

忘記提供 Template 變數

Template:

Hello {{ name }}, your balance is {{ balance }}

「樣板變數」(名稱 → 值):

{
  "name.$": "$.user.name"
  // 遺漏 balance!
}

提供所有變數或使用預設值

{
  "name.$": "$.user.name",
  "balance.$": "$.account.balance"
}

或在 Template 中:

Hello {{ name }}, your balance is {{ balance | default('N/A') }}

Template 中的複雜邏輯

{% if status == 'active' and balance > 1000 and tier == 'premium' %}
  {% for item in recent_purchases %}
    {% if item.category in preferred_categories %}
      ...complex logic...
    {% endif %}
  {% endfor %}
{% endif %}

先用傳遞 / 程式碼任務準備資料

使用傳遞任務(Pass)或程式碼(Code)任務準備簡化的資料,然後使用簡單的 Template 邏輯。(「資料轉換(Transformation)」已棄用,請改用前述替代。)

何時使用 Template 語法

使用 {{ }} 語法當:

  • ✅ 渲染人類可讀的文字
  • ✅ 生成電子郵件、報告或通知
  • ✅ 用文字任務組好要給大型語言模型的提示詞,再把結果傳給 LLM 任務
  • ✅ 建立格式化訊息

不要使用 {{ }} 當:

  • ❌ 在任務欄位中引用資料 → 使用 JSONPath 語法
  • ❌ 存取持久性設定 → 使用 外部記憶體語法
  • ❌ 建構結構化資料 → 使用傳遞任務(Pass)或程式碼(Code)任務(「資料轉換」已棄用)

進階 Jinja2 功能(選讀,不會寫程式可以整段跳過)

這一段不看也不影響你用樣板

下面是給需要在樣板裡做條件判斷或跑迴圈的人看的。日常的「挖空格、填值」用不到這些,看到覺得吃力就直接跳到相關主題

這一節屬進階選讀

以下 {% if %}{% for %}| upper 等是 Jinja2 模板的程式化語法,對沒有程式背景的使用者門檻較高。新手不需要先學會這些——日常的變數替換用前面的 {{ 變數 }} 就夠了。真的需要條件或迴圈時,建議先做一個最小的例子在平台上實際跑一次確認結果,再逐步加複雜度;不確定時請工程同事協助。

條件渲染

Hello {{ name }},

{% if is_premium %}
Thank you for being a premium member!
{% else %}
Consider upgrading to premium for exclusive benefits.
{% endif %}

迴圈

Your orders:
{% for order in orders %}
- Order #{{ order.id }}: {{ order.status }}
{% endfor %}

過濾器

Name: {{ name | upper }}
Date: {{ date | default('Not specified') }}
Price: {{ price | round(2) }}

注意: 這些進階功能由 Jinja2 支援。

這些片段要貼在哪?怎麼馬上看到結果?

上面三段都是貼在「文字」任務「樣板」欄位裡的內容(就是那個帶行號的多行編輯器),{% %} 用到的變數(is_premiumorders…)一律要在底下的「樣板變數」表格逐列補上,否則會渲染不出來。

要驗證有沒有寫對,不用跑整條流程:點該節點面板右上角的「測試任務」()按鈕就能單獨試跑這一步、馬上看到輸出,見編輯器介面導覽