Skip to content
55 changes: 53 additions & 2 deletions docs/agents/workflow-agents/sequential-agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,59 @@ When the `SequentialAgent`'s `Run Async` method is called, it performs the follo

![Sequential Agent](../../assets/sequential-agent.png){: width="600"}

### Early Exit with `exit_sequence`

The `SequentialAgent` supports early termination when a sub-agent encounters a terminal condition that makes continuing the sequence unnecessary or impossible.

#### When to use early exit:
- **Validation failures:** A validation agent detects critical errors
- **Empty results:** A search agent finds no data to process
- **Blocking conditions:** An agent hits an unrecoverable state
- **Conditional logic:** Based on input analysis, remaining steps aren't needed

#### Usage

Sub-agents can call the `exit_sequence` tool to terminate the sequence early:

```python
from google.adk.tools import exit_sequence

# In your agent's tool function
def validate_input(tool_context: ToolContext):
if critical_validation_fails:
exit_sequence(tool_context) # Stops the sequence here
return "Validation failed - terminating sequence"
```

#### Example: Search → Analysis → Report Pipeline

```python
from google.adk.agents import LlmAgent, SequentialAgent
from google.adk.tools import exit_sequence, google_search

search_agent = LlmAgent(
name="SearchAgent",
instruction="Search for results. If no useful results found, call exit_sequence.",
tools=[google_search, exit_sequence]
)

analysis_agent = LlmAgent(
name="AnalysisAgent",
instruction="Analyze the search results."
)

report_agent = LlmAgent(
name="ReportAgent",
instruction="Generate final report."
)

# If search finds no results, analysis and report agents won't execute
pipeline = SequentialAgent(sub_agents=[search_agent, analysis_agent, report_agent])
```

!!! note "Async Mode Only"
Early exit via `exit_sequence` is currently supported in async mode only. Live streaming mode uses the existing `task_completed()` mechanism for natural completion.

### Full Example: Code Development Pipeline

Consider a simplified code development pipeline:
Expand Down Expand Up @@ -51,5 +104,3 @@ This ensures the code is written, *then* reviewed, and *finally* refactored, in
```java
--8<-- "examples/java/snippets/src/main/java/agents/workflow/SequentialAgentExample.java:init"
```