Files
agent_platform_oci/apps/agent_gateway
..
2026-06-19 22:17:09 -03:00
2026-06-19 22:17:09 -03:00
2026-06-19 22:17:09 -03:00
2026-06-19 22:17:09 -03:00
2026-06-19 22:17:09 -03:00

Agent Gateway — Global Supervisor

Este serviço roteia uma mesma conversa entre vários backends de agentes independentes, todos usando o agent_framework.

Papel do Gateway

Frontend
  ↓
Agent Gateway / Global Supervisor
  ↓
Backend Contas | Backend Ofertas | Backend Suporte | ...

O Gateway não executa a lógica de negócio dos agentes. Ele decide qual backend deve receber a mensagem e encaminha a requisição para o endpoint /gateway/message do backend escolhido.

Modos de roteamento

  • router: usa regras, keywords e domínios do config/backends.yaml.
  • supervisor: usa LLM para escolher o backend.
  • hybrid: mantém o backend ativo quando a mensagem parece continuação; usa regras; chama LLM em ambiguidade.

Como subir localmente

cd agent_gateway
cp .env.example .env
export PYTHONPATH=../agent_framework/src:.
uvicorn app.main:app --host 0.0.0.0 --port 8010 --reload

Suba seus backends nas portas definidas em config/backends.yaml.

Teste de rota

curl -X POST http://localhost:8010/debug/route \
  -H 'content-type: application/json' \
  -d '{"channel":"web","payload":{"text":"Minha fatura veio alta","session_id":"s1"}}'

Enviar mensagem

curl -X POST http://localhost:8010/gateway/message \
  -H 'content-type: application/json' \
  -d '{"channel":"web","payload":{"text":"Minha fatura veio alta","session_id":"s1"}}'

Handoff entre backends

Um backend pode solicitar troca retornando no metadata:

{
  "metadata": {
    "handover_backend": "ofertas"
  }
}

O Gateway chamará automaticamente o novo backend.

IC/NOC

O Gateway emite eventos de observabilidade:

  • IC.GLOBAL_GATEWAY_RECEIVED
  • IC.GLOBAL_BACKEND_SELECTED
  • IC.GLOBAL_BACKEND_HANDOVER
  • IC.GLOBAL_GATEWAY_COMPLETED
  • NOC.005 em falhas
  • NOC.006 em conclusão HTTP