• About Us
  • Disclaimer
  • Contact Us
  • Privacy Policy
Wednesday, July 1, 2026
mGrowTech
No Result
View All Result
  • Technology And Software
    • Account Based Marketing
    • Channel Marketing
    • Marketing Automation
      • Al, Analytics and Automation
      • Ad Management
  • Digital Marketing
    • Social Media Management
    • Google Marketing
  • Direct Marketing
    • Brand Management
    • Marketing Attribution and Consulting
  • Mobile Marketing
  • Event Management
  • PR Solutions
  • Technology And Software
    • Account Based Marketing
    • Channel Marketing
    • Marketing Automation
      • Al, Analytics and Automation
      • Ad Management
  • Digital Marketing
    • Social Media Management
    • Google Marketing
  • Direct Marketing
    • Brand Management
    • Marketing Attribution and Consulting
  • Mobile Marketing
  • Event Management
  • PR Solutions
No Result
View All Result
mGrowTech
No Result
View All Result
Home Google Marketing

Build reliable multi-agent applications with ADK Go 2.0. Discover our new graph-based workflow engine, built-in human-in-the-loop, and dynamic orchestration

Josh by Josh
July 1, 2026
in Google Marketing
0
Build reliable multi-agent applications with ADK Go 2.0. Discover our new graph-based workflow engine, built-in human-in-the-loop, and dynamic orchestration


Gemini_Gen_ADKGo20_banner_blog

ADK for Go 2.0: build agent workflows as a graph

Building real-world agent applications is rarely as simple as sending a single prompt. Production agents must classify, branch, fan out, ask a human to approve something, retry on failure, and loop until done. Expressing that complex orchestration as ad-hoc control flow gets brittle fast.

Since its 1.0 release, Agent Development Kit (ADK) for Go has helped Go developers build production agents with a clean, idiomatic API — strong typing, iter.Seq2 event streams, and a runtime that fits naturally into existing Go services. That foundation has been a real success, and it’s exactly what made the next step possible.

Today we’re excited to share ADK for Go 2.0. The headline is a brand-new, first-class way to compose multi-agent applications: a graph-based workflow engine. Alongside it come human-in-the-loop (HITL) as a built-in primitive, dynamic orchestration written in plain Go, LLM agent modes, and a unified node runtime that brings all of this together — single agents and full graphs now run on the same execution model.

If you’ve followed Python ADK 2.0, this will feel familiar: it’s the same graph-first direction, designed from the ground up to feel like Go.

Why a graph?

Real agent applications are rarely a single prompt. They classify, branch, fan out to specialists, gather results, ask a human to approve something, retry on failure, and loop until done. Expressing that as ad-hoc control flow gets brittle fast.

ADK 2.0 lets you describe the shape of your application as a graph of nodes connected by edges, and hands execution to a scheduler that knows how to run it concurrently, persist its state, pause for a human, and resume later — even across process restarts. Here is how simple it is to chain nodes together:

workflow_graph

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,
})

Go

That wf is just an agent.Agent. It runs in the same runner, launcher, and console you already use — no special harness, no new server. A graph is an agent.

The building blocks

Nodes for everything

A node is any unit of work that implements the Node interface. You rarely write that interface by hand — ADK ships typed node constructors for the common cases:

  • Function nodes wrap a plain typed Go function. Generics infer the input/output schemas for you:
workflow.NewFunctionNode("classify",
    func(ctx agent.Context, in string) (Category, error) { ... }, cfg)

Go

  • Emitting function nodes are function nodes that also get an emit callback, so a single function can stream events or pause for a human without dropping down to a dynamic node:
workflow.NewEmittingFunctionNode("progress",
    func(ctx agent.Context, in Job, emit func(*session.Event) error) (Result, error) { ... }, cfg)

