3.0 KiB
Atualização do Template Backend — Analytics, Observer, NOC/GRL e OutputSupervisor
Esta versão do agent_template_backend foi atualizada para consumir as novidades transportadas para o agent_framework.
1. Analytics e Pub/Sub
O backend não chama mais diretamente apenas o publisher antigo de eventos. Agora ele cria um AnalyticsPublisher:
from agent_framework.analytics.factory import create_analytics_publisher
from agent_framework.observability.observer import AgentObserver
analytics = create_analytics_publisher(settings)
observer = AgentObserver(analytics=analytics)
Com isso, o mesmo backend pode publicar em:
- OCI Streaming
- GCP Pub/Sub
- CompositePublisher, quando
ANALYTICS_PROVIDERS=oci_streaming,pubsub - Noop, quando analytics estiver desligado
2. Configuração mínima
ENABLE_ANALYTICS=true
ANALYTICS_PROVIDERS=pubsub
GCP_PUBSUB_TOPIC_PATH=projects/<project-id>/topics/<topic-name>
GOOGLE_APPLICATION_CREDENTIALS=/secrets/gcp-service-account.json
Para publicar simultaneamente em OCI Streaming e GCP Pub/Sub:
ENABLE_ANALYTICS=true
ANALYTICS_PROVIDERS=oci_streaming,pubsub
ENABLE_OCI_STREAMING=true
OCI_STREAM_ENDPOINT=<endpoint>
OCI_STREAM_OCID=<stream-ocid>
GCP_PUBSUB_TOPIC_PATH=projects/<project-id>/topics/<topic-name>
3. Observer corporativo
O workflow recebeu emissão automática dos principais eventos corporativos:
NOC.001: início do workflowNOC.005: exceção fatal no workflowNOC.006: fim do workflow antes da resposta finalIC.AGENT_COMPLETED: evento informacional de conclusãoGRL.001aGRL.009: emitidos peloOutputSupervisor
4. OutputSupervisor
Foi inserido um novo nó LangGraph:
agent -> output_supervisor -> output_guardrails -> judge -> supervisor_review -> persist
O OutputSupervisor não substitui o supervisor de roteamento. Ele valida a saída candidata do agente usando o contrato corporativo:
allowsanitizeretryblockhandoverobserve
Para compatibilidade com os guardrails já existentes, o template inclui o adapter LegacyOutputGuardrailRail, que converte decisões antigas allowed=True/False para RailAction.
5. Campos adicionados ao AgentState
supervisor_action: str
supervisor_guidance: str
supervisor_attempt: int
supervisor_handover_reason: str
output_supervisor_results: list[dict]
output_guardrails_already_applied: bool
6. Arquivos alterados
agent_template_backend/app/main.pyagent_template_backend/app/workflows/agent_graph.pyagent_template_backend/app/state.pyagent_template_backend/.envagent_template_backend/requirements.txtagent_framework/src/agent_framework/config/settings.py
7. Observação importante
O OutputSupervisor roda os guardrails de saída por meio do adapter legado e marca output_guardrails_already_applied=True. Assim o nó output_guardrails permanece no grafo para compatibilidade, mas evita reexecutar a mesma validação quando o supervisor já aplicou os rails.