Agent2Agent (A2A) is a protocol for AI agents to communicate amongst themselves. These Agents though built by different vendors by subscribing to the common a2a protocol will have a standardized way of inter-operating.
Getting going with A2A
(I) As a starting point got the python a2a-server installed.
pip install a2a-server
Issue 1: Compatibility issue between latest a2a-server & a2a-json-rpc:
a2a-server & a2a-server also brings in a2a-json-rpc: but there were compatibility issues between the latest a2a-json-rpc (ver.0.4.0) & a2a-server (ver. 0.6.1)
ImportError: cannot import name 'TaskSendParams' from 'a2a_json_rpc.spec' (.../python3.13/site-packages/a2a_json_rpc/spec.py)
Downgrading a2a-json-rpc to previous 0.3.0 fixed it:
pip install a2a-json-rpc==0.3.0
(II) To get the a2a-server running a agent.yaml file needs to be built with the configs like host, port, handler, provider, model, etc:
server:
host: 127.0.0.1
port: 8080
handlers:
use_discovery: false
default_handler: chuk_pirate
chuk_pirate:
type: a2a_server.tasks.handlers.chuk.chuk_agent_handler.ChukAgentHandler
agent: a2a_server.sample_agents.chuk_pirate.create_pirate_agent
name: chuk_pirate
enable_sessions: false
enable_tools: false
provider: "ollama"
model: "llama3.2:1b"
version: "1.0.1"
agent_card:
name: Pirate Agent
description: "Captain Blackbeard's Ghost with conversation memory"
capabilities:
streaming: false
sessions: false
tools: false
--
Next, start the server using:
a2a-server -c agent.yaml --log-level debug
(III) Test a2a-server endpoint from browser
Open http://127.0.0.1:8080/ which will lists the different Agents.
Agent Card(s):
http://127.0.0.1:8080/chuk_pirate/.well-known/agent.json
(IV) Issues a2a-server
Issue 2: Agent Card endpoint url
Firstly, the Agent Card end point is that this is no longer a valid end point. As per the latest Agent Card protocol the Agent Card needs to be served from the location: http://<base_url>/ .well-known/agent-card.json.
- agent-card.json (& not agent.json)
- Without the agent's name (i.e. without chuk_pirate)
The valid one would looks like:
http://127.0.0.1:8080/chuk_pirate/.well-known/agent.json
Issue 3: Error message/send not found
The other issue is that the seems to be a lack of support for the method "message/ send" used to send messages and chat with the agent. The curl request fails with an error:
curl -iv -H "Content-Type: application/json" http://127.0.0.1:8080/chuk_pirate -d '{"jsonrpc":"2.0","id":"ee22f765-0253-40a0-a29f-c786b090889d","method":"message/send","params":{"message":{"role":"user","parts":[{"text":"hello there!","kind":"text"}],"messageId":"ccaf4715-712e-40c6-82bc-634a7a7136f2","kind":"message"},"configuration":{"blocking":false}}}'
{"jsonrpc":"2.0","id":"ee22f765-0253-40a0-a29f-c786b090889d","result":null,"error":{"code":-32601,"message":"message/send not found"}}
Due to all these issues with a2a-server and its lack of documentation there's no clarity on the library. So it's a no-go for the moment atleast.
No comments:
Post a Comment