Go

  • Agent nodes drop any agent.Agent (like an LlmAgent) into the graph.
  • Tool nodes turn a tool.Tool into a graph step.
  • Join nodes are fan-in barriers: they wait for all predecessors and hand you a map of their outputs.
  • Dynamic nodes let you orchestrate in code (more on this below).
  • Workflow nodes embed an entire sub-workflow as a single node — graphs compose.
  • Parallel workers run a node concurrently across every item in a list and aggregate the results.
  • State-bound nodes (NewFunctionNodeFromState) pull selected session-state values straight into a typed Params struct via state:"<key>" tags — no manual state plumbing.

Edges, routing, and the shapes you need

Edges connect nodes, and they can carry routing conditions. A node emits a routing value; matching edges fire. That single idea gives you every control-flow shape you need:

b := workflow.NewEdgeBuilder()
b.AddRoutes(router, map[string]workflow.Node{
    "question":    answerNode,
    "statement":   commentNode,
    "exclamation": reactNode,
})
b.AddFanOut(planner, researchA, researchB, researchC) // parallel branches
b.AddFanIn(join, researchA, researchB, researchC)       // gather results

Go

Sequential chains, conditional routers, fan-out/fan-in, nested sub-graphs, and even loops (a completed node can be re-triggered, so cycles are first-class) — all from edges and routes. Standard routes come in StringRoute, IntRoute, BoolRoute, MultiRoute, and a Default that fires when nothing else matches. For deeper configuration, leverage the Route interface.

Let an LLM steer the graph

One of the most useful patterns is using a model as the brain of a router. An LlmAgent classifies the user’s message; a trivial function emits the matching route; the graph dispatches to the right handler:

User -> What time is it?    Agent -> question     answering question...
User -> Hello world!        Agent -> exclamation  reacting to exclamation...
User -> The sky is blue.    Agent -> statement    commenting on statement...

Plain text

The model makes the decision; the graph makes it reliable, observable, and resumable. (See examples/workflow/routing/llm/.)

Dynamic orchestration — in plain Go

Sometimes the execution order isn’t known until runtime: it depends on data, on a loop count, on what the model just said. For that, ADK 2.0 gives you dynamic nodes, where the orchestration body is ordinary Go code that calls RunNode(...) for each child:

greeter := workflow.NewDynamicNode("greeter_workflow",
    func(nc agent.Context, in string, emit func(*session.Event) error) (string, error) {
        return workflow.RunNode[string](nc, greeterNode, in)
    },
    workflow.NodeConfig{},
)

Go

Loops, conditionals, accumulation, fan-out across a dynamic list — all expressed with the Go you already know. Options like WithRunID, WithUseSubBranch, WithUseAsOutput, and WithIsolationScope give you precise control over child identity, history isolation, and output delegation. This is the Go counterpart to Python ADK’s dynamic graphs.

Human-in-the-loop, built in

Production agents often need a human to approve, correct, or supply something mid-run. In ADK 2.0, any node can pause the graph and ask a human a question — and the workflow durably waits for the answer:

event := workflow.NewRequestInputEvent(ctx, session.RequestInput{
    InterruptID:    "approve_refund",
    Message:        "Approve a $200 refund? (yes/no)",
    ResponseSchema: schema,
})
// yield the event; the node moves to "waiting"

Go

When the human replies on a later turn, the workflow resumes. You choose how:

  • Handoff — the answer flows straight to the next node.
  • Re-entry — the paused node re-runs with the human’s response available via ctx.ResumedInput(...).

And resume is durable. The run state lives in the session, and ADK can even reconstruct a paused workflow by scanning session history — so a workflow can resume after a process restart, or even across different runtimes, because the interrupt format is shared with Python ADK. Responses are validated against a schema, resume is idempotent, and you get clear errors (ErrInvalidResumeResponse, ErrNothingToResume) when something doesn’t line up.

Both the console launcher and the Web UI understands HITL out of the box, surfacing both tool-confirmation prompts and workflow input requests.

Resilience without the boilerplate

