iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Build on Google AI

ADK × A2A × Cloud Run 打造可部署、可互通的 Agent 系統系列 第 20 篇

Day 20:LangGraph(上)它跟 AI 無關,是一台狀態機

  • 分享至 

  • xImage
  •  

第一次看 LangGraph 的教學,我的印象是「一個很複雜的 AI 框架」。這個印象是錯的,而且這個錯誤讓我多花了不少時間。

LangGraph 本身跟 AI 無關。它是一台狀態機引擎。

四個構件

  • State:共用資料結構,通常是一個 TypedDict。所有節點讀寫同一份。
  • Node:一個函式。收 state,回傳「我要更新哪些欄位」。
  • Edge:節點之間的走向。
  • Conditional edge:一個函式,決定接下來往哪走。可以指回自己形成迴圈。

就這四個。沒有一個跟模型有關。

換成白話

我自己是換成一個報帳流程才真的看懂的:

  • State 是一張表單,上面有欄位
  • Node 是一張桌子,規矩是「收一張表單,回傳我要改哪些欄位」
  • Edge 是桌子之間的動線
  • Conditional edge 是門口的號誌,它不是桌子,只負責指路

表單在桌子之間傳遞,每張桌子改幾個欄位,號誌決定下一站去哪。

關鍵是:節點裡放純函式也能跑完整流程,不需要任何 LLM。 你可以先用 if amount > 10000: return {"需要主管簽核": True} 這種純機械版本把流程跑通,確認動線正確,之後再把某個節點換成模型呼叫。流程結構完全不用改。

這個解耦才是重點

流程可控性由你決定,智慧來源可替換。

你畫的圖決定了系統會走哪些步驟、什麼條件下重試、哪一步要停下來等人。這部分是確定性的,可以測試也可以印出來給人看。至於某個節點裡到底是呼叫 GPT 還是查資料庫還是跑一段 regex,那是節點自己的事。

反過來說,如果你的系統裡「會不會重試」這件事是由模型在 prompt 裡自己決定的,那你就沒有這個解耦。這是明天跟後天要討論的取捨。

三個新手最常搞錯的地方

  1. 以為它是 AI 框架。它是流程引擎,AI 是你放進節點的東西。
  2. 以為 node 要回傳整份 state。只回傳要改的欄位,其餘自動保留。第一次寫的時候我回傳了整份,結果併發改動互相蓋掉。
  3. 忘記 compile()。藍圖與可執行體是兩個東西,畫完圖要編譯才能跑。

第三點的錯誤訊息不太友善,值得先記起來。

明天

講兩個真正讓它跟 chain 拉開差距的功能:conditional edge 的迴圈,以及 checkpointer。後者是要做 human-in-the-loop 系統時的硬需求。


上一篇
Day 19:Executor(下)反向三明治
下一篇
Day 21:LangGraph(中)conditional edge 與什麼時候需要迴圈
系列文
ADK × A2A × Cloud Run 打造可部署、可互通的 Agent 系統 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言