Sort keys when saving rebuilt JSON test files and re-assign sequential event IDs to avoid gaps from filtered events. Also applied these changes to all existing test files in the contributing folder. Change-Id: Ib126228f016db1d28030eee4f7d9d8cbc604e038
ADK Workflow Loop Sample
Overview
This sample demonstrates how to create a feedback loop between different nodes in ADK Workflows.
It takes a user-provided topic and uses the generate_headline agent to write a headline. The evaluate_headline agent then grades the headline as either "tech-related" or "unrelated", providing feedback if it's unrelated. The route_headline function checks this grade. If the headline is "unrelated", the workflow loops back to the generate_headline agent, passing the feedback so it can try again. This process repeats until a "tech-related" headline is generated.
In ADK Workflows, loops allow for iterative refinement and evaluation by conditionally routing execution back to an earlier node in the sequence.
Sample Inputs
flowerquantum mechanicsrenewable energy
Graph
[ START ]
|
v
[ process_input ]
|
v
+->[ generate_headline ]
| |
| v
(feedback) [ evaluate_headline ]
| |
| v
| [ route_headline ]
| / \
+--"unrelated" "tech-related"
|
v
(Loop ends)
How To
-
Define a node (like
route_headline) that yields anEventwith a specific route based on a condition:def route_headline(node_input: Feedback): return Event(route=node_input.grade) -
In the
Workflowedges definition, create a conditional edge that connects the routing node back to a previous node in the workflow, using a routing map dict:(route_headline, {"unrelated": generate_headline})This creates the cycle. If the route yielded by
route_headlineis "unrelated", execution jumps back togenerate_headline.