* Python: Add long-running agents and background responses support - Add ContinuationToken TypedDict to core types - Add continuation_token field to ChatResponse, ChatResponseUpdate, AgentResponse, and AgentResponseUpdate - Add background and continuation_token options to OpenAIResponsesOptions - Implement polling via responses.retrieve() and streaming resumption in RawOpenAIResponsesClient - Propagate continuation tokens through agent run() and map_chat_to_agent_update - Fix streaming telemetry 'Failed to detach context' error in both ChatTelemetryLayer and AgentTelemetryLayer by avoiding trace.use_span() context attachment for async-managed spans - Add 14 unit tests for continuation token types and background flows - Add background_responses sample showing polling and stream resumption Fixes #2478 * Python: Add A2A long-running task support via ContinuationToken - Make ContinuationToken provider-agnostic (total=False, optional task_id/context_id fields) - Add background param to A2AAgent.run() controlling token emission - Add poll_task() for single-request task state retrieval - Add resubscribe support via continuation_token param on run() - Extract _updates_from_task() and _map_a2a_stream() for cleaner code - Streamline run()/streaming by removing intermediate _stream_updates wrapper - Update A2A sample to show background=False (default) with link to background_responses sample - Remove stale BareAgent from __all__ - Add 12 new A2A continuation token tests * fix logic for overriding continuation token when done * refactored ContinuationToken setup
A2A Agent Examples
This folder contains examples demonstrating how to create and use agents with the A2A (Agent2Agent) protocol from the agent_framework package to communicate with remote A2A agents.
By default the A2AAgent waits for the remote agent to finish before returning (background=False), so long-running A2A tasks are handled transparently. For advanced scenarios where you need to poll or resubscribe to in-progress tasks using continuation tokens, see the background responses sample.
For more information about the A2A protocol specification, visit: https://a2a-protocol.org/latest/
Examples
| File | Description |
|---|---|
agent_with_a2a.py |
Demonstrates agent discovery, non-streaming and streaming responses using the A2A protocol. |
Environment Variables
Make sure to set the following environment variables before running the example:
Required
A2A_AGENT_HOST: URL of a single A2A agent (for simple sample, e.g.,http://localhost:5001/)
Quick Testing with .NET A2A Servers
For quick testing and demonstration, you can use the pre-built .NET A2A servers from this repository:
Quick Testing Reference: Use the .NET A2A Client Server sample at:
..\agent-framework\dotnet\samples\A2AClientServer
Run Python A2A Sample
# Simple A2A sample (single agent)
uv run python agent_with_a2a.py