mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
4ad96b64e7
* Python: Migrate agent-framework-a2a to a2a-sdk v1.0
Upgrade the a2a-sdk dependency from v0.3.x to v1.0.0 and migrate all
source, tests, samples, and documentation to the v1.0 API.
Key changes:
- Dependency: a2a-sdk>=1.0.0,<2 (was >=0.3.5,<0.3.24)
- Types are now protobuf-based: Part replaces TextPart/FilePart/DataPart
- Enums use SCREAMING_SNAKE_CASE (e.g. TaskState.TASK_STATE_COMPLETED)
- Roles: Role.ROLE_AGENT, Role.ROLE_USER
- Client: SendMessageRequest wrapper, subscribe() replaces resubscribe()
- Server: A2AStarletteApplication replaced by Starlette + route factories
- DefaultRequestHandler now requires agent_card parameter
- TaskUpdater: final parameter removed, add_artifact gains last_chunk
- AgentCard.url removed; use supported_interfaces with AgentInterface
- Stream yields StreamResponse with WhichOneof('payload')
Closes #5661
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address PR review: validate fallback URL, remove unused task_id vars
- Raise ValueError with clear message when transport negotiation fails
and no fallback URL is available (neither url arg nor supported_interfaces)
- Remove unused task_id local in status_update branch
- Inline artifact_event.task_id directly in artifact_update branch
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
57 lines
1.4 KiB
Markdown
57 lines
1.4 KiB
Markdown
# A2A Package (agent-framework-a2a)
|
|
|
|
Agent-to-Agent (A2A) protocol support for inter-agent communication.
|
|
|
|
## Main Classes
|
|
|
|
- **`A2AAgent`** - Client to connect to remote A2A-compliant agents.
|
|
- **`A2AExecutor`** - Bridge to expose Agent Framework agents via the A2A protocol.
|
|
|
|
## Usage
|
|
|
|
### A2AAgent (Client)
|
|
|
|
```python
|
|
from agent_framework.a2a import A2AAgent
|
|
|
|
# Connect to a remote A2A agent
|
|
a2a_agent = A2AAgent(url="http://remote-agent/a2a")
|
|
response = await a2a_agent.run("Hello!")
|
|
```
|
|
|
|
### A2AExecutor (Server/Bridge)
|
|
|
|
```python
|
|
from agent_framework.a2a import A2AExecutor
|
|
from a2a.server.request_handlers import DefaultRequestHandler
|
|
from a2a.server.routes import create_agent_card_routes, create_jsonrpc_routes
|
|
from a2a.server.tasks import InMemoryTaskStore
|
|
from starlette.applications import Starlette
|
|
|
|
# Create an A2A executor for your agent
|
|
executor = A2AExecutor(agent=my_agent)
|
|
|
|
# Set up the request handler (agent_card is required)
|
|
request_handler = DefaultRequestHandler(
|
|
agent_executor=executor,
|
|
task_store=InMemoryTaskStore(),
|
|
agent_card=my_agent_card,
|
|
)
|
|
|
|
# Build a Starlette app with A2A routes
|
|
app = Starlette(
|
|
routes=[
|
|
*create_agent_card_routes(my_agent_card),
|
|
*create_jsonrpc_routes(request_handler),
|
|
]
|
|
)
|
|
```
|
|
|
|
## Import Path
|
|
|
|
```python
|
|
from agent_framework.a2a import A2AAgent, A2AExecutor
|
|
# or directly:
|
|
from agent_framework_a2a import A2AAgent, A2AExecutor
|
|
```
|