Configuração do Sistema (Variáveis e Constantes)
O ecossistema do Menthor gerencia seu comportamento através de dois arquivos principais de configuração: o arquivo de ambiente .env (na raiz) e o script técnico projects/menthor/menthor_config.py.
Variáveis de Ambiente (.env)
Configure as credenciais dinâmicas, chaves de terceiros e parâmetros de tráfego no arquivo na raiz do projeto:
Variável |
Descrição |
Exemplo |
|---|---|---|
|
Modelo padrão utilizado para as inferências gerais de chat. |
|
|
Modelo leve utilizado especificamente na rota |
|
|
Lista de modelos homologados e permitidos pelo sistema. |
|
|
Provedor de Inteligência Artificial ativo no sistema. |
|
|
Token de segurança exigido no header |
|
|
Chave secreta de autenticação para a interface Chainlit. |
|
|
Chave secreta de autenticação para as integrações de WhatsApp. |
|
|
Chave oficial do Menthor para acesso à API da OpenAI (Maximiza). |
|
|
Chave oficial do Menthor para acesso à API da Azure OpenAI (Getter). |
|
|
URL do endpoint base para as chamadas da API da Azure OpenAI (Getter). |
|
|
Chave mestra que ativa ou desativa os limites de uso. |
|
|
Dicionário JSON com as quotas de requisição por perfil. |
(Ver seção abaixo) |
|
URL de conexão com a instância do Redis para persistência de sessões e códigos OTP. |
|
|
Host do servidor SMTP para envio de códigos de verificação OTP. |
|
|
Porta de conexão do servidor SMTP (587 para TLS ou 465 para SSL). |
|
|
E-mail remetente autenticado para disparo das mensagens. |
|
|
Senha de aplicativo (App Password) gerada no provedor de e-mail. |
|
|
Nome de exibição amigável do remetente na caixa de entrada do usuário. |
|
|
Habilita criptografia STARTTLS (recomendado para porta 587). |
|
|
Habilita conexão SSL direta (para porta 465). |
|
Perigo
Restrição de Modelos (OPENAI_MODEL / OPENAI_MODEL_SMALL / OPENAI_MODEL_LIST): Estes valores não devem ser alterados sem alinhamento prévio com a equipe de desenvolvimento. A arquitetura, os prompts e a lógica de processamento de dados foram otimizados especificamente para estes modelos. Alterações não homologadas podem causar falhas críticas na geração de respostas e instabilidade no sistema.
Controle de Fluxo (Rate Limiting)
O sistema implementa um limitador de requisições baseado em API Key e Janela Fixa para proteger a infraestrutura contra uso excessivo e picos de custo.
Perfis de Limite
As quotas são segmentadas por categorias de consumo:
MESSAGES: Aplicado aos endpoints de streaming (
/token_streaming,/sentence_streaming,/block_streaming).Nota
O endpoint
/send_prompt_wppconsome a cota do perfil MESSAGES, pois utiliza internamente a lógica de blocos para entrega ao WhatsApp.PROCESSING: Aplicado a operações de escrita e análise profunda, como o gerenciamento de arquivos (Menthor Files) e a documentação automática de bancos de dados (Menthor DB), como
/databases/create_description_db,/databases/evaluate-context-quality,/storage/upload_filese/storage/update_files. Inclui o uso do endpoint específico de análise de detecções/llm_analysis/detectionse de ocorrências/llm_analysis/occurrences.DEFAULT / ADMIN: Limites de segurança para rotas de sistema e monitoramento. Não aplicados no Menthor.
Configuração Técnica das Quotas
A variável RATE_LIMITS_CONFIG deve seguir rigorosamente a sintaxe de dicionário Python/JSON.
RATE_LIMITS_CONFIG='{
"DEFAULT": {"per_minute": 20, "per_hour": 100, "per_day": 500},
"MESSAGES": {"per_minute": 50, "per_hour": 200, "per_day": 1200},
"PROCESSING": {"per_minute": 20, "per_hour": 100, "per_day": 500}
}'
Aviso
Sintaxe de Aspas: Para que o sistema interprete as configurações corretamente, o bloco deve ser envolvido por aspas simples (') e as chaves internas por aspas duplas (").
Nota
Se ENABLE_RATE_LIMITER estiver como False, todos os limites acima são ignorados, permitindo requisições ilimitadas. Use com cautela em produção.
Serviço de Cache e Autenticação OTP (Redis & SMTP)
Para viabilizar a validação segura de identidade de usuários finais via One-Time Password (OTP) com suporte a múltiplos nós ou workers (Uvicorn), o sistema utiliza uma camada de persistência temporária no Redis e disparo por e-mail via protocolo SMTP.
Persistência no Redis
A variável REDIS_URL define a conexão com o banco de chaves:
Em Docker: Utiliza o hostname da rede interna:
redis://redis:6379/0.Em Desenvolvimento Local: Aponta para a porta exposta no host:
redis://localhost:6379/0.Mecanismo de Fallback: Caso a conexão com o Redis fique indisponível, o sistema emite um aviso no log e ativa automaticamente um armazenamento em memória local (in-memory) thread-safe para evitar interrupções operacionais.
Envio de E-mail via SMTP
O envio de e-mails de verificação suporta qualquer provedor SMTP padrão (como Gmail, Outlook, AWS SES ou servidores corporativos):
Google Workspace / Gmail: Requer o uso de Senha de Aplicativo (App Password) de 16 dígitos gerada na Conta Google com 2FA ativo. O sistema higieniza automaticamente espaços em branco e caracteres invisíveis na variável
SMTP_PASSWORD.Criptografia: Por padrão, utiliza STARTTLS na porta
587(SMTP_USE_TLS=True). Se utilizar a porta465com SSL direto, configureSMTP_USE_SSL=TrueeSMTP_USE_TLS=False.
Limites de Envio e Provedores Transacionais
Ao planejar o ambiente produtivo, observe as particularidades de volume e entregabilidade:
Quotas de Envio (Gmail / Google Workspace): Contas gratuitas do Gmail possuem cota de ~500 envios/dia, enquanto contas corporativas do Google Workspace suportam até ~2.000 envios/dia via SMTP. Picos repentinos de validações podem atingir esse teto temporariamente se houver muitas requisições simultâneas.
Provedores Transacionais em Alta Escala: Para operações corporativas com alto tráfego ou múltiplos clientes simultâneos, recomenda-se apontar as credenciais SMTP para serviços transacionais dedicados (como Amazon SES, SendGrid, Resend ou Postmark), que oferecem maior volume e reputação de entrega.
Registros de Domínio (SPF, DKIM e DMARC): Certifique-se de que o domínio do remetente (
SMTP_USER) possua os registros SPF, DKIM e DMARC configurados na zona de DNS, garantindo que os e-mails de código de segurança cheguem imediatamente à Caixa de Entrada dos colaboradores.
Configurações Internas (menthor_config.py)
O arquivo técnico projects/menthor/menthor_config.py atua centralizando constantes estruturais da aplicação e inicializando os clientes da API de IA através da classe estática AIConfig.
Integrações Externas e Diretórios
Este arquivo define valores fixos que controlam as pontes de dados da plataforma:
Integração SQL Externa (Getter): Configura a URL base (
URL_API), o token de parceiro (ACCESS_TOKEN) e o email administrador corporativo (USER_EMAIL) para sincronização de contextos de empresas em caso de erro em arquivo local.Notificações a APIs Externas: Gerencia chaves internas como
EXTERNAL_API_TOKENe o token dedicadoEXTERNAL_API_TOKEN_VALGROUP.Estrutura de Pastas Locais: Mapeia onde o sistema busca dados brutos e índices (
CONTEXT_DIR,DB_DIReVS_DIR).Aviso
Se alterar o caminho de
CONTEXT_DIR, deve-se obrigatoriamente alterar a variável correspondente de mesmo nome contida emcore/config_menthor.py.Roteamento de Mensagens (WhatsApp): Centraliza as variáveis de ambiente
API_KEYeWPP_AUTH_SECRETcombinando-as com os IPs de servidores de mensageria em produção (END_POINT_BLOCK_STREAMINGeEND_POINT_WPP).Perigo
Mudança de Infraestrutura (IP do Servidor): Caso o servidor de mensageria seja migrado ou o IP sofra alterações, os endereços das constantes
END_POINT_BLOCK_STREAMINGeEND_POINT_WPPdevem ser atualizados manualmente neste arquivo, caso contrário o fluxo de entrega de mensagens/WhatsApp falhará por completo. Para desenvolvimento local, as linhas de apontamento para127.0.0.1devem ser descomentadas.
Classe de Conexão de IA (AIConfig)
A classe AIConfig faz a ponte inteligente com o arquivo .env. Ela lê dinamicamente as credenciais informadas e expõe métodos globais como get_async_client() e get_sync_client().
Nota
Regra Crítica do Azure: Ao utilizar o provedor Azure, o nome de implantação (Model deployment name) configurado na nuvem SEMPRE deve ser idêntico ao nome oficial do modelo equivalente na OpenAI (ex: gpt-4o). A classe se encarrega de injetar o base_url correto automaticamente se o provedor for detectado como "azure".