mirror of
https://github.com/hoshikawa2/agent_platform_oci.git
synced 2026-11-05 19:04:13 +00:00
240 lines
8.7 KiB
Markdown
240 lines
8.7 KiB
Markdown
# SPEC-001 — Architecture
|
|
|
|
## Scope
|
|
|
|
The Agent Platform OCI consists of reusable components, deployable applications, integration contracts, agent templates, an evaluation layer, and operational artifacts.
|
|
|
|
## Components
|
|
|
|
| Componente | Tipo | Responsibility |
|
|
|---|---|---|
|
|
| `libs/agent_framework` | Lib | Core reutilizável of the framework. |
|
|
| `runtimes/langgraph_runtime` | Runtime | Execution of Agents based on LangGraph. |
|
|
| `apps/agent_gateway` | App | Input padronizada and Routing of Agents/backends. |
|
|
| `apps/channel_gateway` | App | Normalização of canais external. |
|
|
| `apps/ai_gateway` | App | Abstração, Governance and Routing of modelos. |
|
|
| `apps/mcp_gateway` | App | Governance, Catalog and Execution of tools MCP. |
|
|
| `mcp/servers` | Apps | MCP servers of Domain. |
|
|
| `evals/offline` | App/Lib | Evaluation offline/batch. |
|
|
| `evals/certification` | Suite | Certification técnica and funcional. |
|
|
| `templates/agent_template_backend` | Template | Scaffold for new Agents. |
|
|
| `specs` | documentation | contracts SDD versionados. |
|
|
| `deploy` | Operations | Docker, Kubernetes and Helm. |
|
|
|
|
## Repository structure
|
|
|
|
```text
|
|
agent_platform_oci/
|
|
├── libs/
|
|
│ └── agent_framework/
|
|
├── runtimes/
|
|
│ └── langgraph_runtime/
|
|
├── apps/
|
|
│ ├── agent_gateway/
|
|
│ ├── channel_gateway/
|
|
│ ├── ai_gateway/
|
|
│ └── mcp_gateway/
|
|
├── mcp/
|
|
│ └── servers/
|
|
├── evals/
|
|
│ ├── offline/
|
|
│ └── certification/
|
|
├── templates/
|
|
│ ├── agent_template_backend/
|
|
│ └── agent_template_backend_day_zero/
|
|
├── specs/
|
|
├── deploy/
|
|
│ ├── docker/
|
|
│ ├── k8s/
|
|
│ └── helm/
|
|
├── tests/
|
|
└── docs/
|
|
```
|
|
|
|
## Logical architecture
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
C[Canal] --> CG[Channel Gateway]
|
|
CG --> AG[Agent Gateway]
|
|
AG --> RT[Agent Runtime]
|
|
RT --> FW[Agent Framework Core]
|
|
RT --> AIG[AI Gateway]
|
|
RT --> MCPG[MCP Gateway]
|
|
MCPG --> MCPS[MCP Servers]
|
|
RT --> OBS[Observability]
|
|
RT --> MEM[Memory/Checkpoint]
|
|
OBS --> LF[Langfuse/OTEL]
|
|
LF --> EV[Evaluator]
|
|
```
|
|
|
|
## Physical architecture
|
|
|
|
| service | Porta Standard | Deploy | Escala |
|
|
|---|---:|---|---|
|
|
| Agent Gateway | 9000 | Kubernetes Deployment | Horizontal |
|
|
| Agent Backend / Runtime | 8000 | Kubernetes Deployment | Horizontal with external storage |
|
|
| Channel Gateway | 7000 | Kubernetes Deployment | Horizontal |
|
|
| AI Gateway | 9100 | Kubernetes Deployment | Horizontal |
|
|
| MCP Gateway | 8300 | Kubernetes Deployment | Horizontal |
|
|
| MCP Servers | 8001+ | Kubernetes Deployment | Per domain |
|
|
| Evaluator API | 9300 | Deployment/CronJob | By batch workload |
|
|
| Frontend Demo | 5173 | Optional | Noncritical |
|
|
|
|
## Main contracts
|
|
|
|
| Contract | producer | consumer |
|
|
|---|---|---|
|
|
| GatewayRequest | Channel Gateway / Agent Gateway | Agent Runtime |
|
|
| ChannelResponse | Agent Runtime | Channel Gateway / Cliente |
|
|
| BusinessContext | Channel Gateway / Identity resolve | Runtime / Agents / MCP |
|
|
| LLMRequest | Agent Runtime | AI Gateway |
|
|
| LLMResponse | AI Gateway | Agent Runtime |
|
|
| ToolInvocation | Agent Runtime / MCP Gateway | MCP Server |
|
|
| ToolResult | MCP Server / MCP Gateway | Agent Runtime |
|
|
| GuardrailResult | Guardrail Engine | Runtime / Observability |
|
|
| JudgeResult | Judge Engine / Evaluator | Runtime / Evaluator |
|
|
| EvaluationRun | Evaluator | Persistence / Dashboards |
|
|
|
|
## GatewayRequest
|
|
|
|
```json
|
|
{
|
|
"channel": "web",
|
|
"tenant_id": "default",
|
|
"agent_id": "telecom_contas",
|
|
"payload": {
|
|
"message": "Quero consultar minha fatura",
|
|
"session_id": "session-001",
|
|
"user_id": "user-001",
|
|
"message_id": "msg-001",
|
|
"business_context": {
|
|
"customer_key": "11999999999",
|
|
"contract_key": "3000131180",
|
|
"interaction_key": "301953872",
|
|
"session_key": "session-001"
|
|
},
|
|
"metadata": {
|
|
"request_id": "req-001"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## ChannelResponse
|
|
|
|
```json
|
|
{
|
|
"channel": "web",
|
|
"session_id": "default:telecom_contas:session-001",
|
|
"text": "Resposta final do agente.",
|
|
"metadata": {
|
|
"tenant_id": "default",
|
|
"agent_id": "telecom_contas",
|
|
"route": "billing_agent",
|
|
"intent": "billing_invoice_explanation"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Flow main
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant Canal
|
|
participant ChannelGateway
|
|
participant AgentGateway
|
|
participant Runtime
|
|
participant AIGateway
|
|
participant MCPGateway
|
|
participant Store
|
|
Canal->>ChannelGateway: Payload bruto
|
|
ChannelGateway->>AgentGateway: GatewayRequest
|
|
AgentGateway->>Runtime: GatewayRequest normalizado
|
|
Runtime->>Store: Sessão, memória e checkpoint
|
|
Runtime->>Runtime: Guardrails de entrada
|
|
Runtime->>Runtime: Router/Supervisor
|
|
Runtime->>MCPGateway: ToolInvocation
|
|
MCPGateway-->>Runtime: ToolResult
|
|
Runtime->>AIGateway: LLMRequest
|
|
AIGateway-->>Runtime: LLMResponse
|
|
Runtime->>Runtime: Guardrails de saída e Judges
|
|
Runtime->>Store: Persistência
|
|
Runtime-->>AgentGateway: ChannelResponse
|
|
AgentGateway-->>ChannelGateway: ChannelResponse
|
|
ChannelGateway-->>Canal: Resposta do canal
|
|
```
|
|
|
|
## Configuration
|
|
|
|
| file | Uso |
|
|
|---|---|
|
|
| `.env` | Provider, Authentication, flags and endpoints por ambiente. |
|
|
| `agents.yaml` | Registration of Agents. |
|
|
| `routing.yaml` | Intents, rotas, Policies and fallback. |
|
|
| `guardrails.yaml` | Guardrails global. |
|
|
| `judges.yaml` | Judges global. |
|
|
| `llm_profiles.yaml` | Profiles of modelos por componente. |
|
|
| `mcp_servers.yaml` | MCP servers disponíveis. |
|
|
| `tools.yaml` | Catalog of tools. |
|
|
| `mcp_parameter_mapping.yaml` | Mapeamento BusinessContext → argumentos MCP. |
|
|
| `identity.yaml` | Resolução of Identity of negócio. |
|
|
| `observability.yaml` | Logs, Metrics, traces and exporters. |
|
|
| `evals.yaml` | Datasets, Metrics and Configuration of the evaluator. |
|
|
|
|
## Events
|
|
|
|
| Evento | Origem | Description |
|
|
|---|---|---|
|
|
| `gateway.request.received` | Agent Gateway | Request recebida. |
|
|
| `channel.normalized` | Channel Gateway | Payload convertido em GatewayRequest. |
|
|
| `runtime.started` | Runtime | Execution iniciada. |
|
|
| `guardrail.input.completed` | Guardrails | Guardrails of Input concluídos. |
|
|
| `route.selected` | Router/Supervisor | Rota definida. |
|
|
| `mcp.tool.completed` | MCP Gateway | Tool executada. |
|
|
| `llm.completed` | AI Gateway | Call LLM concluída. |
|
|
| `judge.completed` | Judge Engine | Evaluation concluída. |
|
|
| `runtime.completed` | Runtime | Execution finalizada. |
|
|
|
|
|
|
## Requirements No Funcionais
|
|
|
|
| Categoria | Requirement |
|
|
|---|---|
|
|
| Availability | Components deployáveis expõem `/health` and `/ready`. |
|
|
| Escalabilidade | Apps stateless escalam horizontalmente. State conversational fica em repositórios external. |
|
|
| Security | Segredos are fornecidos por secret store or Kubernetes Secrets. |
|
|
| Observability | Logs, Metrics and traces usam correlation por request_id, trace_id, session_id, tenant_id and agent_id. |
|
|
| Auditabilidade | Decisions of rota, guardrail, judge, MCP and LLM are rastreáveis. |
|
|
| Portabilidade | Execution suportada em local, Docker Compose and Kubernetes/OKE. |
|
|
| Configuration | Comportamento variável is controlado por `.env` and YAML versionado. |
|
|
|
|
|
|
## Acceptance criteria
|
|
|
|
- [ ] Repository structure separa libs, runtimes, apps, mcp, evals, templates, specs and deploy.
|
|
- [ ] each app deployável possui Contract of Input/Output documentado.
|
|
- [ ] GatewayRequest and ChannelResponse are versionados.
|
|
- [ ] BusinessContext is Used como Contract canônico.
|
|
- [ ] Runtime No recebe payload bruto of canal.
|
|
- [ ] AI Gateway and MCP Gateway possuem fronteiras explícitas.
|
|
- [ ] Evaluator is componente padronizado of Evaluation.
|
|
- [ ] all os services possuem health check.
|
|
- [ ] Telemetria fim-a-fim correlaciona request_id, trace_id and session_id.
|
|
- [ ] Configuration críticas possuem YAML dedicado.
|
|
|
|
|
|
## Glossário
|
|
|
|
| Termo | Definição |
|
|
|---|---|
|
|
| Agent Platform | Plataforma composta por runtime, gateways, evaluator, templates, contracts and Components operational. |
|
|
| Agent Framework | Biblioteca/core reutilizável with contracts, guardrails, judges, Memory, telemetria, providers and utilitários. |
|
|
| Agent Runtime | Motor of Execution of Agents based on LangGraph, State, Session, Memory, checkpoints, Routing and ciclo of vida. |
|
|
| Agent Gateway | Aplicação deployável of Input, Routing and orquestração between backends/Agents. |
|
|
| Channel Gateway | Aplicação or módulo of normalização of payloads of canais for GatewayRequest. |
|
|
| AI Gateway | Aplicação of Governance, Routing and abstração of Calls LLM/embedding. |
|
|
| MCP Gateway | Aplicação of Governance and Routing of tools MCP. |
|
|
| Evaluator | layer of Evaluation online/offline, regressão and Certification. |
|
|
| Business Context | Conjunto of chaves canônicas of negócio: customer_key, contract_key, interaction_key, account_key, resource_key and session_key. |
|