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_ticketO 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ável | Padrão | Descrição |
|---|---|---|
AGENT_GEMINI_API_KEY | — | Obrigatória. Chave da API do Gemini. |
AGENT_GEMINI_MODEL | gemini-2.5-flash | Id do modelo Gemini. |
AGENT_APP_NAME | helpdesk | Nome 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 idLimitações
- Sessões ficam em memória (
session.InMemoryService()). Restart da app perde o histórico. Para produção, troque por umsession.Servicecom 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.