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 物件,內含這次執行的系統資訊(例如 user、groups、lfe_execution_id、workflow_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 - 最佳化效能 - 了解資料流以進行有效設計
相關主題¶
- JSONPath 語法 - 使用
$.引用資料 - External Memory 語法 - 存取大型資料
- Pass Action 指南 - 資料轉換與除錯