跳轉到
版本 v1.0.25

任務概覽

任務是工作流程 (Workflow) 的基本建構單位。一個工作流程就是把多個任務串接起來,每個任務負責一件具體的事,例如呼叫大型語言模型、查資料庫、打外部 API 或轉換資料。本頁先說明任務是什麼、怎麼在編輯器裡新增,再用一個「所有任務類型」清單帶你找到對應的設定頁,最後集中說明所有任務表單都共用的設定分區。

這頁能幫你做什麼

  • 快速理解任務與工作流程、資源 (Resource) 的關係。
  • 知道在工作流程編輯器裡如何新增並設定一個任務。
  • 一次看懂每個任務表單都有的共用設定(名稱、輸入/輸出、錯誤處理、進階任務設定、執行設定),各任務頁不再重複說明,直接連到本頁的「任務通用設定」。

任務是什麼

每個任務代表工作流程裡的一個步驟(在後端稱為一個「狀態」)。執行時,前一個步驟的輸出會成為這個任務的輸入,這個任務處理完後再把結果交給下一個步驟。你可以把工作流程想成一條生產線,任務就是線上的每一台機器。

任務常常需要搭配資源 (Resource) 才能運作。資源是事先建立好、可重複使用的設定,例如:

  • LLM 任務需要先有一個 LLM 資源(指定模型與金鑰)。
  • MySQL/OpenSearch 任務需要先有對應的連結器資源(指定連線資訊)。
  • Retrieval/Retriever 任務需要先有知識庫與檢索器資源。

如何建立這些資源,請參考 資源指南。功能頁只會用一句話帶過並連到資源頁,不會在每個任務裡重寫一次。

如何在編輯器裡新增一個任務

新增任務的方式是「從面板拖曳到畫布」,不是點一下清單就會加入。請依下列步驟操作:

  1. 先要有一個工作流程才會有畫布可以拖。到左側導覽的「工作流程」清單,開啟一個現有的工作流程,或按「建立」新建一個(建立步驟見 建立工作流程);進入後點頁面上的編輯進入「工作流程編輯器」。

    開啟工作流程編輯器後的畫面

  2. 點開編輯器左上角的「新增狀態」()卡片。它不是滑出的側邊抽屜,而是原地往下展開成一個面板(就在畫布左上角、原本那張卡片的位置),列出所有可新增的任務類型。

    點「新增狀態」後原地往下展開的步驟選擇面板(「任務」頁籤)

  3. 面板上方有一個搜尋框,可輸入關鍵字快速找到要的類型;下方的類型則依分類手風琴(可展開/收合的分類區塊)排列(即上圖面板,分類見下方「所有任務類型」)。

  4. 找到要的類型後,用滑鼠按住該項目並拖曳到畫布上要插入的位置(從上圖面板拖到畫布),放開滑鼠即完成新增。直接點一下清單項目只會顯示提示,不會加入節點。
  5. 點選畫布上新加入的節點,右側會開啟該任務的設定表單。

    點選節點後從右側滑出的設定表單(以大型語言模型任務為例)

  6. 在「設定」分頁填寫該任務的專屬欄位(如模型、SQL、API 端點等,即上圖表單),詳見各任務頁。

  7. 視需要切換到「輸入與輸出」、「錯誤處理」分頁,調整共用設定(見「任務通用設定」)。

    設定表單的「輸入與輸出」分頁

  8. 設定完成後,可用表單上方的「測試任務」按鈕()試跑這個任務,確認輸出符合預期。

    任務設定面板,頂部工具列最右側依序為測試、最大化、關閉

新工作流程已內建一個預設節點

新建立的空白工作流程其實不是真的空白,預設已含一個「大型語言模型任務」節點,流程為「開始 → 大型語言模型任務 → 結束」。你可以直接點這個節點開始設定,或依上述步驟拖曳新增其他任務。

所有任務類型

下表列出目前支援的所有任務類型,並依平台「新增狀態」面板的實際分類與排序整理。第一欄就是面板上顯示的名稱,可以直接複製到面板的搜尋框裡找。點選指南連結可看該類型的完整欄位說明。

面板用的是中文名稱

