Skip to content

Go + Google ADK (multi-agente)

Help-desk com um coordenador que delega para três sub-agentes especialistas (billing, technical, escalation). Construído com google.golang.org/adk.

ADK Go ainda é marcado como experimental pela Google. O exemplo está fixado em v1.2.0.

Arquitetura

   POST /chat ──► coordenador (LLM)
                  │
                  └─ transfer_to_agent ─► billing    ──► lookup_invoice
                                       └► technical  ──► check_service_status
                                       └► escalation ──► create_ticket

O mecanismo transfer_to_agent é nativo do ADK: o coordenador define SubAgents na sua Config, e o framework roteia para o sub-agente certo com base no prompt.

Deploy

# 1. Criar a app
tsuru app create helpdesk go -o shared-free

# 2. Configurar a chave do Gemini (https://aistudio.google.com/apikey)
tsuru env-set -a helpdesk AGENT_GEMINI_API_KEY=SUA_CHAVE --private

# 3. Deploy
cd go-adk-multiagent
tsuru app deploy -a helpdesk .

Variáveis

VariávelPadrãoDescrição
AGENT_GEMINI_API_KEYObrigatória. Chave da API do Gemini.
AGENT_GEMINI_MODELgemini-2.5-flashId do modelo Gemini.
AGENT_APP_NAMEhelpdeskNome da app passado ao runner do ADK.

Testar

APP=https://helpdesk.coffeece.com

curl -sX POST $APP/chat -H 'Content-Type: application/json' \
  -d '{"session_id":"s1","message":"minha fatura 1234 está estranha"}' | jq
# resposta inclui "agent": "billing"

curl -sX POST $APP/chat -H 'Content-Type: application/json' \
  -d '{"session_id":"s1","message":"o banco de dados caiu?"}' | jq
# "agent": "technical"

curl -sX POST $APP/chat -H 'Content-Type: application/json' \
  -d '{"session_id":"s1","message":"isso é inaceitável, quero falar com humano"}' | jq
# "agent": "escalation" — devolve um ticket id

Limitações

  • Sessões ficam em memória (session.InMemoryService()). Restart da app perde o histórico. Para produção, troque por um session.Service com persistência (e.g. PostgreSQL).
  • As “tools” usam dados estáticos hard-coded (fakeInvoices, fakeStatus). Substitua pelos seus backends reais ao adaptar.

Onde está o código

coffeece/examples/go-adk-multiagent no GitHub.