Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History
 
 

README.md

A2A Agent Examples

This sample demonstrates how to host and consume agents using the A2A (Agent2Agent) protocol with the agent_framework package. There are three runnable entry points:

Run this file To...
a2a_server.py Host an Agent Framework agent as an A2A-compliant server.
agent_with_a2a.py Connect to an A2A server and send requests (non-streaming and streaming).
a2a_agent_as_function_tools.py Convert A2A agent skills into function tools for a host agent.

The remaining files are supporting modules used by the server:

File Description
agent_definitions.py Agent and AgentCard factory definitions for invoice, policy, and logistics agents.
agent_executor.py Bridges the a2a-sdk AgentExecutor interface to Agent Framework agents.
invoice_data.py Mock invoice data and tool functions for the invoice agent.
a2a_server.http REST Client requests for testing the server directly from VS Code.

Environment Variables

Make sure to set the following environment variables before running the examples:

Required (Server)

  • FOUNDRY_PROJECT_ENDPOINT — Your Azure AI Foundry project endpoint
  • FOUNDRY_MODEL — Model deployment name (e.g. gpt-4o)

Required (Client)

  • A2A_AGENT_HOST — URL of the A2A server (e.g. http://localhost:5001/)

Required (Function Tools Sample)

  • A2A_AGENT_HOST — URL of the A2A server (e.g. http://localhost:5000/)
  • FOUNDRY_PROJECT_ENDPOINT — Your Azure AI Foundry project endpoint
  • FOUNDRY_MODEL — Model deployment name (e.g. gpt-4o)

Quick Start

All commands below should be run from this directory:

cd python/samples/04-hosting/a2a

1. Start the A2A Server

Pick an agent type and start the server (each in its own terminal):

uv run python a2a_server.py --agent-type invoice --port 5000
uv run python a2a_server.py --agent-type policy --port 5001
uv run python a2a_server.py --agent-type logistics --port 5002

You can run one agent or all three — each listens on its own port.

2. Run the A2A Client

In a separate terminal (from the same directory), point the client at a running server:

$env:A2A_AGENT_HOST = "http://localhost:5001/"
uv run python agent_with_a2a.py

3. Run the Function Tools Sample

This sample resolves the remote agent's skills and registers each one as a function tool on a host Foundry-backed agent. The host agent then autonomously selects the right skill to handle the user's request.

$env:A2A_AGENT_HOST = "http://localhost:5000/"
uv run python a2a_agent_as_function_tools.py