Skip to content

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