IA na Vupi IDE
Modelos locais e remotos, múltiplos provedores, histórico, busca web, segurança e operação em VPS.
Funcionamento
Cada projeto possui modelos, preferências e conversas isolados por projeto e usuário. É possível cadastrar vários modelos, editar, excluir, alternar no chat, marcar um padrão ou usar o Orquestrador inteligente, que tenta até três modelos habilitados conforme prioridade, custo e complexidade.
O histórico persiste no banco com conteúdo criptografado e busca por índice cego. A memória recupera mensagens recentes e trechos antigos relevantes; ela não altera os pesos do modelo e não é aprendizado autônomo.
Perguntas recebem texto normal. Para alterar arquivos, a IA precisa devolver uma proposta estruturada, com caminhos e hashes válidos, que passa novamente pelas análises da Vupi. O modelo não recebe shell, Docker, banco, segredos ou acesso ao host.
Preparar o banco
cd /var/www/vupi
sudo -u www-data php vupi migrate --core
sudo systemctl reload php8.5-fpm
Configurar no projeto
- Abra o projeto e o Chat.
- Clique em Configurar modelos → Novo modelo.
- Informe nome, driver, URL base, modelo e a chave quando exigida.
- Defina ativação, participação no orquestrador, prioridade de 1 a 100 e custo.
- Salve, selecione o modelo e opcionalmente marque-o como padrão.
A chave é criptografada e não retorna ao navegador. URLs externas exigem HTTPS; serviços locais aceitam somente loopback.
| Serviço | Driver | URL base |
|---|---|---|
| OpenAI | openai-responses | https://api.openai.com/v1 |
| Anthropic | anthropic | https://api.anthropic.com/v1 |
| Google Gemini | gemini | https://generativelanguage.googleapis.com/v1beta |
| Groq/serviço compatível | openai-compatible | URL HTTPS do provedor |
| LocalAI/LM Studio | openai-compatible-local | Loopback |
| Ollama | ollama | http://127.0.0.1:11434 |
Use o nome exato disponível na conta. Modelos, preços, limites e cotas gratuitas são definidos pelos provedores e podem mudar.
Ollama local
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable --now ollama
ollama pull qwen2.5-coder:3b
Não publique a porta 11434 na Internet. Configure em /var/www/vupi/.env:
OLLAMA_ENABLED=true
OLLAMA_URL=http://127.0.0.1:11434
OLLAMA_MODEL=qwen2.5-coder:3b
OLLAMA_AUTO_DISCOVER=true
OLLAMA_NUM_CTX=3072
OLLAMA_NUM_PREDICT=768
OLLAMA_TIMEOUT_SECONDS=300
OLLAMA_KEEP_ALIVE=30m
IDE_AI_DOCUMENTATION_CONTEXT_BYTES=8000
OLLAMA_AUTO_DISCOVER consulta os modelos instalados. Recarregue o PHP-FPM depois de editar o ambiente.
Teste direto
ollama list
curl --max-time 180 -sS http://127.0.0.1:11434/api/generate \
-H 'Content-Type: application/json' \
-d '{"model":"qwen2.5-coder:3b","prompt":"Responda somente: modelo funcionando","stream":false,"keep_alive":"30m","options":{"num_ctx":3072,"num_predict":32,"temperature":0.1}}'
Limites do serviço para VPS pequena
sudo systemctl edit ollama
[Service]
Environment="OLLAMA_KEEP_ALIVE=30m"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="OLLAMA_NUM_PARALLEL=1"
Environment="OLLAMA_MAX_QUEUE=32"
sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl reload php8.5-fpm
Dimensionamento da VPS
| Cenário | Referência |
|---|---|
| Teste 1,5B/3B | 2–4 vCPU, 4 GB e swap; pode ser lento |
| Uso individual 3B | 4 vCPU e 8 GB |
| Uso frequente | 8 vCPU e 16 GB |
| Vários usuários/modelos | 8+ vCPU, 16–32+ GB e inferência separada |
| Modelos maiores/baixa latência | GPU e VRAM suficientes para modelo, contexto e cache |
Na máquina testada com aproximadamente 3,7 GB, o Qwen 3B ocupou cerca de 2,2 GB no Ollama e a primeira chamada levou cerca de 23 segundos, principalmente para carregar o modelo. É uma referência, não garantia. Contexto, saída e paralelismo maiores ampliam muito o consumo.
Modelos globais e remotos
OPENAI_API_KEY=
OPENAI_MODEL=gpt-5.4-mini
ANTHROPIC_API_KEY=
ANTHROPIC_MODEL=claude-sonnet-4-5
GROQ_API_KEY=
GROQ_MODEL=openai/gpt-oss-120b
GEMINI_API_KEY=
GEMINI_MODEL=gemini-3.1-flash-lite
O cadastro dentro do projeto é recomendado. A configuração global é fallback administrativo. Em IDE_AI_PROVIDERS_JSON, use api_key_env para apontar ao segredo; nunca escreva a chave no JSON.
Pesquisa web segura
IDE_AI_WEB_SEARCH_ENABLED=true
IDE_AI_WEB_SEARCH_MODE=explicit
TAVILY_API_KEY=segredo-do-servidor
Em modo explicit, a busca ocorre apenas quando o pedido mencionar pesquisar, buscar, web, Internet ou informação atualizada. O resultado é dado não confiável e não substitui regras do sistema. Modelos locais não navegam diretamente.
Histórico, raciocínio e MCP
Conversas e mensagens persistem no banco por projeto e usuário, com conteúdo criptografado, paginação, exclusão e busca por índice cego. A memória combina mensagens recentes e trechos antigos relevantes, sem alterar os pesos do modelo.
Os níveis auto, fast, balanced e deep controlam quanto código e documentação entram no contexto. Em modelos locais pequenos, prefira rápido ou equilibrado; contexto profundo aumenta latência e memória.
MCP_ENABLED=true
GET /api/ide/projects/{id}/mcp
POST /api/ide/projects/{id}/mcp
O MCP usa Streamable HTTP, autenticação, propriedade do projeto, CORS e rate limit. Suas ferramentas são somente leitura: manifesto, listagem/leitura de arquivos e análise estática. Ele não oferece shell, gravação direta, migrations, ativação nem acesso a outro projeto.
Diagnóstico
free -h
ollama ps
curl -fsS http://127.0.0.1:11434/api/tags
sudo systemctl status ollama --no-pager
sudo journalctl -u ollama -n 100 --no-pager
sudo journalctl -u php8.5-fpm -n 100 --no-pager
- Nenhum modelo: confirme
OLLAMA_ENABLED, URL, modelo instalado e recarregue PHP-FPM. - HTTP 502/timeout: reduza contexto e saída, use paralelismo 1, modelo menor ou mais RAM/CPU.
- Modelo não encontrado: execute
ollama pullcom o nome idêntico ao `.env`. - Proposta inválida: use modelo mais capaz ou orquestrador; conversa textual não deve criar ação de aplicar.
Checklist de produção
- migrations e backups testados;
- chaves fora do Git e `.env` com acesso restrito;
- Ollama em loopback, sem porta pública;
- limites de uso, fila, contexto, saída e concorrência;
- monitoramento de CPU, RAM, swap e latência;
- pesquisa web desativada ou explícita;
- revisão e testes antes de ativar endpoints.
Guia operacional integral no repositório: docs/assistente-inteligente-ide.md. Referências: Ollama FAQ e alterar tipo de instância EC2.