「新增狀態」面板列出的是中文名稱(大型語言模型、結構化大型語言模型、檢索、傳遞資料…),不是各指南標題常用的英文名(LLM、Structured LLM、Retrieval、Pass…)。拿英文名去面板的搜尋框搜會搜不到,請以下表第一欄的名稱為準。面板最上層會先分成「任務」與「流程」兩個分頁,分頁底下再以下列分類(手風琴)排列。

生成式 AI

面板名稱 一句話用途 指南
Agent 在工作流程步驟中呼叫已設定好的 Agent。 Agent 指南
大型語言模型 呼叫大型語言模型做文字生成、補全或對話。 LLM 指南
結構化大型語言模型 讓模型輸出符合指定 Schema 的結構化 JSON。 Structured LLM 指南

雲端運算

面板名稱 一句話用途 指南
Lambda 在 AWS Lambda 函式中執行自訂程式碼。 Lambda 指南

網路傳輸與 API

面板名稱 一句話用途 指南
HTTPS API 呼叫外部 REST API 或 Web 服務。 HTTPS API 指南
MCP 與 Model Context Protocol 伺服器互動。 MCP 指南

網頁互動

面板名稱 一句話用途 指南
搜尋引擎 透過搜尋引擎 API 搜尋網路。 Search Engine 指南
讀取網址 從指定 URL 擷取並萃取內容。 Read URL 指南

資料庫

面板名稱 一句話用途 指南
Athena 用 SQL 查詢存放在 Amazon S3 上的資料。 Athena 指南
MySQL 對 MySQL 資料庫執行 SQL 查詢。 MySQL 指南
OpenSearch 查詢與管理 OpenSearch 索引。 OpenSearch 指南

檢索與排序

面板名稱 一句話用途 指南
檢索 一站式從知識庫檢索文件(內含檢索器與排序器)。 Retrieval 指南
檢索器 用語意或關鍵字策略搜尋知識庫。 Retriever 指南
排序器 依相關性重新排序文件,提升 RAG 品質。 Ranker 指南

工作流程執行

面板名稱 一句話用途 指南
執行同步工作流程 同步呼叫子工作流程並等待結果。 Start Sync Workflow Execution 指南
執行工作流程 非同步觸發子工作流程(觸發後不等待)。 Start Workflow Execution 指南
查看工作流程執行 查詢工作流程執行狀態並取回結果。 Describe Workflow Execution 指南

文字與資料處理

面板名稱 一句話用途 指南
程式碼 直接在工作流程執行環境中跑 Python 程式碼。 Code 指南
文字 用變數替換從樣板產生文字。 Text 指南
資料轉換 (已棄用) 內建轉換(目前僅簡體轉繁體);新流程改用 程式碼 (Code) 資料轉換指南
傳遞資料 直接傳遞資料,或把靜態值注入工作流程狀態。 Pass 指南

設定面板的頂部與分頁

點選畫布上的任一任務節點,右側會滑出它的設定面板。不論哪一種任務,面板最上方的工具列三個分頁都長得一樣:

任務設定面板:頂部有定義開關、測試、最大化、關閉,下方是設定/輸入與輸出/錯誤處理三個分頁

元件 作用
定義(開關) 切換成「定義檢視」,直接顯示這個步驟的原始 JSON 定義(見下圖),適合進階使用者檢查或核對設定。一般操作維持關閉、用表單填寫即可。
測試任務 這顆鈕只有圖示,滑鼠停上去才會顯示「測試任務」。單獨試跑這一個任務,跳出測試視窗讓你填入測試輸入並查看輸出,方便在組整條流程前先確認這步沒問題。
最大化 把設定面板放大到更大的檢視,欄位多時操作更從容;再按一次還原。
關閉 收起設定面板,回到只有畫布的檢視(設定不會遺失)。
設定 / 輸入與輸出 / 錯誤處理(分頁) 三個分頁分別放:該任務的專屬欄位、資料進出設定、出錯時的重試與捕捉。內容見下方「任務通用設定」。

開啟「定義」開關後,面板會切換成原始 JSON 定義檢視:

開啟定義開關後,面板顯示該步驟的原始 JSON 定義

面板裡的共用小元件

