A2A — Para Desenvolvedores¶
Configuração do Cliente A2A¶
A iFriend pode chamar agentes externos usando o A2AClientManager.
Via Environment Variable¶
# JSON com agentes registrados
export A2A_EXTERNAL_AGENTS='{
"turismobot": {
"url": "https://turismobot.example.com/a2a/",
"token": "your-token",
"name": "TurismoBot",
"description": "Agente de pacotes turísticos"
}
}'
Via Código¶
from ifriend_agent.a2a_client import get_a2a_client_manager
manager = get_a2a_client_manager()
manager.register_agent(
agent_id="turismobot",
url="https://turismobot.example.com/a2a/",
auth_token="your-token",
name="TurismoBot",
)
Usando nas Tools¶
from ifriend_agent.tools.a2a_client_tools import (
listar_agentes_a2a,
chamar_agente_a2a,
consultar_task_a2a,
)
# Listar agentes disponíveis
agents = await listar_agentes_a2a(tool_context)
# Chamar agente externo
result = await chamar_agente_a2a(
agent_id="turismobot",
mensagem="Quais pacotes para Buenos Aires?",
session_id="sess-123",
)
Arquitetura do Módulo¶
ifriend_agent/a2a_client.py
├── A2AClientManager # Gerencia múltiplos agentes
├── A2AClient # Cliente para agente específico
├── RegisteredAgent # Dataclass de agente
└── A2AResponse # Dataclass de resposta
ifriend_agent/tools/a2a_client_tools.py
├── listar_agentes_a2a_tool
├── chamar_agente_a2a_tool
└── consultar_task_a2a_tool
Testes¶
cd ifriend_agent
pytest tests/test_a2a_client.py -v
Configurações¶
| Variável | Default | Descrição |
|---|---|---|
A2A_CLIENT_TIMEOUT |
60 | Timeout em segundos |
A2A_EXTERNAL_AGENTS |
{} | JSON de agentes |