arcadiasuite/docs/INTEGRACAO_IA.md

6.0 KiB

Integração de IA — Ollama no Servidor

Guia para conectar o Arcádia Suite à IA local em produção.


Visão geral do fluxo

Arcádia Suite (Manus, Agents, Embeddings)
        │
        │  http://litellm:4000/v1
        ▼
   LiteLLM (porta 4000) — gateway único
        │
        ├──► Ollama  (modelos open source locais) [TIER 1 — padrão]
        └──► OpenAI/Anthropic/Groq (opt-in)       [TIER 2 — externo]

Nenhum serviço do Arcádia chama Ollama diretamente. Tudo passa pelo LiteLLM — que roteia, loga e faz fallback automaticamente.


Cenário A: Ollama já instalado no servidor (fora do Docker)

1. Verificar se o Ollama responde

curl http://localhost:11434/api/tags
# Deve retornar a lista de modelos instalados

2. Configurar a variável no Coolify

OLLAMA_BASE_URL=http://host-gateway:11434

host-gateway é o endereço do host dentro da rede Docker. Se não funcionar, use o IP da interface de rede do servidor (ex: http://192.168.1.X:11434).

3. Desativar o container Ollama (não precisa dos dois)

No Coolify, não suba o profile ai se não for usar o container Docker do Ollama:

# Sobe tudo EXCETO ollama e open-webui
docker compose -f docker-compose.prod.yml up -d
# Sobe só o LiteLLM (necessário sempre)
docker compose -f docker-compose.prod.yml --profile ai up litellm -d

4. Puxar os modelos necessários

# Modelos usados pelo Arcádia (mínimo recomendado)
ollama pull llama3.3               # agente principal (Manus)
ollama pull nomic-embed-text       # embeddings semânticos
ollama pull qwen2.5-coder:7b       # geração de código (DevCenter)
ollama pull deepseek-r1:7b         # raciocínio complexo

Cenário B: Ollama como container Docker

Use este cenário se o Ollama NÃO está instalado no servidor.

1. Configurar variável

OLLAMA_BASE_URL=http://ollama:11434

2. Subir com o profile ai

docker compose -f docker-compose.prod.yml --profile ai up -d

3. Puxar modelos após container subir

docker exec -it $(docker ps -qf "name=ollama") ollama pull llama3.3
docker exec -it $(docker ps -qf "name=ollama") ollama pull nomic-embed-text
docker exec -it $(docker ps -qf "name=ollama") ollama pull qwen2.5-coder:7b
docker exec -it $(docker ps -qf "name=ollama") ollama pull deepseek-r1:7b

Variáveis de ambiente — resumo completo

Configure todas no Coolify antes do deploy:

# ── Banco ─────────────────────────────────────────────────────────────────────
PGPASSWORD=           # senha forte, não use a padrão
DATABASE_URL=postgresql://arcadia:SENHA@db:5432/arcadia

# ── Segurança (gerar com: openssl rand -hex 32) ────────────────────────────────
SESSION_SECRET=
SSO_SECRET=
LITELLM_API_KEY=
WEBUI_SECRET_KEY=
SUPERSET_SECRET_KEY=

# ── Manus → LiteLLM (não alterar — já configurado) ───────────────────────────
AI_INTEGRATIONS_OPENAI_BASE_URL=http://litellm:4000/v1
AI_INTEGRATIONS_OPENAI_API_KEY=${LITELLM_API_KEY}

# ── Ollama ────────────────────────────────────────────────────────────────────
# Ollama no host:      http://host-gateway:11434
# Ollama em container: http://ollama:11434
OLLAMA_BASE_URL=http://host-gateway:11434

# ── Providers externos (deixar vazio para soberania total) ───────────────────
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GROQ_API_KEY=

# ── Domínio ───────────────────────────────────────────────────────────────────
DOMAIN=seudominio.com.br

Verificar se a integração está funcionando

1. Testar LiteLLM direto

curl http://localhost:4000/v1/chat/completions \
  -H "Authorization: Bearer SEU_LITELLM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"arcadia-default","messages":[{"role":"user","content":"Oi"}]}'

2. Testar Manus via interface

Acesse https://seudominio.com.br → abra o Manus → envie uma mensagem simples. O Manus deve responder via Ollama.

3. Ver logs em tempo real

# Logs do LiteLLM (todas as chamadas de IA)
docker compose logs -f litellm

# Logs do app (Manus, erros, requests)
docker compose logs -f app

Ordem de inicialização recomendada

# 1. Banco e Redis
docker compose -f docker-compose.prod.yml up -d db redis

# 2. Aguardar banco ficar saudável
docker compose -f docker-compose.prod.yml ps   # esperar db = healthy

# 3. Migrations (primeira vez ou após atualização de schema)
docker compose -f docker-compose.prod.yml run --rm app npm run db:push

# 4. LiteLLM
docker compose -f docker-compose.prod.yml up -d litellm

# 5. App + microserviços Python
docker compose -f docker-compose.prod.yml up -d app contabil bi automation fisco embeddings

# 6. Ollama (se usando container)
docker compose -f docker-compose.prod.yml --profile ai up -d ollama
# Aguardar e puxar modelos:
docker exec $(docker ps -qf "name=ollama") ollama pull llama3.3
docker exec $(docker ps -qf "name=ollama") ollama pull nomic-embed-text

Dúvidas frequentes

O Manus não responde / trava → Verifique se o LiteLLM está de pé: docker compose logs litellm → Verifique se o Ollama tem o modelo: ollama list

Erro "model not found" no LiteLLM → O modelo referenciado em litellm-config.yaml não foi baixado no Ollama. → Execute ollama pull NOME_DO_MODELO

Ollama no host não é alcançado de dentro do Docker → Tente OLLAMA_BASE_URL=http://172.17.0.1:11434 (IP padrão do docker0) → Ou use o IP real da interface de rede: ip addr show para descobrir