Dify auto-hospedado: criar apps de IA com o seu LLM local
Dify é uma plataforma open source que permite construir aplicações de IA — chatbots, workflows, agentes, assistentes RAG — sem escrever uma linha de código, por meio de uma interface visual. Auto-hospedada e integrada ao Ollama, ela oferece uma camada completa de « no-code » sobre seus modelos locais: seus prompts, documentos e dados nunca saem da sua máquina. Este guia abrange a implantação com Docker Compose, a conexão com um LLM local e a construção de um primeiro assistente RAG funcional.
#Por que Dify em vez de uma interface de chat
Open WebUI ou LM Studio são suficientes para conversar com um modelo. O Dify busca ir um nível além: construir aplicações reutilizáveis. Você define um prompt de sistema, conecta a ele uma base de conhecimento, expõe tudo por meio de uma API ou um widget de chat integrável e versiona suas iterações. É o equivalente local e de código aberto ao OpenAI Assistants ou ao Coze.
O interesse do conjunto Dify + Ollama é duplo. Primeiro, a confidencialidade: ao contrário de Dify conectado a GPT-4 ou Claude, aqui os documentos indexados e as conversas permanecem na sua infraestrutura. Em seguida, o custo: nenhum token cobrado, você pode iterar em centenas de prompts sem monitorar uma fatura de API.
- Chatbot
- Um assistente conversacional com prompt de sistema, variáveis de entrada e memória de conversa.
- Agente
- Um assistente capaz de chamar ferramentas (busca web, cálculo, API) em loop até resolver a tarefa.
- Workflow
- Uma sequência visual de nós (LLM, condição, extração, HTTP) para processamento determinístico.
- Knowledge / RAG
- Indexação dos seus documentos para que as aplicações respondam com base neles, com citações das fontes.
#Pré-requisitos
Este guia leva você ao modelo. O kit leva você ao copiloto que programa no seu editor.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
Dify é um aplicativo com vários contêineres (API, worker, frontend, banco de dados PostgreSQL, Redis, banco de dados vetorial). Ele é implantado via Docker Compose. Quanto ao modelo, pressupõe-se que o Ollama já esteja rodando e escutando na porta padrão.
- Docker + Docker Compose
- Docker Engine recente com o plugin Compose (comando docker compose). No Windows/macOS, o Docker Desktop é suficiente.
- Ollama funcionando
- O daemon Ollama instalado e acessível em http://localhost:11434. Teste com o comando ollama list antes de começar.
- Um modelo de chat
- Por exemplo, qwen3.5:9b (256k de contexto, multimodal, Apache 2.0), a opção de referência para 8 GB em 2026. Em Q4, cabe em ~6,6 GB de VRAM (uma RTX 3060 de 12 GB é mais que suficiente).
- Um modelo de embeddings
- Indispensável para o RAG: nomic-embed-text é a escolha padrão, leve e eficiente.
- Recursos
- Reserve cerca de 8 GB de RAM para a stack do Dify em si, além da VRAM/RAM consumida pelos seus modelos Ollama.
#Instalar o Dify com Docker Compose
O Dify fornece um repositório oficial com uma pasta docker pronta para uso. Você clona o repositório, copia o arquivo de exemplo de configuração do ambiente e inicia a stack.
- 01Clonar o repositórioBaixe a última versão estável do projeto do GitHub, depois acesse a pasta docker que contém o arquivo docker-compose.yaml.
- 02Criar o arquivo .envCopie .env.example para .env. Os valores padrão são suficientes para uso local; é nesse arquivo que você ajustará as portas ou os segredos mais tarde.
- 03Iniciar a stackExecute docker compose up -d. A primeira inicialização baixa as imagens e inicializa o banco de dados PostgreSQL; reserve alguns minutos.
- 04Criar a conta administradoraAbra http://localhost/install no navegador e preencha o e-mail e a senha do primeiro administrador. Essa conta gerenciará o espaço de trabalho.
#Conectar o Ollama como fornecedor de modelos
O Dify só reconhece seus modelos locais se você configurar o Ollama como provedor. Isso é feito nas configurações do modelo, não em um arquivo de configuração. O principal ponto de atenção é a URL: de dentro de um contêiner Docker, localhost se refere ao próprio contêiner, e não à máquina host em que o Ollama está rodando.
- 01Abrir as configurações dos fornecedoresClique em seu avatar no canto superior direito → Configurações → Fornecedores de modelos. Procure Ollama na lista e selecione-o.
- 02Informar o URL do servidorNo campo Base URL, insira o endereço acessível a partir do contêiner (ver o aviso abaixo). O nome do modelo deve corresponder exatamente ao que é retornado por ollama list, por exemplo qwen3.5:9b.
- 03Adicionar o modelo de chatTipo de modelo: LLM. Insira o tamanho do contexto (por exemplo, 8192 ou mais conforme o modelo) e confirme. O Dify testa a conexão ao salvar.
- 04Adicionar o modelo de embeddingsRepita a operação com nomic-embed-text escolhendo o tipo Text Embedding. Sem ele, você não poderá construir uma base de conhecimento.
- 05Definir os modelos padrãoAinda nas configurações, defina qwen3.5:9b como modelo de sistema padrão e nomic-embed-text como modelo de embeddings padrão.
#Construir um primeiro assistente RAG sem escrever código
O RAG (Retrieval-Augmented Generation) permite que o modelo responda com base em seus documentos, em vez de depender apenas dos conhecimentos adquiridos durante o treinamento. No Dify, isso é feito por meio de uma base de conhecimento (Knowledge), que depois é associada a uma aplicação.
- 01Criar uma base de conhecimentoAba Knowledge → Criar. Importe seus arquivos (PDF, Markdown, TXT, DOCX). O Dify os divide automaticamente em blocos (chunks).
- 02Ajustar a segmentação e a indexaçãoEscolha o modo de indexação 'alta qualidade' que utiliza o seu modelo de embeddings nomic-embed-text. Ajuste o tamanho dos chunks se seus documentos forem muito estruturados (tabelas, código).
- 03Criar a aplicação de chatAba Studio → Criar um app → Chatbot. Dê a ele um nome e uma descrição.
- 04Escrever o prompt de sistemaNo editor, descreva o papel do assistente: "Você responde apenas com base nos documentos fornecidos. Se a informação não estiver presente, diga isso." Isso limita as alucinações.
- 05Vincular a base de conhecimentoNo painel de Contexto do app, adicione a base criada no passo 1. Ative a citação de fontes para que as respostas mostrem os trechos utilizados.
- 06Testar e depois publicarUse o painel de depuração à direita para fazer perguntas. Quando o comportamento for adequado, clique em Publicar para obter uma URL de chat e uma chave de API.
#Fluxos e agentes: até onde o no-code vai
Além de um simples chatbot, o Dify oferece dois modos mais avançados. O modo Workflow apresenta uma área de trabalho visual onde você conecta nós: entrada do usuário, chamada ao LLM, condição (if/else), extração de parâmetros, requisição HTTP, iteração sobre uma lista. Assim, você constrói pipelines determinísticos — por exemplo: receber um e-mail, classificá-lo, extrair as entidades e depois redigir uma resposta padrão.
O modo Agente, por outro lado, deixa o modelo decidir quais ferramentas chamar e em qual ordem, em loop, até chegar a um resultado. É mais poderoso, mas mais frágil: a qualidade depende fortemente da capacidade do modelo de raciocinar e respeitar o formato de chamada das ferramentas. Modelos locais muito pequenos (2-4B) têm dificuldade com isso; opte por um modelo desenvolvido para uso de ferramentas, tipo GLM 4.7 Flash (MoE 30B-A3B, MIT, ~19 GB) ou Qwen 3.8 27B (~18 GB) se sua VRAM permitir.
- O que o no-code faz bem
- Prototipar rapidamente um chatbot RAG, conectar algumas etapas LLM, expor uma API sem precisar escrever backend, iterar sobre prompts em equipe.
- Onde surgem dificuldades na execução local
- Agentes exigentes que usam várias ferramentas precisam de um modelo capaz de usar ferramentas de forma confiável e, portanto, de VRAM. Um Qwen 3.5 9B é suficiente para RAG, mas raramente para um agente complexo.
- Quando passar para o código
- Lógica de negócios refinada, integrações personalizadas, controle total do pipeline de recuperação: uma biblioteca como a LangChain assume o comando onde o canvas visual mostra suas limitações.
#Solução de problemas
- Erro 'Connection refused' ao adicionar o modelo
- O Dify não consegue se conectar ao Ollama. O problema é quase sempre a URL: substitua localhost por host.docker.internal (Docker Desktop) ou pelo IP do gateway do Docker (Linux) e verifique se o Ollama está de fato escutando em 0.0.0.0.
- O modelo não aparece
- O nome informado não corresponde ao listado por ollama list. Copie o nome exato, incluindo a tag (qwen3.5:9b e não qwen3.5).
- Erro durante a indexação dos documentos
- O modelo de embeddings não está configurado ou não foi baixado. Faça ollama pull nomic-embed-text e selecione-o como modelo de embeddings padrão.
- Respostas muito lentas
- Parte do modelo de chat provavelmente está sendo executada na CPU. Mude para uma quantização mais leve (Q4_K_M) ou para um modelo menor e verifique se a GPU está realmente sendo usada no Ollama.
- A porta 80 já está em uso
- Outro serviço está usando a porta. Altere EXPOSE_NGINX_PORT no arquivo .env (por exemplo, 8080) e execute novamente docker compose up -d.
- Respostas fora do assunto apesar do RAG
- Verifique se a base de conhecimento está corretamente vinculada ao aplicativo e se o prompt de sistema obriga o modelo a se basear no contexto. Ajuste também o tamanho dos chunks.
#Para se aprofundar
O valor do Dify depende da robustez do modelo e da infraestrutura que o sustentam. Esses guias consolidam os componentes nos quais ele se apoia.
- Instalar Ollama
- O daemon que serve seu modelo de chat e seus embeddings na porta 11434 — a base de toda a stack Dify local.
- RAG local com ChromaDB e Ollama
- Para entender o que o Dify automatiza nos bastidores e retomar o controle em Python quando o no-code mostra suas limitações.
- n8n + Ollama: automatizar localmente
- Outra abordagem sem código, voltada para automação de tarefas, complementar aos workflows do Dify.
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.