跳轉到

Path Parameters

新手可以先跳過這頁

這四個欄位(InputPath / ResultSelector / ResultPath / OutputPath)在九成情況維持預設就好,你不用動它們。這頁是當你要除錯(例如「為什麼下一步抓到空的?」)或建構複雜流程時,才回來看「資料到底怎麼流」的。第一次學引用資料,看 JSONPath 語法 就夠了。

Workflow 中的每個 Action 都用幾個 Path Parameter 來控制資料如何流經 Action。它們都在步驟設定面板的「輸入與輸出」分頁,了解這些參數對於除錯 Workflow 和建構複雜的資料管線至關重要。

Path Parameter 欄位

「輸入與輸出」分頁實際上有四個欄位:

Parameter 預設值 用途
InputPath $ 選擇 Workflow 狀態的哪個部分作為輸入傳遞
ResultSelector {"message.$": "$.Payload.message"} 在輸出存進狀態「之前」,先從原始輸出挑選/重組要保留的欄位
ResultPath $.ActionNameResult Action 輸出在 Workflow 狀態中的儲存位置
OutputPath $ 選擇狀態的哪個部分傳遞給下一個 Action

ResultSelector 是什麼?通常不用動

ResultSelector 會在輸出存進狀態前,先從 Action 的原始輸出挑出你要的欄位。新建立的步驟通常已經幫你預填好一組合理的預設值(例如 {"message.$": "$.Payload.message"},意思是「把原始輸出裡 $.Payload.message 的內容,整理成 message 欄位」)。對新手而言,多數情境不需要動它,沿用預設即可;只有在你要精挑或重新命名輸出欄位時才會用到。

資料如何流經 Action

Workflow State → [InputPath] → Action Input → Action Execution
→ Action Output → [ResultPath] → Updated State → [OutputPath] → Next Action

具體範例

以看診流程裡的「AI 分診」步驟為例(在平台上命名為 Triage 的 LLM Action),追蹤一筆主訴怎麼流經它:

1. 初始 Workflow 狀態

{
  "question": "我頭痛又發燒,該看哪一科?"
}

2. InputPath: $(預設)

將整個狀態傳遞給 Action:

{
  "question": "我頭痛又發燒,該看哪一科?"
}

Action 收到完整的 Workflow 狀態。

3. Action 執行

LLM 處理輸入並生成回應。

4. Action 輸出

{
  "text": "建議看家醫科。"
}

5. ResultPath: $.TriageResult(預設)

在此路徑將輸出儲存在 Workflow 狀態中:

{
  "question": "我頭痛又發燒,該看哪一科?",
  "TriageResult": {
    "text": "建議看家醫科。"
  }
}

Workflow 狀態現在包含原始輸入和 Action 結果。

6. OutputPath: $(預設)

將整個更新後的狀態傳遞給下一個 Action:

{
  "question": "我頭痛又發燒,該看哪一科?",
  "TriageResult": {
    "text": "建議看家醫科。"
  }
}

7. 使用結果

下一個 Action 現在可以引用 LLM 輸出:

{
  "summary.$": "$.TriageResult.text"
}

預設行為

InputPath: $(整個 Workflow 狀態)

  • Action 收到完整的 Workflow 狀態作為輸入
  • 可以透過 $.ActionName.field 存取任何前一個 Action 的輸出
  • 大多數 Action 使用預設值

ResultPath: $.ActionNameResult

Action 輸出儲存在基於 Action 名稱的路徑:

Action 名稱 ResultPath
LLMAction $.LLMActionResult
RetrievalAction $.RetrievalActionResult
TransformAction $.TransformActionResult

此命名慣例可防止多個 Action 依序執行時的輸出衝突。

改名 Action 後,ResultPath 不會自動更新

上表的對應只在「建立步驟的當下」成立一次。事後把 Action 改名,ResultPath 不會跟著變。 例如把「LLMAction」改名為「Triage」後,它的 ResultPath 仍然是 $.LLMActionResult,下游若引用 $.TriageResult 會抓到 null。要確認真正的 ResultPath,請到該步驟「輸入與輸出」分頁查看 ResultPath 欄位的實際值,必要時手動修改。