面板中的欄位也用到全平台共用的元件:選擇資源的 挑選鈕、 參數微調、表格的 新增列,以及多行欄位的編輯器工具列。挑選鈕開出來的對話框有一個共通的坑:點該列的「名稱」不會選取它,而是在新分頁開啟那個資源的詳細頁;要選取請點該列「名稱」以外的任一格或列前面的選鈕,再按對話框右上角的「儲存」(見資源挑選欄位)。這些的統一說明見通用介面元件。多數欄位標籤右邊還有一顆紫色的資訊圖示(),把滑鼠移上去或點一下會顯示該欄位的用途提示,看不懂欄位時可以先點它。多數欄位(例如 MySQL 任務的「SQL 參數」、文字任務的「樣板變數」、Agent 任務的「提示詞變數」)標籤右側會有「JSONPath」開關(接受整包 JSON 的欄位另有「JSON」開關),可在「直接填固定值」與「用 $ 路徑從輸入動態帶入」之間切換,詳見下方欄位的輸入方式切換

任務通用設定

每個任務的設定表單,右側面板上方都有三個分頁:「設定」、「輸入與輸出」、「錯誤處理」。本節把這些分頁中所有任務共用的分區一次說清楚,各任務頁只會詳列該類型的專屬欄位,共用部分一律連回這裡。

「進階任務設定」不是每個任務都有

每個任務的「設定」分頁底部都有「執行設定」摺疊區塊,但「進階任務設定」只有部分任務才有——例如 MySQL、Lambda、MCP、檢索、執行工作流程、執行同步工作流程、查看工作流程執行、程式碼、文字、資料轉換、傳遞資料等任務就只有「執行設定」。在這些任務的面板上找不到「進階任務設定」是正常的,不是你少點了什麼。本節以 LLM 任務為例說明最常見的共用項;各任務頁會列出該類型實際提供的進階/執行欄位。

欄位的輸入方式切換:JSONPath 與 JSON

任務設定裡很多欄位都可以改成動態取值——不是現在填死一個值,而是執行時去上一步的輸出裡撈。這類欄位的標籤右側會有一到兩個小開關

多行欄位長得像程式碼編輯器,不代表你要寫程式

只要欄位是多行文字、JSON 或 SQL(例如文字任務的「樣板」、傳遞資料的「參數」、程式碼任務、Lambda 的「傳輸資料」、資料轉換的設定),畫面上就是一個左側帶行號、右上角有工具列的編輯器。行號只是編輯器的樣式,純文字照打即可。工具列的四顆鈕見通用介面元件 — 編輯器工具列

找不到開關?把滑鼠移到那個欄位上

這排開關平常是隱藏的,只有滑鼠移到該欄位範圍內才會出現(少數欄位例外,會一直顯示)。所以光看畫面截圖或靜態畫面時,很多欄位看起來像是沒有開關。

開關 出現時機 打開後
JSONPath 幾乎所有可動態取值的欄位 欄位變成唯讀的路徑框,右側有 鉛筆鈕,點一下開啟「編輯參考路徑」對話框,用引導式表單組出路徑。
JSON 多數接受整包物件/陣列的欄位,包含表格型的欄位(例如排序器任務的「文件」、文字任務的「樣板變數」、MCP 任務的「輸入」)。少數例外只有「JSONPath」一個開關,例如程式碼任務的「資料」 欄位變成 JSON 編輯器,可直接貼上或編輯整段 JSON,並即時檢查格式是否符合該欄位要求。

兩個開關互斥:打開一個,另一個會自動關掉。關掉 JSONPath 後欄位會回到原本的輸入元件(表格、下拉、滑桿、文字框等),原本填的固定值仍在。

有些欄位的開關會鎖住

當你貼進去的 JSON 不符合該欄位要求的結構、或欄位值本來就參照了外部記憶體時,平台會強制維持 JSON 輸入並鎖住開關(呈現為不可切換),避免切回引導式表單時把內容改壞。把內容改成符合結構後即可正常切換。

「編輯參考路徑」對話框的欄位:

