Referência v3
Voltar à plataforma

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.

Separação entre conversar e alterar

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

  1. Abra o projeto e o Chat.
  2. Clique em Configurar modelos → Novo modelo.
  3. Informe nome, driver, URL base, modelo e a chave quando exigida.
  4. Defina ativação, participação no orquestrador, prioridade de 1 a 100 e custo.
  5. 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çoDriverURL base
OpenAIopenai-responseshttps://api.openai.com/v1
Anthropicanthropichttps://api.anthropic.com/v1
Google Geminigeminihttps://generativelanguage.googleapis.com/v1beta
Groq/serviço compatívelopenai-compatibleURL HTTPS do provedor
LocalAI/LM Studioopenai-compatible-localLoopback
Ollamaollamahttp://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árioReferência
Teste 1,5B/3B2–4 vCPU, 4 GB e swap; pode ser lento
Uso individual 3B4 vCPU e 8 GB
Uso frequente8 vCPU e 16 GB
Vários usuários/modelos8+ vCPU, 16–32+ GB e inferência separada
Modelos maiores/baixa latênciaGPU 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 pull com 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.