OutputPath: $(整個 Workflow 狀態)

  • 下一個 Action 收到完整的 Workflow 狀態
  • 維護所有前一個 Action 的輸出
  • 允許 Action 存取任何前一個 Action 的結果

存取 Action 輸出

要引用前一個 Action 的輸出,使用其 ResultPath:

{
  "input_text.$": "$.LLMActionResult.text",
  "retrieval_docs.$": "$.RetrievalActionResult.documents"
}

處理 External Memory

當 Action 勾選「Enable External Memory」時,其輸出會儲存在 External Memory 中:

Action 輸出:

{
  "action_type": "llm_action",
  "external_memory_id": "mem-abc123",
  "text": "Summary"
}

external_memory_id 欄位儲存在 ResultPath:

存取完整內容:

{
  "full_response.%": {
    "type": "external_memory",
    "id.$": "$.LLMActionResult.external_memory_id",
    "jsonpath": "$"
  }
}

→ 了解更多關於 External Memory 語法

了解 ResultPath

ResultPath 決定 Action 輸出在 Workflow 狀態中的儲存位置。這對以下情況很重要:

避免衝突

每個 Action 都有自己的 ResultPath($.ActionNameResult),防止 Action 覆寫彼此的輸出。

除錯

你可以檢查 Workflow 狀態來查看所有 Action 結果:

{
  "user_input": "...",
  "Step1Result": { ... },
  "Step2Result": { ... },
  "Step3Result": { ... }
}

狀態裡會多出一個 _lfe_system,那是系統自動加的

執行時,平台會自動在 Workflow 狀態裡注入一個 _lfe_system 物件,內含這次執行的系統資訊(例如 usergroupslfe_execution_idworkflow_id)。在「歷史」或除錯時看到它是正常的,不是你弄錯了。請不要去引用 _lfe_system 裡的值,它由系統管理,內容與格式可能變動。

資料存取

下一個 Action 可以存取任何前一個結果:

{
  "data_from_step1.$": "$.Step1Result.value",
  "data_from_step2.$": "$.Step2Result.output"
}

常見模式

在 Action 之間傳遞資料

// Action 1 輸出儲存在 $.Action1Result
{
  "processed_data": "..."
}

// Action 2 引用它
{
  "input.$": "$.Action1Result.processed_data"
}

結合多個 Action 的結果

{
  "llm_response.$": "$.LLMResult.text",
  "retrieved_docs.$": "$.RetrievalResult.documents",
  "api_data.$": "$.APIResult.body"
}

串連 Workflow 執行

// 啟動子 Workflow
{
  "workflow_name": "child-workflow",
  "input.$": "$.parent_data"
}

// 在 $.StartChildResult.execution_arn 儲存執行 ARN

// 檢查子 Workflow 狀態
{
  "execution_arn.$": "$.StartChildResult.execution_arn"
}

除錯技巧

檢查 ResultPath 命名:

  • Action 名為「ProcessData」→ 輸出預設$.ProcessDataResult
  • 但別只看名字猜:改名後 ResultPath 不會自動更新(見上方提醒),請到該步驟「輸入與輸出」分頁確認 ResultPath 的實際值

檢查 Workflow 狀態:

  • 使用 Pass Action 記錄當前狀態
  • 透過尋找 ResultPath 鍵來檢查哪些 Action 已執行

追蹤資料流:

  • 遵循 InputPath → Action → ResultPath → OutputPath 順序
  • 驗證每個階段收到預期的資料

最佳實踐

使用預設的 Path Parameter:

  • 預設行為適用於大多數 Workflow
  • 只有在有特定需求時才自訂

為 Action 命名具描述性:

  • ResultPath 基於 Action 名稱
  • 「FetchUserData」→ $.FetchUserDataResult(清楚)
  • 「Step1」→ $.Step1Result(不清楚)

記錄資料相依性:

  • 註記哪些 Action 輸出被下游 Action 使用
  • 在 Workflow 註解中明確資料流

何時 Path Parameter 重要

Path Parameter 通常是透明的,但了解它們有助於:

  • 除錯 - 追蹤資料儲存和存取的位置
  • 建構複雜 Workflow - 具有相互依賴的多個 Action
  • 使用 External Memory - 需要從 ResultPath 存取 external_memory_id
  • 最佳化效能 - 了解資料流以進行有效設計

相關主題