Agent Development Kit(ADK)for Go 2.0 がリリースされた。本番向けの分岐・並列・再試行・人間承認を、ノードとエッジのグラフとして記述できるワークフローエンジンが中心である。Python ADK 2.0 と同じグラフ優先の方向性を、Go らしい API で提供する。
go
import "google.golang.org/adk/v2/workflow"
upper := workflow.NewFunctionNode("upper", upperFn, cfg)
suffix := workflow.NewFunctionNode("suffix", suffixFn, cfg)
edges := workflow.Chain(workflow.Start, upper, suffix)
wf, _ := workflowagent.New(workflowagent.Config{
Name: "simple_sequence_workflow",
Edges: edges,
})生成した wf は通常の agent.Agent であり、既存の runner・launcher・console でそのまま動く。主な変更は次のとおり。
- ノード種別: Function / Emitting Function / Agent / Tool / Join / Dynamic / Workflow / Parallel workers など。エッジのルートで条件分岐、fan-out / fan-in、ループを表現できる。
- 動的オーケストレーション:
NewDynamicNodeの中で通常の Go としてRunNodeを呼び、実行時に順序や並列を決められる。 - Human-in-the-loop: ノードが入力要求イベントを yield するとワークフローは待機し、handoff または re-entry で再開する。セッションに状態を残し、プロセス再起動後や Python ADK と共有する割り込み形式でも再開できる。
- 耐障害性: ノード単位のリトライ(指数バックオフとジッタ)、Timeout、
WithMaxConcurrency、並列ブランチの履歴隔離。 - LLM エージェントのモード:
Chat/Task/SingleTurn。単体エージェントとグラフが同一のノード実行モデルで動き、HITL はプレーンな LLM エージェントでも使える。 - コンテキスト統一:
ToolContextとCallbackContextはagent.Contextに統合された。ノード関数の第一引数もagent.InvocationContextからagent.Contextへ移す。
ワークフローエンジン自体は新規パッケージへの opt-in だが、ランタイム統合に伴う破壊的変更がある。import パスは google.golang.org/adk/v2 になり、session.NewEvent は context.Context を第一引数に取る。