Skip to content

Commit 70575c7

Browse files
zyantwkoverholt
andauthored
#1438 - 1 A2A capabilities: Reasoning, Long-Running Tools, and Artifacts (#1912)
* #1438 - 1 A2A capabilities: Reasoning, Long-Running Tools, and Artifacts #1438 - 1 A2A capabilities: Reasoning, Long-Running Tools, and Artifacts * Update intro.md applied feedback * Simplify and reword supported capabilities section --------- Co-authored-by: Kristopher Overholt <koverholt@google.com>
1 parent af790ae commit 70575c7

1 file changed

Lines changed: 24 additions & 12 deletions

File tree

docs/a2a/intro.md

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ is often not enough. You will want to create specialized agents that can
55
collaborate to solve a problem. The [**Agent2Agent (A2A) Protocol**](https://a2a-protocol.org) is the
66
standard that allows these agents to communicate with each other.
77

8-
## When to Use A2A vs. Local Sub-Agents
8+
## When to use A2A vs. local sub-agents
99

1010
- **Local Sub-Agents:** These are agents that run *within the same application
1111
process* as your main agent. They are like internal modules or libraries, used
@@ -27,7 +27,7 @@ Consider using **A2A** when:
2727
- You want to enforce a **strong, formal contract** (the A2A protocol) between
2828
your system's components.
2929

30-
### When to Use A2A: Concrete Examples
30+
### When to use A2A: concrete examples
3131

3232
- **Integrating with a Third-Party Service:** Your main agent needs to get
3333
real-time stock prices from an external financial data provider. This
@@ -44,7 +44,7 @@ Consider using **A2A** when:
4444
contribute agents, and you need a strict contract for how these agents
4545
interact to ensure compatibility and stability.
4646

47-
### When NOT to Use A2A: Concrete Examples (Prefer Local Sub-Agents)
47+
### When NOT to use A2A: concrete examples (prefer local sub-agents)
4848

4949
- **Internal Code Organization:** You are breaking down a complex task within a
5050
single agent into smaller, manageable functions or modules (e.g., a
@@ -61,14 +61,14 @@ Consider using **A2A** when:
6161
require independent deployment or complex state management, a simple function
6262
or class within the same agent is more appropriate than a separate A2A agent.
6363

64-
## The A2A Workflow in ADK: A Simplified View
64+
## The A2A workflow in ADK: a simplified view
6565

6666
Agent Development Kit (ADK) simplifies the process of building and connecting
6767
agents using the A2A protocol. Here's a straightforward breakdown of how it
6868
works:
6969

7070
1. **Making an Agent Accessible (Exposing):** You start with an existing ADK
71-
agent that you want other agents to be able to interact with. The ADK
71+
agent that you want other agents to be able to interact with. ADK
7272
provides a simple way to "expose" this agent, turning it into an
7373
**A2AServer**. This server acts as a public interface, allowing other agents
7474
to send requests to your agent over a network. Think of it like setting up a
@@ -83,15 +83,27 @@ works:
8383

8484
From your perspective as a developer, once you've set up this connection,
8585
interacting with the remote agent feels just like interacting with a local tool
86-
or function. The ADK abstracts away the network layer, making distributed agent
86+
or function. ADK abstracts away the network layer, making distributed agent
8787
systems as easy to work with as local ones.
8888

89-
## Visualizing the A2A Workflow
89+
## Supported capabilities in A2A
90+
91+
ADK's A2A integration provides three core capabilities for complex agentic
92+
systems:
93+
94+
- **Reasoning:** Preserves a model's reasoning/thought traces when messages pass
95+
between agents over A2A.
96+
- **Long-Running Tools:** Tracks tool calls that run longer than a standard
97+
response, so long-running operations don't time out.
98+
- **Artifacts:** Passes file artifacts (such as generated files) between agents
99+
over A2A.
100+
101+
## Visualizing the A2A workflow
90102

91103
To further clarify the A2A workflow, let's look at the "before and after" for
92104
both exposing and consuming agents, and then the combined system.
93105

94-
### Exposing an Agent
106+
### Exposing an agent
95107

96108
**Before Exposing:**
97109
Your agent code runs as a standalone component, but in this scenario, you want
@@ -128,7 +140,7 @@ accessible over a network to other remote agents.
128140
+-----------------------------+
129141
```
130142

131-
### Consuming an Agent
143+
### Consuming an agent
132144

133145
**Before Consuming:**
134146
Your agent (referred to as the "Root Agent" in this context) is the application
@@ -160,7 +172,7 @@ remote agent.
160172
(Now talks to remote agent via RemoteA2aAgent)
161173
```
162174

163-
### Final System (Combined View)
175+
### Final system (combined view)
164176

165177
This diagram shows how the consuming and exposing parts connect to form a
166178
complete A2A system.
@@ -192,7 +204,7 @@ Exposing Side:
192204
+-------------------+
193205
```
194206

195-
## Concrete Use Case: Customer Service and Product Catalog Agents
207+
## Concrete use case: customer service and product catalog agents
196208

197209
Let's consider a practical example: a **Customer Service Agent** that needs to
198210
retrieve product information from a separate **Product Catalog Agent**.
@@ -248,7 +260,7 @@ Server. Then, the Customer Service Agent can simply call methods on the
248260
communication to the Product Catalog Agent. This allows for clear separation of
249261
concerns and easy integration of specialized agents.
250262

251-
## Next Steps
263+
## Next steps
252264

253265
Now that you understand the "why" of A2A, let's dive into the "how."
254266

0 commit comments

Comments
 (0)