Every node can carry a retry policy with exponential backoff and jitter — no external dependency required:

cfg := workflow.NodeConfig{ RetryConfig: workflow.DefaultRetryConfig() }
// 5 attempts, 1s initial delay, 60s cap, 2x backoff, full jitter

Go

Add a per-node Timeout, cap graph-wide concurrency with WithMaxConcurrency(n), and isolate parallel branches so one branch’s chatter never leaks into another’s LLM prompt history. The scheduler handles the goroutines, channels, backpressure, and cancellation for you.

Agent modes and one runtime to run them all

ADK 2.0 introduces modes for LLM agents — Chat, Task, and SingleTurn — so a coordinator can chat with the user while sub-agents quietly complete tasks or run single-shot. The right helper tools (finish_task, single_turn, task) are installed automatically based on each agent’s role.

Under the hood, the runner now drives a plain LlmAgent through the same node runtime that powers workflows. The payoff: single-agent apps and full graphs share one execution model, and human-in-the-loop now works for a plain LLM agent too — not just inside a workflow.

We also smoothed the programming model: ToolContext and CallbackContext are now a single unified to agent.Context — one type to learn, whether you’re writing a tool, a callback, or a graph node — and node/agent execution shows up in one consistent telemetry span tree, so you can see exactly what your graph did.

Upgrading from 1.0

ADK 2.0 is highly additive — the entire workflow engine is new packages you opt into. There are a few new and breaking changes that come with unifying the runtime; each has a simple, mechanical fix:

  • Node and node-function signatures take agent.Context. If you write nodes or node functions, change the first parameter from agent.InvocationContext to agent.Context (it embeds InvocationContext, so every method you used still works):
// before:  func(ctx agent.InvocationContext, in string) (string, error)
// after:   func(ctx agent.Context,           in string) (string, error)

Go

  • One unified context. ToolContext, CallbackContext are gone – tools, callbacks, and workflow nodes all receive agent.Context directly. If you mocked a context in tests, agent/context_mock.go is retained; use StrictContextMock from that file as your test double.
  • Custom InvocationContext implementations need two methods: IsolationScope() and ResumedInput(id string). Most code embeds the provided implementation and gets these for free.
  • Event streams are richer. Events now carry node fields (IsolationScope, Output,Routes,RequestedInput) and a metadata field (NodeInfo). If you assert on exact session.Event equality in tests, expect the new fields; custom session stores should persist them.
  • llmagent.New may install mode-specific tools. If you set sub-agent modes, the effective tool set reflects them; task-mode agents can’t be used as static graph nodes.
  • session.NewEvent takes a context. The signature is now NewEvent(ctx context.Context, invocationID string). Migrate call sites by passing the context.Context already in scope as the first argument.

That’s the whole list. Public signatures for runner.Run/RunLive, agenttool, and the llmagent callbacks are unchanged. For step-by-step before/after instructions, see the ADK Go 2.0 migration guide.

Try it

The fastest way to get a feel for ADK 2.0 is the new workflow examples:

go run ./examples/workflow/basic/
go run ./examples/workflow/routing/llm/      # LLM-as-router
go run ./examples/workflow/dynamic/hitl/     # dynamic + human-in-the-loop
go run ./examples/workflow/hitl_rerun/       # HITL with re-entry resume
go run ./examples/workflow/complex/          # a larger, multi-shape graph

Shell

ADK 1.0 proved that building serious agents in Go could be clean and productive. ADK 2.0 takes the next step: compose those agents into reliable, observable, resumable workflows — as a graph, in idiomatic Go, with humans in the loop when it matters.

We can’t wait to see what you build.

— The ADK for Go team



Source_link

READ ALSO

macOS launch, connected apps and more

Google’s NotebookLM can sum up your research in a TikTok-style clip

Related Posts

macOS launch, connected apps and more
Google Marketing

macOS launch, connected apps and more