欄位 必填 說明
來源 這個值要從哪裡取:「狀態輸入」(前一步/工作流程的資料,最常用)、「變數」、「外部記憶體」、「外部記憶體列表」。
ID / IDs 是(來源為變數或外部記憶體時) 要讀的變數名稱或外部記憶體 ID。也可以填 $ 開頭的路徑,代表 ID 本身也是動態取得的。
JSONPath 實際的取值路徑(如 $.question)。輸入時會提示目前狀態裡可用的欄位。

先看得懂路徑,再回來用這個對話框

$ 路徑的寫法見 JSONPath 語法;「變數」與「外部記憶體」這兩種來源分別見 變數外部記憶體

基本欄位(設定分頁)

這些欄位直接顯示在「設定」分頁,不在摺疊區塊內,幾乎每個任務都有。

欄位 必填 預設 說明
名稱 這個步驟在工作流程中的識別名稱,必須在同一個工作流程裡唯一,不可與其他步驟同名。建議取有意義的名字(如「查詢訂單」「呼叫客服模型」),方便後續引用與除錯。
下一個狀態 這個步驟完成後要前往的下一個步驟。下拉選單會列出同一層級的步驟——包含這個步驟自己,選到自己會讓流程繞回原地,請避開。若選擇「結束」,代表這是流程的最後一步。
附註 空白 給這個步驟加上說明文字,純粹備註用途,不影響執行。方便團隊協作時看懂每步在做什麼。

Note

「下一個狀態」的下拉選項只會列出同一層級的步驟,外加一個「結束」選項;流程的第一個步驟也可以選「結束」。清單裡也包含目前這個步驟自己,選到自己會讓流程繞回原地跑不完,記得避開。實際可選項目依你工作流程現有結構而定。

輸入與輸出設定(輸入與輸出分頁)

切到「輸入與輸出」分頁可以控制資料如何流進、流出這個步驟。這些欄位多半使用 JSONPath(以 $ 開頭的路徑)來指定要取用或寫入資料的哪一部分。多數欄位選填,不填就會套用該任務的預設行為。

任務設定面板的「輸入與輸出」分頁

上圖由上到下依序是 InputPath、ResultSelector、ResultPath、OutputPath 四個欄位。每一種任務的「輸入與輸出」分頁都只有這四格,內容也一致,所以看完這一節就等於看完所有任務的這個分頁。下表逐一說明每個欄位的作用。

想深入了解這些路徑怎麼寫、資料怎麼流

  • $ 路徑的完整寫法(取前一步輸出、取工作流程輸入)見 JSONPath 語法
  • InputPath/ResultPath/OutputPath 如何一步步改變資料流,見 Path Parameters
  • 整章資料引用的概念與選擇($.{{ }}.%)見 變數與資料引用
欄位 必填 預設 說明
InputPath 整包輸入 用 JSONPath 篩選要餵給這個步驟的輸入,只取你需要的那一部分。不填代表使用上一步的完整輸出。
ResultSelector 空白 從這個步驟的執行結果中挑選要保留的部分,組成新的鍵值對後再往下傳。
ResultPath $.<步驟名稱>Result 指定要把這步的結果放到輸入的哪個位置(相對於原始輸入)。可用來決定是覆蓋輸入、還是把結果掛在某個欄位下。要讓下一步取得這一步的結果,就是改這一格——例如把它填成 $.child_execution_arn,下一步就能用 $.child_execution_arn 取值。預設值會依步驟名稱自動帶入(例如名稱為 LLMAction 時預設 $.LLMActionResult)。
OutputPath 整包結果 在資料成為這個步驟的最終輸出前,再用 JSONPath 篩一次,只往下傳你要的部分。

Note

這四個欄位是所有任務共通的,不會因任務類型而多一格或少一格。它們的命名與行為沿用 AWS Step Functions 的輸入/輸出處理慣例,所以畫面上維持英文。

錯誤處理(錯誤處理分頁)

切到「錯誤處理」分頁可以設定當這個步驟出錯時要怎麼辦。分成兩大區塊,畫面上由上到下依序是「捕捉(捕捉器)」與「重試(重試器)」,兩者都可新增多筆、依序套用。

任務設定面板的「錯誤處理」分頁

