mirror of
https://github.com/hoshikawa2/agent_platform_oci.git
synced 2026-07-09 14:04:19 +00:00
2.7 KiB
2.7 KiB
Multi-agent isolation
Esta versão permite subir mais de um agent_template no mesmo backend e chavear por agent_id sem misturar estado.
O que ficou isolado
A chave lógica usada pelo backend é:
tenant_id:agent_id:session_id
Com isso ficam isolados:
- memória conversacional;
- checkpoints do LangGraph (
thread_id); - telemetria/tags;
- prompts por perfil de agente;
- configuração de guardrails por agente;
- configuração de judges por agente;
- metadados de sessão.
Arquivo principal
agent_template_backend/config/agents.yaml
Exemplo:
default_agent_id: telecom_contas
agents:
- agent_id: telecom_contas
prompt_policy_path: ./config/agents/telecom_contas/prompt_policy.yaml
guardrails_config_path: ./config/agents/telecom_contas/guardrails.yaml
judges_config_path: ./config/agents/telecom_contas/judges.yaml
- agent_id: retail_orders
prompt_policy_path: ./config/agents/retail_orders/prompt_policy.yaml
guardrails_config_path: ./config/agents/retail_orders/guardrails.yaml
judges_config_path: ./config/agents/retail_orders/judges.yaml
Como escolher o agente na chamada
Telecom
curl -X POST http://localhost:8000/gateway/message \
-H 'Content-Type: application/json' \
-d '{
"channel": "web",
"agent_id": "telecom_contas",
"tenant_id": "tim",
"payload": {
"session_id": "sessao-123",
"user_id": "cliente-1",
"message": "Quero entender minha fatura",
"context": {"invoice_id": "FAT-001"}
}
}'
Retail
curl -X POST http://localhost:8000/gateway/message \
-H 'Content-Type: application/json' \
-d '{
"channel": "web",
"agent_id": "retail_orders",
"tenant_id": "loja",
"payload": {
"session_id": "sessao-123",
"user_id": "cliente-1",
"message": "Onde está meu pedido?",
"context": {"order_id": "PED-001"}
}
}'
Mesmo usando o mesmo session_id, as conversas ficam separadas porque as chaves finais serão:
tim:telecom_contas:sessao-123
loja:retail_orders:sessao-123
Endpoints úteis
GET /agents
GET /health
POST /debug/route
POST /gateway/message
Como adicionar um novo agent_template
- Crie uma pasta em
agent_template_backend/config/agents/<novo_agent_id>/. - Adicione
prompt_policy.yaml,guardrails.yamlejudges.yaml. - Registre o agente em
config/agents.yaml. - Chame
/gateway/messageusandoagent_id=<novo_agent_id>.
Observação arquitetural
O backend continua usando um único processo FastAPI e um único framework instalado, mas o estado persistido não usa mais session_id sozinho. Isso evita que dois agentes compartilhem memória, checkpoints ou decisões de governança acidentalmente.