July 1, 2026
Google’s NotebookLM can sum up your research in a TikTok-style clip
Google Marketing

Google’s NotebookLM can sum up your research in a TikTok-style clip

July 1, 2026
Driving the Agent Quality Flywheel from Your Coding Agent
Google Marketing

Driving the Agent Quality Flywheel from Your Coding Agent

June 30, 2026
Read Google’s 2026 Environmental Report
Google Marketing

Read Google’s 2026 Environmental Report

June 30, 2026
Google pulls the plug on Tenor API, kills GIF libraries in other apps
Google Marketing

Google pulls the plug on Tenor API, kills GIF libraries in other apps

June 30, 2026
Building a nation of AI trailblazers
Google Marketing

Building a nation of AI trailblazers

June 30, 2026
Next Post
I Reviewed 10 Best Credit And Collections Software for 2026

I Reviewed 10 Best Credit And Collections Software for 2026

POPULAR NEWS

Trump ends trade talks with Canada over a digital services tax

Trump ends trade talks with Canada over a digital services tax

June 28, 2025
15 Trending Songs on TikTok in 2025 (+ How to Use Them)

15 Trending Songs on TikTok in 2025 (+ How to Use Them)

June 18, 2025
Communication Effectiveness Skills For Business Leaders

Communication Effectiveness Skills For Business Leaders

June 10, 2025
App Development Cost in Singapore: Pricing Breakdown & Insights

App Development Cost in Singapore: Pricing Breakdown & Insights

June 22, 2025
Comparing the Top 7 Large Language Models LLMs/Systems for Coding in 2025

Comparing the Top 7 Large Language Models LLMs/Systems for Coding in 2025

November 4, 2025

EDITOR'S PICK

Study: “Reaching out” Tops the List of Most Overused Email Buzzwords

Study: “Reaching out” Tops the List of Most Overused Email Buzzwords

January 21, 2026
10 Gemini prompts to help you keep your New Year’s resolutions

10 Gemini prompts to help you keep your New Year’s resolutions

December 21, 2025
Google partners with Latin American governments on 3 new AI initiatives

Google partners with Latin American governments on 3 new AI initiatives

April 16, 2026
Yellow.ai Launches Nexus Vox: The First Enterprise Voice AI That Can Clone Any Brand’s Voice and Deploy It Across 500+ Languages in Under a Second

Yellow.ai Launches Nexus Vox: The First Enterprise Voice AI That Can Clone Any Brand’s Voice and Deploy It Across 500+ Languages in Under a Second

May 5, 2026

About

We bring you the best Premium WordPress Themes that perfect for news, magazine, personal blog, etc. Check our landing page for details.

Follow us

Categories

  • Account Based Marketing
  • Ad Management
  • Al, Analytics and Automation
  • Brand Management
  • Channel Marketing
  • Digital Marketing
  • Direct Marketing
  • Event Management
  • Google Marketing
  • Marketing Attribution and Consulting
  • Marketing Automation
  • Mobile Marketing
  • PR Solutions
  • Social Media Management
  • Technology And Software
  • Uncategorized

Recent Posts

  • 42 Pinterest stats that matter to marketers in 2026
  • Multimodal Browser AI with Transformers.js for Images and Speech
  • Truly Deeply’s brand work helps startup Svelte reset the continence category – Truly Deeply – Brand Strategy & Creative Agency Melbourne
  • I Reviewed 10 Best Credit And Collections Software for 2026
  • About Us
  • Disclaimer
  • Contact Us
  • Privacy Policy
No Result
View All Result
  • Technology And Software
    • Account Based Marketing
    • Channel Marketing
    • Marketing Automation
      • Al, Analytics and Automation
      • Ad Management
  • Digital Marketing
    • Social Media Management
    • Google Marketing
  • Direct Marketing
    • Brand Management
    • Marketing Attribution and Consulting
  • Mobile Marketing
  • Event Management
  • PR Solutions