如上圖,上半是「捕捉」、下半是「重試」,分別用「建立新的捕捉器」「新增重試器」按鈕加入規則。以下依畫面順序逐一說明兩種規則的欄位。

捕捉器(捕捉)

點「建立新的捕捉器」可以加入一筆捕捉規則,當(重試後仍)發生指定錯誤時,把流程導向另一個步驟而不是整個失敗。下圖是一筆捕捉器展開後的樣子,每筆包含下列欄位:

點「建立新的捕捉器」後展開的一筆捕捉器欄位(圖為「路徑」欄已填入 $.errorInfo 之後的狀態)

欄位 必填 預設 說明
錯誤 所有錯誤(States.All) 指定哪些錯誤要被這個捕捉器接住。可選內建錯誤類型或自行輸入錯誤名稱。
回退狀態 自動帶入一個現有步驟 錯誤被接住後要轉去的步驟。下拉選單會列出同層的步驟,這個步驟自己也在清單裡,選到自己會繞回原地。新增捕捉器時這一格不是空的,平台會先幫你帶入一個現有步驟(上圖為 LLMAction),記得改成你真正想轉去的步驟。
ResultPath(模式下拉) 將原始輸入與結果結合 兩種模式:「將原始輸入與結果結合」會把錯誤資訊掛到原始輸入的指定路徑再往下傳(路徑已存在則覆蓋);「丟棄結果並保留原始輸入」則把 ResultPath 設為 null,只往下傳原始輸入、捨棄錯誤結果。
ResultPath(路徑欄) (選「將原始輸入與結果結合」時) 空白(提示文字為 $.stateInput.key 模式下拉下方還有一個路徑欄(如上圖),指定錯誤資訊要掛到原始輸入的哪個位置;下一步就用這個路徑取錯誤內容(例如填 $.errorInfo,之後用 $.errorInfo.Error)。新增捕捉器後這一格是空的、而且必填——沒填就存會顯示「此欄位為必填」,那不是壞掉。選「丟棄結果並保留原始輸入」時這一格不會生效。
附註 空白 這筆捕捉器的備註說明,不影響執行。

重試器(重試)

點「新增重試器」可以加入一筆重試規則,遇到指定錯誤時自動重試。下圖是一筆重試器展開後的樣子,每筆包含下列欄位:

點「新增重試器」後展開的一筆重試器欄位

欄位 必填 預設 說明
錯誤 視任務而定 指定哪些錯誤要觸發這筆重試。可從內建錯誤類型(如 States.ALL 表示所有錯誤、States.Timeout 表示逾時等;任務型步驟另有 Lambda 相關錯誤)中挑選,或自行輸入錯誤名稱。
間隔秒數 1 第一次重試前要等待的秒數。最小 0。
最多重試次數 3 最多重試幾次。最小 0;設為 0 代表不重試。
退避倍率 2 每次重試後,間隔秒數要乘上的倍率,用來逐步拉長等待時間。最小 1。
最長延遲秒數 未設定 重試間隔再怎麼放大也不超過這個秒數上限。最小 0,最大 31622401。不填代表不設上限。
新增隨機延遲 關閉 開關。開啟後會在重試間隔加入隨機抖動,避免大量請求在同一時間一起重試而壓垮系統。

進階任務設定(設定分頁的「進階任務設定」摺疊區塊)

在「設定」分頁底部,展開「進階任務設定」可看到下列共用項。實際出現哪些欄位依任務類型而定,以下以 LLM 任務最常見的項目為例,表格順序與畫面順序一致(下圖最底為「允許重試」開關):

展開「進階任務設定」後的欄位,最底為「允許重試」開關

欄位 必填 預設 說明 適用範圍
Guardrail ID 空白 指定要套用的 Guardrail(安全防護)識別碼,把特定的內容防護設定綁到這次呼叫。 多為 LLM 相關任務
Guardrail 版本 DRAFT 指定要使用的 Guardrail 設定版本,確保套用正確版本的防護規則。欄位預設已帶入 DRAFT(草稿版本),有正式版本時改填版本號。 多為 LLM 相關任務
備用大型語言模型 空表格 指定一組備援模型;主模型無法產生回應時依序改用備援模型,提高成功率。這是一張含「名稱」「模型」兩欄的表格,按表格下方的 逐列新增。 多為 LLM 相關任務
允許重試 關閉 開關。開啟後,當任務無法產生有效回應時會自動重新產生,且每次重試時模型溫度會增加 0.1(以增加變化)。與「錯誤處理」分頁的重試器不同,這是針對「結果無效」而非「呼叫失敗」。 只有 LLM 與 Structured LLM 任務

Note

Guardrail、備用大型語言模型只出現在 LLM、Structured LLM 任務;「允許重試」也只有這兩種任務才有(Agent 任務的進階區沒有這個開關)。其他類型的任務在「進階任務設定」中會顯示各自適用的欄位,請以各任務頁的欄位說明為準。

執行設定(設定分頁的「執行設定」摺疊區塊)

在「設定」分頁底部,展開「執行設定」可看到下列共用項,控制這個步驟在實際執行時的行為:

展開「執行設定」後的共用開關

欄位 必填 預設 說明
上傳輸出至外部記憶體 關閉 開關。開啟後,這個步驟的輸出會改存到外部記憶體,適合處理量很大的輸出資料,避免直接塞進工作流程狀態。開啟後會多出一個叫「狀態記憶體輸出選擇器」的 JSON 編輯器,指定要把哪部分輸出存到外部記憶體。用法與如何讀回見 外部記憶體
在任務開始階段開啟即時輸出串流 關閉 開關。開啟後,任務開始時會把任務定義以串流方式即時送到執行頁面顯示。
在任務結束階段開啟即時輸出串流 關閉 開關。開啟後,任務結束時會把結果以串流方式即時送到執行頁面顯示。
錯誤時中止 開啟 開關。開啟(預設)代表這個步驟出錯時整個工作流程中止;關閉後會改用下方的「預設輸出」繼續往下走。
預設輸出 只在「錯誤時中止」關閉時出現。指定這個步驟出錯時要改用的預設輸出值,讓流程能用替代結果繼續執行。它展開後是一組英文標籤的子欄位,見下方說明。

Note

串流相關開關主要用於可逐步產出內容的任務(如 LLM)。實際是否顯示「在任務開始/結束階段開啟即時輸出串流」「預設輸出」等欄位,依任務類型與是否關閉「錯誤時中止」而定。

「預設輸出」不是一格,是一組子欄位

標籤是英文,而且每種任務不一樣

關掉「錯誤時中止」後出現的「預設輸出」,展開來是好幾個子欄位,而且標籤是英文(畫面上沒有中文)。這些子欄位就是這個任務正常成功時會輸出的欄位,你在這裡填的值等於「出錯時假裝跑出來的結果」。每種任務不一樣,實機看到的例子:

任務 「預設輸出」底下的子欄位
傳遞資料 ErrorsOutput
排序器 ErrorsDocs
大型語言模型 ErrorsMessageRequestThinking SummarySource LLM ID
MCP Response(只有這一格,連 Errors 都沒有)

Errors 的任務,那一格是用來指定這組替代結果要套用在哪些錯誤上,留空代表不分錯誤類型都套用;其餘子欄位多半是 JSON 編輯器,預帶空物件 {}。實務上最常見的用法是留著 Errors 不填,在輸出那一格填一包「安全的空結果」(例如 { "documents": [] }),讓下一步收到格式正確但沒有內容的資料,流程就不會整個中斷。你的任務實際有哪幾格,一律以畫面顯示為準。

常見模式

RAG(檢索增強生成)

結合檢索任務與 LLM,讓回應紮根在你自己的資料上:

Retriever → Ranker → LLM

或使用一站式的 Retrieval 任務:

Retrieval(內含 retriever + ranker)→ LLM

API 整合

呼叫外部服務並處理回應:

HTTPS API → Code → LLM

資料庫驅動的工作流程

查詢資料庫,並在 LLM 提示中使用查詢結果:

MySQL → Code → Structured LLM

工作流程組合

透過呼叫子工作流程,組出模組化的工作流程:

Start Sync Workflow Execution → Code → LLM

Agent 輔助步驟

把開放式推理或工具選擇交給 Agent 處理:

HTTPS API → Agent → Code

下一步