42 KiB
Agent Contas FIRST migrado para Agent Framework OCI
Este projeto é uma versão executável do Agent Contas FIRST migrada para o padrão do Agent Framework OCI. Ele implementa um agente de atendimento para dúvidas e operações de contas/faturas de telecom, mantendo a lógica específica do domínio de contas em uma camada fina e delegando workflow, roteamento, guardrails, judges, memória, RAG, MCP, cache e observabilidade para o framework corporativo.
Observação de segurança: o arquivo
.env.exampledo pacote contém exemplos de valores sensíveis. Este README explica os parâmetros, mas não reproduz senhas, tokens, chaves privadas nem secrets. Para uso real, mantenha esses valores fora do Git e injete por vault, secret manager, variável de ambiente segura ou arquivo.envlocal não versionado.
O que é este projeto
O pacote contém quatro partes principais:
| Parte | Caminho | Função |
|---|---|---|
| Backend do agente | app/ |
API FastAPI que expõe /gateway/message, normaliza canal, resolve identidade, executa o workflow LangGraph e chama o Agent Contas. |
| Configurações do framework | config/ e llm_profiles.yaml |
YAMLs de agente, roteamento, guardrails, judges, identity, MCP servers, tools e mapeamento de parâmetros. |
| MCP Server legado TIM/FIRST | mcp_servers/legacy_tim_mcp/ |
Adaptador HTTP MCP que expõe tools no contrato esperado pelo framework e chama APIs TIM/FIRST ou mock. |
| Mock de serviços externos | backend_mock/ |
Servidor FastAPI que simula endpoints TIM/FIRST como fatura, contrato, VAS, PDF, protocolo, contestação, status, SMS e tracking. |
O projeto também mantém legacy_reference/ apenas como referência de rastreabilidade do legado. A decisão de migração foi não portar a camada própria de workflow/guardrails/judges/RAG do legado, evitando duplicidade com o Agent Framework OCI.
O que é o Agente de Contas
O Agente de Contas é um agente especializado no domínio telecom_contas. Ele atende perguntas e fluxos relacionados a fatura, pagamento, segunda via, contestação, plano, serviços adicionais, protocolos e SMS. No código, a lógica específica fica principalmente em:
app/agents/contas_agent.py: comportamento de domínio, prompt do agente, seleção declarativa de tools por intent e montagem de contexto com RAG/MCP.config/routing.yaml: intents suportadas e tools relacionadas.config/tools.yaml: catálogo das tools MCP disponíveis.config/mcp_parameter_mapping.yaml: mapeamento das chaves canônicas de negócio para argumentos reais das APIs TIM/FIRST.config/identity.yaml: resolução de identidade e aliases, comomsisdn,invoice_id,asset_id,ura_call_idesession_id.
Funcionalidades prometidas pelo agente
Atendimento de faturas e contas
- Explicar fatura, valor, vencimento, status e itens cobrados.
- Consultar fatura completa via
consultar_fatura. - Consultar pagamentos e baixa via
consultar_pagamentos. - Ajudar em dúvidas sobre cobrança proporcional, divergência de valor e histórico de cobrança.
Segunda via e PDF
- Recuperar dados da fatura atual.
- Recuperar PDF ou segunda via quando disponível via
recuperar_pdf_fatura. - Preparar envio de informações de boleto/código por canal, quando a política permitir.
Contestação e protocolo
- Identificar intenção de contestar cobrança.
- Consultar evidências antes de orientar o cliente.
- Abrir contestação via
abrir_contestacao, marcada como ação sensível e com confirmação requerida. - Registrar protocolo via
registrar_protocolo. - Consultar status de protocolo/SR via
consultar_status_sr. - Atualizar status de SR via
atualizar_status_sr, também como ação sensível.
Plano, serviços e VAS
- Consultar plano/contrato ativo via
consultar_plano. - Listar serviços ativos, VAS/SVA, bundles e benefícios via
listar_servicos. - Orientar cancelamento ou bloqueio de VAS.
- Executar
cancelar_vasebloquear_vasapenas como ações com confirmação explícita.
SMS e tracking operacional
- Enviar SMS via
enviar_sms, com confirmação. - Registrar tracking/activity via
registrar_tracking.
Segurança, qualidade e observabilidade
- Guardrails de entrada e saída configuráveis por YAML.
- Judges de qualidade, groundedness, sentimento e tom.
- Output Supervisor com retry.
- Eventos IC/NOC/GRL e telemetria Langfuse/OTEL.
- Cache MCP para consultas.
- Memória conversacional e summary memory.
Como ele funciona com o Agent Framework OCI
A arquitetura de execução é:
Frontend / curl / canal
↓
FastAPI backend: POST /gateway/message
↓
ChannelGateway do Agent Framework OCI
↓
IdentityResolver + BusinessContext
↓
SessionRepository + Memory + Summary Memory
↓
Workflow LangGraph do template
↓
Input Guardrails
↓
Enterprise Router / routing.yaml
↓
ContasAgent / AgentRuntimeMixin
↓
RAG nativo + MCPToolRouter nativo
↓
legacy_tim_mcp
↓
APIs TIM/FIRST reais ou backend_mock
↓
LLM + Output Supervisor + Output Guardrails + Judges
↓
Resposta final + telemetria + persistência
O backend inicializa os componentes nativos em app/main.py:
ChannelGatewaypara normalizar mensagens de web/voz/WhatsApp/texto.IdentityResolverpara transformarmsisdn,invoice_id,asset_id,ura_call_idetc. emBusinessContextcanônico.AgentProfileRegistrypara carregar o agentecontas_first.create_llm,create_memory,create_conversation_summary_memory,create_session_repository,create_checkpoint_repository,create_cacheecreate_usage_repository.create_mcp_tool_routerpara carregarconfig/mcp_servers.yaml,config/tools.yamleconfig/mcp_parameter_mapping.yaml.AgentWorkflowpara executar o pipeline LangGraph corporativo.
Integração com o framework
O projeto usa o Agent Framework OCI nos seguintes pontos:
| Recurso do framework | Como é usado no projeto |
|---|---|
| LangGraph workflow | app/workflows/agent_graph.py orquestra o pipeline corporativo. |
| AgentRuntimeMixin | ContasAgent herda de AgentRuntimeMixin para usar RAG, MCP, memória, cache e montagem de prompt. |
| Enterprise Router | config/routing.yaml define intents, prioridades, keywords, exemplos e tools por intent. |
| Guardrails | config/guardrails.yaml ativa MSK/VLOOP na entrada e REVPREC/PINJ/DLEX_OUT na saída. |
| Judges | config/judges.yaml define response_quality, groundedness, sentiment e tone. |
| Output Supervisor | Controlado por ENABLE_OUTPUT_SUPERVISOR e OUTPUT_SUPERVISOR_MAX_RETRIES. |
| IdentityResolver | config/identity.yaml converte aliases de canal/legado em chaves canônicas. |
| BusinessContext | Chaves customer_key, contract_key, interaction_key, account_key, resource_key, session_key acompanham todo o fluxo. |
| MCPToolRouter | Executa tools declaradas em config/tools.yaml no servidor legacy_tim. |
| MCP Parameter Mapping | config/mcp_parameter_mapping.yaml converte chaves canônicas em argumentos como msisdn, invoice_id, customer_id, asset_id. |
| Cache MCP | Queries têm cache configurado por tool em config/tools.yaml. |
| RAG | Usa o RAG nativo do framework, com namespace contas_first na metadata do agente. |
| Memória | Usa histórico e summary memory do framework. |
| Observabilidade | Usa Telemetry, Langfuse, IC/NOC/GRL e analytics publisher. |
| SSE | SSEHub permite eventos de fluxo quando o endpoint SSE estiver em uso. |
Customizações específicas do Contas
As customizações de domínio são intencionais e concentradas:
-
Intents de contas em
config/routing.yaml:billing_invoice_explanationbilling_payment_statusbilling_second_copybilling_contestationservice_plan_informationvas_services_informationgeneric_billing_ragbilling_protocol_statusbilling_protocol_registervas_cancel_or_blocksend_billing_smstracking_activity
-
Tools de telecom em
config/tools.yaml:- consultas com cache:
consultar_fatura,consultar_pagamentos,consultar_plano,listar_servicos,recuperar_pdf_fatura,consultar_status_sr; - ações sem cache e com confirmação quando sensíveis:
registrar_protocolo,abrir_contestacao,atualizar_status_sr,cancelar_vas,bloquear_vas,enviar_sms,registrar_tracking.
- consultas com cache:
-
MCP Server legado em
mcp_servers/legacy_tim_mcp/main.py, que adapta endpoints TIM/FIRST ao contrato MCP:
GET /mcp/tools/list
POST /mcp/tools/call
-
Mock de backend externo em
backend_mock/app.py, útil para testar o MCP sem depender das APIs reais. -
Prompt específico do agente, em
ContasAgent.run(), instruindo o modelo a não inventar dados de fatura, pagamento, plano, VAS, protocolo ou contestação e a usar resultados MCP/RAG como evidência.
Tecnologias utilizadas
- Python 3.11/3.12 recomendado.
- FastAPI e Uvicorn.
- Pydantic e pydantic-settings.
- LangGraph e LangChain Core.
- Agent Framework OCI.
- OCI Generative AI / OCI SDK.
- Oracle Autonomous Database /
oracledb, quando usado para persistência/RAG. - Redis, opcional para cache distribuído.
- Langfuse, opcional para traces.
- OpenTelemetry, opcional para exportação OTEL.
- HTTPX para chamadas HTTP do MCP legado.
- YAML para configuração declarativa.
- Docker Compose opcional.
Requisitos para subir a aplicação
Obrigatórios
- Python 3.11 ou 3.12.
pipevenv.- Agent Framework OCI instalado no mesmo ambiente Python do backend.
- Portas livres:
8000: backend do agente;5173: frontend;8100: MCP Server legado;8001: mock das APIs externas.
Para execução real com OCI/ADB
- Acesso ao OCI Generative AI ou endpoint OCI configurado.
OCI_CONFIG_FILE,OCI_PROFILE,OCI_REGION,OCI_COMPARTMENT_IDe modelo/endpoint válidos.- Acesso ao Autonomous Database se
VECTOR_STORE_PROVIDER=autonomousou repositórios forem configurados para ADB. - Wallet/DSN/senha conforme o modo de conexão.
Para observabilidade
- Langfuse local ou remoto se
ENABLE_LANGFUSE=true. - Redis se
ENABLE_REDIS_CACHE=true. - OTEL collector se
ENABLE_OTEL=true.
Instalação inicial
No diretório raiz do projeto:
cd first_contas
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
Instale o framework no mesmo ambiente. Exemplo em modo editable:
pip install -e "../agent_framework"
Ajuste o caminho para o local real do seu agent_framework_oci.
Configuração recomendada para teste local com mock externo
Para testar o fluxo completo com backend + MCP + mock server, deixe o MCP chamando o mock HTTP local. No .env do backend e no .env do MCP, ajuste endpoints para localhost:8001:
TIM_MCP_USE_MOCK=false
TIM_COMPLETE_INVOICES_URL=http://localhost:8001/customers/v1/completeInvoices
TIM_PROFILE_BILL_URL=http://localhost:8001/customers/v1/completeInvoices/profile
TIM_CONTRATO_URL=http://localhost:8001/access/v1/contractInformation
TIM_QUERY_VAS_URL=http://localhost:8001/access/v1/productsSingleVas
TIM_CANCEL_VAS_URL=http://localhost:8001/access/v1/singleVas
TIM_BLOCK_VAS_URL=http://localhost:8001/customers/v1/createPartialBlocking
TIM_BILL_PDF_URL=http://localhost:8001/invoices/v1/invoiceRecover
TIM_PROTOCOL_URL=http://localhost:8001/customers/v1/backOfficeSRopening
TIM_CUSTOMER_CONTESTATION_URL=http://localhost:8001/interactions/v1/customerContestation
TIM_SERVICE_REQUEST_STATUS_URL=http://localhost:8001/interactions/v1/statusServiceRequest
TIM_SMS_URL=http://localhost:8001/customers/v1/smsSend
TIM_TRACKING_ACTIVITIES_URL=http://localhost:8001/customers/v1/trackingActivities
Também é possível usar TIM_MCP_USE_MOCK=true; nesse modo o MCP usa mock interno e não precisa do backend_mock. Como você pediu a subida dos quatro terminais, o modo recomendado acima mantém o backend_mock participando do fluxo.
Como abrir os 4 terminais para subir a aplicação toda
Terminal 1 — MCP Server legado TIM/FIRST
cd first_contas
./scripts/start_legacy_tim_mcp.sh
Alternativa manual:
cd first_contas/mcp_servers/legacy_tim_mcp
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn main:app --host 0.0.0.0 --port 8100 --reload
Teste:
curl -s http://localhost:8100/health | python -m json.tool
curl -s http://localhost:8100/mcp/tools/list | python -m json.tool
Terminal 2 — Mock server das APIs externas
cd first_contas/backend_mock
python -m venv .venv
source .venv/bin/activate
pip install fastapi 'uvicorn[standard]'
uvicorn app:app --host 0.0.0.0 --port 8001 --reload
Teste:
curl -s http://localhost:8001/health | python -m json.tool
Terminal 3 — Backend do agente
cd first_contas
./scripts/start_backend.sh
Alternativa manual:
cd first_contas
source .venv/bin/activate
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
Teste:
curl -s http://localhost:8000/health | python -m json.tool
curl -s http://localhost:8000/debug/mcp/call/consultar_fatura -H 'Content-Type: application/json' -d '{"business_context":{"customer_key":"11999999999","contract_key":"FAT-2026-06","account_key":"CUST-001","interaction_key":"URA-001"}}' | python -m json.tool
Terminal 4 — Frontend
Este pacote não traz o código do frontend. Use o frontend do agent_framework_oci ou o projeto de frontend que você já usa com o backend do framework. Exemplo:
cd "/agent_framework_oci/agent_frontend"
npm install
npm run dev -- --host 0.0.0.0 --port 5173
No frontend, configure a URL do backend como:
http://localhost:8000
E use agent_id:
contas_first
Payload mínimo esperado pelo backend:
{
"channel": "web",
"tenant_id": "default",
"agent_id": "contas_first",
"payload": {
"text": "Quero entender por que minha fatura veio mais alta",
"session_id": "sess-contas-001",
"user_id": "11999999999",
"customer_key": "11999999999",
"contract_key": "FAT-2026-06",
"account_key": "CUST-001",
"interaction_key": "URA-001",
"channel": "web"
}
}
Testes por curl incluídos no pacote
Depois de subir os serviços:
cd first_contas
./tests/curl_mcp_health.sh
./tests/curl_mcp_consultar_fatura.sh
./tests/curl_backend_health.sh
./tests/curl_backend_debug_mcp.sh
./tests/curl_gateway_fatura.sh
Endpoints principais
| Endpoint | Serviço | Descrição |
|---|---|---|
GET /health |
Backend | Health check do backend do agente. |
POST /gateway/message |
Backend | Entrada principal de mensagens normalizadas ou payloads de canal. |
POST /debug/mcp/call/{tool} |
Backend | Diagnóstico direto de chamada MCP com business_context. |
GET /health |
MCP | Health check do MCP legado. |
GET /mcp/tools/list |
MCP | Lista tools disponíveis no servidor MCP. |
POST /mcp/tools/call |
MCP | Executa uma tool MCP. |
GET /health |
Mock | Health check do backend mock. |
BusinessContext e mapeamento MCP
O framework trabalha com chaves canônicas:
{
"customer_key": "11999999999",
"contract_key": "FAT-2026-06",
"account_key": "CUST-001",
"interaction_key": "URA-001",
"resource_key": "ASSET-001",
"session_key": "sess-contas-001"
}
O MCPToolRouter converte essas chaves para os parâmetros reais de cada tool. Exemplos:
| Tool | Mapeamento principal |
|---|---|
consultar_fatura |
customer_key → msisdn, contract_key → invoice_id, account_key → customer_id, interaction_key → ura_call_id, session_key → session_id |
consultar_pagamentos |
customer_key → msisdn, account_key → customer_id, interaction_key → ura_call_id |
consultar_plano |
customer_key → msisdn, resource_key → asset_id, account_key → customer_id |
listar_servicos |
customer_key → msisdn, resource_key → asset_id |
abrir_contestacao |
customer_key → msisdn, contract_key → invoice_id, account_key → customer_id |
cancelar_vas/bloquear_vas |
customer_key → msisdn, resource_key → app_id |
Arquivos mais importantes
| Arquivo | Descrição |
|---|---|
README.md |
README original do pacote, com visão geral da migração. |
README_MIGRACAO_CONTAS_FIRST.md |
Decisões de migração e rastreabilidade. |
.env.example |
Exemplo de configuração completa. |
app/main.py |
Bootstrap FastAPI e inicialização dos componentes do framework. |
app/agents/contas_agent.py |
Agente específico de Contas. |
app/agents/runtime.py |
Mixin/apoio runtime do agente. |
app/workflows/agent_graph.py |
Workflow LangGraph corporativo. |
config/agents.yaml |
Registro do agente contas_first. |
config/routing.yaml |
Intents, priorities, keywords e tools por intent. |
config/tools.yaml |
Catálogo declarativo de tools MCP. |
config/mcp_servers.yaml |
Servidor MCP legacy_tim em http://localhost:8100/mcp. |
config/mcp_parameter_mapping.yaml |
Mapeamento BusinessContext -> args das tools. |
config/identity.yaml |
Resolução de aliases de identidade. |
config/guardrails.yaml |
Guardrails globais. |
config/judges.yaml |
Judges globais. |
mcp_servers/legacy_tim_mcp/main.py |
Servidor MCP legado adaptador TIM/FIRST. |
backend_mock/app.py |
Mock de endpoints externos TIM/FIRST. |
scripts/start_backend.sh |
Script para subir backend. |
scripts/start_legacy_tim_mcp.sh |
Script para subir MCP legado. |
tests/*.sh |
Curls de validação. |
Docker Compose opcional
O pacote inclui docker-compose.yml com dois serviços:
legacy-tim-mcp, porta8100;agent-contas, porta8000.
Execução:
cd first_contas
cp .env.example .env
cp mcp_servers/legacy_tim_mcp/.env.example mcp_servers/legacy_tim_mcp/.env
docker compose up --build
O compose não inclui o frontend nem o backend_mock; para testar com mock externo no Docker, adicione um serviço adicional ou rode o mock localmente e ajuste as URLs conforme a rede do container.
Lista de parâmetros .env
Abaixo estão os parâmetros encontrados em .env.example, explicados por finalidade. Os valores concretos devem ser preenchidos no .env local ou por secrets. Não copie tokens/senhas reais para documentação ou repositório.
Geral
| Parâmetro | Para que serve |
|---|---|
APP_NAME |
Nome lógico da aplicação usado em logs, telemetria e identificação operacional. |
APP_ENV |
Ambiente de execução, por exemplo local, dev, hml ou prod. |
LOG_LEVEL |
Nível de log da aplicação Python/FastAPI. |
API_HOST |
Host/IP usado pelo Uvicorn para publicar o backend. |
API_PORT |
Porta HTTP do backend do agente. |
CORS_ORIGINS |
Origens permitidas para chamadas do frontend/browser. |
Mapeado a partir das variáveis TIM_LLM_* do legado.
| Parâmetro | Para que serve |
|---|---|
LLM_PROVIDER |
Provider principal de LLM usado pelo Agent Framework OCI. |
LLM_TEMPERATURE |
Temperatura padrão do modelo para controlar criatividade/variação. |
LLM_MAX_TOKENS |
Limite máximo padrão de tokens de resposta. |
LLM_TIMEOUT_SECONDS |
Timeout padrão para chamadas ao LLM; zero normalmente significa sem timeout específico. |
OCI_GENAI_BASE_URL |
Endpoint/base URL do serviço OCI Generative AI ou endpoint dedicado. |
OCI_GENAI_MODEL |
Modelo ou endpoint OCID usado pelo OCI Generative AI. |
OCI_GENAI_API_KEY |
Chave de API quando o provider usa modo compatível com API key. |
OCI_CONFIG_FILE |
Caminho do arquivo de configuração OCI local. |
OCI_PROFILE |
Profile OCI dentro do arquivo config. |
OCI_COMPARTMENT_ID |
OCID do compartment onde ficam os recursos de GenAI/embedding. |
OCI_REGION |
Região OCI usada pelo SDK/serviços. |
Variáveis OCI legadas mantidas para compatibilidade com adapters/scripts.
| Parâmetro | Para que serve |
|---|---|
TIM_LLM_PROVIDER |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_MODEL |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_API_KEY |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_BASE_URL |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_API_VERSION |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_TEMPERATURE |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_MAX_TOKENS |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_REQUEST_TIMEOUT |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_EXTRA |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_OCI_VARIANT |
Configuração legada OCI usada por adapters/scripts do Agent Contas FIRST. |
TIM_LLM_OCI_MODEL_ID_20B |
OCID/model id legado para variante específica do LLM OCI. |
TIM_LLM_OCI_MODEL_ID_120B |
OCID/model id legado para variante específica do LLM OCI. |
TIM_LLM_OCI_SERVICE_ENDPOINT |
Configuração legada OCI usada por adapters/scripts do Agent Contas FIRST. |
TIM_LLM_OCI_MODEL_KWARGS |
JSON com parâmetros do modelo OCI legado, como temperature, top_p, max_tokens e reasoning_effort. |
TIM_LLM_OCI_MODEL_KWARGS_20B |
JSON com parâmetros do modelo OCI legado, como temperature, top_p, max_tokens e reasoning_effort. |
TIM_LLM_OCI_MODEL_KWARGS_120B |
JSON com parâmetros do modelo OCI legado, como temperature, top_p, max_tokens e reasoning_effort. |
TIM_LLM_OCI_COMPARTMENT_ID |
Configuração legada OCI usada por adapters/scripts do Agent Contas FIRST. |
TIM_OCI_USER |
Credencial/configuração OCI legada usada pelos adapters do legado. |
TIM_OCI_FINGERPRINT |
Credencial/configuração OCI legada usada pelos adapters do legado. |
TIM_OCI_TENANCY |
Credencial/configuração OCI legada usada pelos adapters do legado. |
TIM_OCI_REGION |
Credencial/configuração OCI legada usada pelos adapters do legado. |
TIM_OCI_KEY_FILE |
Credencial/configuração OCI legada usada pelos adapters do legado. |
TIM_LLM_OCI_AUTH_FILE_LOCATION |
Configuração legada OCI usada por adapters/scripts do Agent Contas FIRST. |
Repositórios / persistência do framework
| Parâmetro | Para que serve |
|---|---|
SESSION_REPOSITORY_PROVIDER |
Provider do repositório de sessões do framework, como memory ou autonomous. |
MEMORY_REPOSITORY_PROVIDER |
Provider da memória conversacional/histórico. |
CHECKPOINT_REPOSITORY_PROVIDER |
Provider de checkpoints LangGraph. |
USAGE_REPOSITORY_PROVIDER |
Provider para gravação de uso/tokens/custo. |
TIM_STATE_BACKEND |
Backend legado de estado mantido por compatibilidade. |
Autonomous DB / Oracle Store
| Parâmetro | Para que serve |
|---|---|
ADB_USER |
Usuário do Autonomous Database para persistência/RAG. |
ADB_PASSWORD |
Senha do Autonomous Database. Valor sensível; não commitar. |
ADB_DSN |
DSN/connect string do Autonomous Database. |
ADB_WALLET_LOCATION |
Diretório do wallet ADB, quando aplicável. |
ADB_WALLET_PASSWORD |
Senha do wallet ADB. Valor sensível; não commitar. |
ADB_TABLE_PREFIX |
Prefixo das tabelas criadas/usadas pelo framework. |
TIM_DB_TNS_NAME |
Configuração de banco Oracle/ADB legada TIM mantida para compatibilidade. |
TIM_DB_CONNECT_STRING |
Configuração de banco Oracle/ADB legada TIM mantida para compatibilidade. |
TIM_DB_USER |
Configuração de banco Oracle/ADB legada TIM mantida para compatibilidade. |
TIM_DB_PASSWORD |
Configuração de banco Oracle/ADB legada TIM mantida para compatibilidade. |
TIM_DB_WALLET_PASSWORD |
Configuração de banco Oracle/ADB legada TIM mantida para compatibilidade. |
TIM_DB_USE_WALLET |
Configuração de banco Oracle/ADB legada TIM mantida para compatibilidade. |
RAG / Vector Store do framework
| Parâmetro | Para que serve |
|---|---|
VECTOR_STORE_PROVIDER |
Provider do vector store/RAG, como memory ou autonomous. |
GRAPH_STORE_PROVIDER |
Provider do graph store, quando habilitado. |
RAG_TOP_K |
Quantidade máxima de documentos/chunks recuperados por consulta RAG. |
EMBEDDING_PROVIDER |
Provider de embeddings, como mock ou oci. |
OCI_EMBEDDING_MODEL |
Modelo OCI de embedding usado para indexação/consulta. |
RAG_FILE_GLOBS |
Extensões/padrões de arquivos aceitos na ingestão RAG. |
TIM_RAG_ENABLED |
Liga/desliga compatibilidade RAG do legado TIM. |
TIM_RAG_OCI_SERVICE_ENDPOINT |
Configuração RAG legada TIM mantida para compatibilidade com adapters/scripts. |
TIM_RAG_DB_USER |
Configuração RAG legada TIM mantida para compatibilidade com adapters/scripts. |
TIM_RAG_DB_PASSWORD |
Configuração RAG legada TIM mantida para compatibilidade com adapters/scripts. |
TIM_RAG_DB_DSN |
Configuração RAG legada TIM mantida para compatibilidade com adapters/scripts. |
Langfuse / observabilidade
| Parâmetro | Para que serve |
|---|---|
ENABLE_LANGFUSE |
Liga/desliga envio de traces para Langfuse. |
LANGFUSE_PUBLIC_KEY |
Chave pública Langfuse. Valor sensível operacional. |
LANGFUSE_SECRET_KEY |
Chave secreta Langfuse. Valor sensível; não commitar. |
LANGFUSE_HOST |
URL do servidor Langfuse. |
ENABLE_OTEL |
Liga/desliga exportação OpenTelemetry. |
TIM_LLM_GATEWAY_LANGFUSE_PUBLIC_KEY |
Configuração legada Langfuse do LLM Gateway (public_key). |
TIM_LLM_GATEWAY_LANGFUSE_SECRET_KEY |
Configuração legada Langfuse do LLM Gateway (secret_key). |
TIM_LLM_GATEWAY_LANGFUSE_HOST |
Configuração legada Langfuse do LLM Gateway (host). |
TIM_LLM_GATEWAY_LANGFUSE_DEFAULT_LABEL |
Configuração legada Langfuse do LLM Gateway (default_label). |
TIM_LLM_GATEWAY_LANGFUSE_CACHE_TTL_SECONDS |
Configuração legada Langfuse do LLM Gateway (cache_ttl_seconds). |
TIM_LLM_GATEWAY_LANGFUSE_MAX_RETRIES |
Configuração legada Langfuse do LLM Gateway (max_retries). |
TIM_LLM_GATEWAY_LANGFUSE_FETCH_TIMEOUT_SECONDS |
Configuração legada Langfuse do LLM Gateway (fetch_timeout_seconds). |
TIM_LLM_GATEWAY_LANGFUSE_MASK_SENSITIVE_DATA |
Configuração legada Langfuse do LLM Gateway (mask_sensitive_data). |
TIM_AGENT_FRAMEWORK_LOG_EXPORT_ENABLED |
Parâmetro de compatibilidade do projeto; revisar uso específico no código/configuração antes de remover. |
ENABLE_ANALYTICS |
Liga/desliga publisher analítico do framework. |
ANALYTICS_PROVIDERS |
Lista/provider de analytics, por exemplo noop ou oci_streaming. |
ENABLE_OCI_STREAMING |
Liga/desliga integração com OCI Streaming. |
Guardrails / Supervisor / Judges do framework
| Parâmetro | Para que serve |
|---|---|
ENABLE_INPUT_GUARDRAILS |
Ativa guardrails de entrada antes do roteamento/agente. |
ENABLE_OUTPUT_GUARDRAILS |
Ativa guardrails de saída depois da resposta do agente. |
ENABLE_JUDGES |
Ativa judges pós-resposta. |
ENABLE_SUPERVISOR |
Ativa supervisor/validação de fluxo do framework. |
ENABLE_OUTPUT_SUPERVISOR |
Ativa revisão/retry da resposta antes da entrega. |
ENABLE_PARALLEL_GUARDRAILS |
Executa guardrails em paralelo quando suportado. |
GUARDRAILS_FAIL_FAST |
Interrompe no primeiro guardrail bloqueante. |
OUTPUT_SUPERVISOR_MAX_RETRIES |
Número máximo de tentativas de correção do Output Supervisor. |
GUARDRAILS_CONFIG_PATH |
Caminho do YAML de guardrails. |
JUDGES_CONFIG_PATH |
Caminho do YAML de judges. |
PROMPT_POLICY_PATH |
Caminho da política de prompt. |
USE_MOCK_LLM |
Força LLM mock para teste local sem provider real. |
GUARDRAIL_LLM |
Perfil/modelo usado pelos guardrails LLM. |
Channel / Routing / MCP framework
| Parâmetro | Para que serve |
|---|---|
DEFAULT_CHANNEL |
Canal padrão quando não informado na request. |
FRAMEWORK_CHANNEL_INPUT_MODE |
Modo do Channel Gateway: embedded ou external. |
ENABLE_VOICE_ADAPTER |
Habilita adapter de voz. |
ENABLE_WHATSAPP_ADAPTER |
Habilita adapter WhatsApp. |
ENABLE_TEXT_ADAPTER |
Habilita adapter texto/web. |
ROUTING_CONFIG_PATH |
Caminho do YAML de roteamento/intents. |
ENABLE_LLM_ROUTER |
Liga router por LLM além das regras/YAML. |
ROUTING_MODE |
Modo de roteamento do framework. |
ENABLE_MCP_TOOLS |
Liga/desliga execução de tools MCP. |
MCP_SERVERS_CONFIG_PATH |
Caminho do YAML com servidores MCP. |
TOOLS_CONFIG_PATH |
Caminho do catálogo de tools MCP. |
MCP_PARAMETER_MAPPING_PATH |
Caminho do mapeamento BusinessContext -> argumentos das tools. |
MCP_TOOL_TIMEOUT_SECONDS |
Timeout padrão das chamadas MCP. |
IDENTITY_CONFIG_PATH |
Caminho do YAML do IdentityResolver. |
ENABLE_REDIS_CACHE |
Liga Redis para cache distribuído. |
REDIS_URL |
URL de conexão Redis. |
ENABLE_CONVERSATION_SUMMARY_MEMORY |
Liga memória sumarizada de conversa. |
MEMORY_CONTEXT_STRATEGY |
Estratégia de contexto de memória, por exemplo summary. |
MEMORY_HISTORY_LIMIT |
Limite de mensagens mantidas no histórico. |
MEMORY_RECENT_MESSAGES_LIMIT |
Quantidade de mensagens recentes injetadas no prompt. |
MEMORY_SUMMARY_TRIGGER_MESSAGES |
Número de mensagens que dispara sumarização. |
MEMORY_MAX_SUMMARY_CHARS |
Tamanho máximo do resumo de memória. |
MEMORY_SUMMARY_USE_LLM |
Usa LLM para gerar resumo de memória. |
MEMORY_INJECT_RECENT_MESSAGES |
Injeta mensagens recentes no contexto do agente. |
MEMORY_INJECT_SUMMARY |
Injeta resumo da conversa no contexto do agente. |
MCP legacy TIM/FIRST - integração real por padrão
| Parâmetro | Para que serve |
|---|---|
TIM_MCP_USE_MOCK |
Liga mock interno do MCP. Se false, MCP chama endpoints externos configurados. |
TIM_MCP_TIMEOUT_SECONDS |
Timeout padrão do MCP legado. |
TIM_GATEWAY_RETRY_MAX_RETRIES |
Número máximo de retries nas chamadas externas TIM. |
TIM_GATEWAY_RETRY_BACKOFF_FACTOR |
Fator de backoff entre retries. |
TIM_GATEWAY_DEFAULT_TIMEOUT |
Timeout padrão do gateway HTTP externo. |
TIM_DEFAULT_AUTH |
Authorization default para endpoints TIM quando não há auth específico. |
TIM_CLIENT_ID |
Client ID padrão enviado às APIs TIM/FIRST. |
TIM_USER_ID |
Usuário técnico/default enviado em payloads/headers. |
TIM_DEFAULT_CLIENT_ID |
Client ID fallback para chamadas externas. |
TIM_DEFAULT_CSP_ID |
CSP ID padrão para VAS/serviços. |
TIM_DEFAULT_CHANNEL |
Canal default moderno para APIs TIM. |
TIM_DEFAULT_CHANNEL_LEGACY |
Canal default compatível com legado. |
TIM_AUTHORIZATION_OAM |
Token/header OAM quando a API exigir. |
TIM_CN_FIELD |
Campo CN legado opcional para headers/payloads. |
TIM_TYPE_FIELD |
Campo type legado opcional para headers/payloads. |
Consulta VAS
| Parâmetro | Para que serve |
|---|---|
TIM_QUERY_VAS_URL |
URL do endpoint externo para query vas. |
TIM_QUERY_VAS_AUTH |
Header Authorization específico para query vas. Valor sensível. |
TIM_QUERY_VAS_TIMEOUT |
Timeout em segundos para query vas. |
TIM_URL_CONSULTA_VAS |
Alias legado de URL para endpoint TIM; mantido para compatibilidade com nomes antigos. |
TIM_CONSULTA_AUTH |
Header Authorization específico para consulta. Valor sensível. |
TIM_CONSULTA_TIMEOUT |
Timeout em segundos para consulta. |
Bloqueio VAS
| Parâmetro | Para que serve |
|---|---|
TIM_BLOCK_VAS_URL |
URL do endpoint externo para block vas. |
TIM_BLOCK_VAS_AUTH |
Header Authorization específico para block vas. Valor sensível. |
TIM_BLOCK_VAS_TIMEOUT |
Timeout em segundos para block vas. |
TIM_BLOCK_VAS_CLIENT_ID |
Client ID específico usado em block vas. |
TIM_BLOCK_VAS_OPERATION_TYPE |
Tipo de operação enviado para block vas. |
TIM_BLOCK_VAS_PAYLOAD_MODE |
Modo de montagem do payload para block vas. |
TIM_BLOCK_VAS_ACCEPT_ENCODING |
Header Accept-Encoding usado em block vas. |
TIM_URL_BLOQUEIO_VAS |
Alias legado de URL para endpoint TIM; mantido para compatibilidade com nomes antigos. |
TIM_BLOQUEIO_AUTH |
Header Authorization específico para bloqueio. Valor sensível. |
TIM_BLOQUEIO_TIMEOUT |
Timeout em segundos para bloqueio. |
TIM_BLOQUEIO_OPERATION_TYPE |
Tipo de operação enviado para bloqueio. |
TIM_BLOQUEIO_ACCEPT_ENCODING |
Header Accept-Encoding usado em bloqueio. |
Cancelamento VAS
| Parâmetro | Para que serve |
|---|---|
TIM_CANCEL_VAS_URL |
URL do endpoint externo para cancel vas. |
TIM_CANCEL_VAS_AUTH |
Header Authorization específico para cancel vas. Valor sensível. |
TIM_CANCEL_VAS_TIMEOUT |
Timeout em segundos para cancel vas. |
TIM_CANCEL_VAS_CLIENT_ID |
Client ID específico usado em cancel vas. |
TIM_CANCELAMENTO_URL |
URL do endpoint externo para cancelamento. |
TIM_CANCELAMENTO_AUTH |
Header Authorization específico para cancelamento. Valor sensível. |
TIM_CANCELAMENTO_TIMEOUT |
Timeout em segundos para cancelamento. |
Contrato
| Parâmetro | Para que serve |
|---|---|
TIM_CONTRATO_URL |
URL do endpoint externo para contrato. |
TIM_CONTRATO_AUTH |
Header Authorization específico para contrato. Valor sensível. |
TIM_CONTRATO_TIMEOUT |
Timeout em segundos para contrato. |
Complete invoices / fatura completa
| Parâmetro | Para que serve |
|---|---|
TIM_COMPLETE_INVOICES_URL |
URL do endpoint externo para complete invoices. |
TIM_COMPLETE_INVOICES_AUTH |
Header Authorization específico para complete invoices. Valor sensível. |
TIM_COMPLETE_INVOICES_TIMEOUT |
Timeout em segundos para complete invoices. |
TIM_COMPLETE_INVOICES_CLIENT_ID |
Client ID específico usado em complete invoices. |
Perfil de fatura
| Parâmetro | Para que serve |
|---|---|
TIM_PROFILE_BILL_URL |
URL do endpoint externo para profile bill. |
TIM_PROFILE_BILL_AUTH |
Header Authorization específico para profile bill. Valor sensível. |
TIM_PROFILE_BILL_TIMEOUT |
Timeout em segundos para profile bill. |
TIM_URL_PERFIL_FATURA |
Alias legado de URL para endpoint TIM; mantido para compatibilidade com nomes antigos. |
TIM_PROFILE_FULL_URL |
URL do endpoint externo para profile full. |
Divergência / billing analysis
| Parâmetro | Para que serve |
|---|---|
TIM_DIVERGENCIA_URL |
URL do endpoint externo para divergencia. |
TIM_DIVERGENCIA_AUTH |
Header Authorization específico para divergencia. Valor sensível. |
TIM_INVOICE_EXPLANATION_URL |
URL do endpoint externo para invoice explanation. |
TIM_INVOICE_EXPLANATION_AUTH |
Header Authorization específico para invoice explanation. Valor sensível. |
Bill/PDF / invoice recover
| Parâmetro | Para que serve |
|---|---|
TIM_BILL_PDF_URL |
URL do endpoint externo para bill pdf. |
TIM_BILL_PDF_AUTH |
Header Authorization específico para bill pdf. Valor sensível. |
TIM_BILL_PDF_TIMEOUT |
Timeout em segundos para bill pdf. |
TIM_BILL_PDF_CLIENT_ID |
Client ID específico usado em bill pdf. |
TIM_URL_INVOICE_RECOVER |
Alias legado de URL para endpoint TIM; mantido para compatibilidade com nomes antigos. |
TIM_INVOICE_RECOVER_AUTH |
Header Authorization específico para invoice recover. Valor sensível. |
TIM_INVOICE_RECOVER_TIMEOUT |
Timeout em segundos para invoice recover. |
TIM_INVOICE_RECOVER_CLIENT_ID |
Client ID específico usado em invoice recover. |
Protocolo / backOfficeSRopening
| Parâmetro | Para que serve |
|---|---|
TIM_PROTOCOL_URL |
URL do endpoint externo para protocol. |
TIM_PROTOCOL_AUTH |
Header Authorization específico para protocol. Valor sensível. |
TIM_PROTOCOL_TIMEOUT |
Timeout em segundos para protocol. |
Contestação/SR
| Parâmetro | Para que serve |
|---|---|
TIM_CUSTOMER_CONTESTATION_URL |
URL do endpoint externo para customer contestation. |
TIM_CUSTOMER_CONTESTATION_AUTH |
Header Authorization específico para customer contestation. Valor sensível. |
TIM_CUSTOMER_CONTESTATION_TIMEOUT |
Timeout em segundos para customer contestation. |
TIM_CUSTOMER_CONTESTATION_CLIENT_ID |
Client ID específico usado em customer contestation. |
TIM_CUSTOMER_CONTESTATION_USER_ID |
Usuário técnico específico usado em customer contestation. |
Status SR
| Parâmetro | Para que serve |
|---|---|
TIM_SERVICE_REQUEST_STATUS_URL |
URL do endpoint externo para service request status. |
TIM_SERVICE_REQUEST_STATUS_AUTH |
Header Authorization específico para service request status. Valor sensível. |
TIM_SERVICE_REQUEST_STATUS_TIMEOUT |
Timeout em segundos para service request status. |
SMS
| Parâmetro | Para que serve |
|---|---|
TIM_SMS_URL |
URL do endpoint externo para sms. |
TIM_SMS_AUTH |
Header Authorization específico para sms. Valor sensível. |
TIM_SMS_TIMEOUT |
Timeout em segundos para sms. |
TIM_SMS_CLIENT_ID |
Client ID específico usado em sms. |
TIM_SMS_SENDER_ADDRESS |
Endereço/remetente usado no envio de SMS. |
TIM_SMS_SENDER_NAME |
Nome do remetente usado no envio de SMS. |
TIM_SMS_TOKEN_URL |
Configuração para obtenção de token OAuth/serviço do envio de SMS. |
TIM_SMS_TOKEN_CLIENT_ID |
Configuração para obtenção de token OAuth/serviço do envio de SMS. |
TIM_SMS_TOKEN_CLIENT_SECRET |
Configuração para obtenção de token OAuth/serviço do envio de SMS. |
TIM_SMS_TOKEN_SCOPE |
Configuração para obtenção de token OAuth/serviço do envio de SMS. |
TIM_SMS_TOKEN_AUDIENCE |
Configuração para obtenção de token OAuth/serviço do envio de SMS. |
TIM_SMS_TOKEN_TIMEOUT |
Configuração para obtenção de token OAuth/serviço do envio de SMS. |
SMS_BARCODE_AUTH |
Authorization alternativo para envio de SMS com código de barras. |
Tracking activities
| Parâmetro | Para que serve |
|---|---|
TIM_TRACKING_ACTIVITIES_URL |
URL do endpoint externo para tracking activities. |
TIM_TRACKING_ACTIVITIES_AUTH |
Header Authorization específico para tracking activities. Valor sensível. |
TIM_TRACKING_ACTIVITIES_TIMEOUT |
Timeout em segundos para tracking activities. |
TIM_TRACKING_ACTIVITIES_USER_LOGIN |
Login técnico usado em tracking activities. |
TIM_TRACKING_ACTIVITIES_CHANNEL |
Canal enviado nas chamadas de tracking activities. |
TIM_TRACKING_ACTIVITIES_CLIENT_ID |
Client ID específico usado em tracking activities. |
Legacy app / workflows
| Parâmetro | Para que serve |
|---|---|
TIM_WORKFLOWS_DIR |
Diretório de workflows legados mantido como referência. |
TIM_WORKFLOW_POSTGRES_DSN |
DSN Postgres legado, se algum workflow antigo exigir. |
TIM_APP_HOST |
Host legado da aplicação TIM. |
TIM_APP_PORT |
Porta legada da aplicação TIM. |
TIM_APP_RELOAD |
Reload legado do app TIM. |
TIM_APP_LOG_LEVEL |
Log level legado do app TIM. |
LLM Gateway legado
| Parâmetro | Para que serve |
|---|---|
TIM_LLM_GATEWAY_SOURCES |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_GATEWAY_LOCAL_DIR |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_GATEWAY_CAPABILITIES_DIR |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_GATEWAY_LANGGRAPH_URL |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_GATEWAY_LANGGRAPH_TIMEOUT |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_GATEWAY_FALLBACK_PROMPT_ID |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
TIM_LLM_GATEWAY_FALLBACK_PROMPT_CONTENT |
Configuração legada do LLM Gateway TIM mantida para compatibilidade. |
Pub/Sub / export legado
| Parâmetro | Para que serve |
|---|---|
GCP_PROJECT_ID |
Projeto GCP legado usado em Pub/Sub/exportações. |
AGENT_PUBSUB_TOPIC |
Tópico Pub/Sub legado para curadoria/ingestão. |
TIM_PUBSUB_DIRECT_ENABLED |
Liga publicação direta no Pub/Sub legado. |
GOOGLE_APPLICATION_CREDENTIALS |
Caminho do arquivo de credenciais GCP. |
Mock legado explicitamente desligado
| Parâmetro | Para que serve |
|---|---|
TIM_MOCK_LATENCY_MS |
Latência artificial do mock legado. |
TIM_MOCK_FAILURES |
Lista/configuração de falhas simuladas no mock legado. |
TIM_MOCK_FIXTURES_DIR |
Diretório de fixtures do mock legado. |
Recomendações de operação
- Para teste local completo, prefira
TIM_MCP_USE_MOCK=falsecom URLs apontando parahttp://localhost:8001, pois assim você valida backend, MCP e mock externo no mesmo fluxo. - Para smoke test rápido apenas do MCP, use
TIM_MCP_USE_MOCK=trueno MCP e dispense o mock server. - Para produção/homologação, substitua URLs do mock pelas APIs reais TIM/FIRST e revise todos os parâmetros
*_AUTH,*_CLIENT_ID, timeouts e retry. - Não deixe
USE_MOCK_LLM=trueem ambiente que precise validar chamada real ao LLM. - Se
VECTOR_STORE_PROVIDER=autonomous, valideADB_*,EMBEDDING_PROVIDER=ocieOCI_EMBEDDING_MODELantes de testar RAG. - Se
ENABLE_LANGFUSE=true, confirmeLANGFUSE_HOST,LANGFUSE_PUBLIC_KEYeLANGFUSE_SECRET_KEYantes de esperar traces. - Reinicie MCP e backend sempre que alterar
.env,config/tools.yaml,config/mcp_servers.yamlouconfig/mcp_parameter_mapping.yaml.
Troubleshooting rápido
| Sintoma | Causa provável | Ação |
|---|---|---|
Endpoint externo não configurado para TIM_COMPLETE_INVOICES |
URL da API externa não preenchida no .env do MCP. |
Configure TIM_COMPLETE_INVOICES_URL ou use TIM_MCP_USE_MOCK=true. |
| Backend não chama MCP | ENABLE_MCP_TOOLS=false, MCP_SERVERS_CONFIG_PATH errado ou MCP fora do ar. |
Verifique /debug/mcp/call/consultar_fatura e http://localhost:8100/health. |
| Frontend recebe erro CORS | Origem não está em CORS_ORIGINS. |
Inclua http://localhost:5173 no .env. |
| Não aparecem traces no Langfuse | Langfuse desabilitado ou chaves/host incorretos. | Verifique ENABLE_LANGFUSE, LANGFUSE_HOST, LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY. |
| RAG não retorna documentos | Vector store/embedding não configurados ou base não ingerida. | Teste VECTOR_STORE_PROVIDER=memory/EMBEDDING_PROVIDER=mock ou configure ADB/OCI. |
Tool retorna ok=false sem erro |
MCP antigo/rota errada ou backend não reiniciado. | Reinicie MCP e backend; confira config/mcp_servers.yaml. |
Resumo executivo
Este projeto coloca o Agent Contas FIRST sobre o Agent Framework OCI com uma arquitetura mais limpa: o framework cuida das capacidades transversais corporativas e o código do Contas fica restrito ao domínio de negócio. A integração operacional passa por MCP, com mapeamento canônico de identidade, cache declarativo, RAG nativo, guardrails, judges e observabilidade. Para subir localmente o fluxo completo, use quatro terminais: MCP na porta 8100, mock externo na porta 8001, backend na porta 8000 e frontend na porta 5173.