Ollama Modelfile: criar e personalizar o seu modelo
Ollama não se limita a baixar modelos existentes: com um arquivo de texto de algumas linhas, você cria suas próprias variantes. Um Modelfile é o equivalente a um Dockerfile para LLM — ele fixa um prompt de sistema, parâmetros de amostragem e um template de conversa. Este guia mostra como personalizar Ollama com um Modelfile por meio de três casos práticos: um assistente que responde exclusivamente em francês, um programador em Python, um tradutor sem conversa desnecessária.
#Por que um Modelfile?
Quando você digita ollama run qwen3.5:9b, obtém um modelo genérico. Às vezes, ele responde em inglês a uma pergunta em francês, comenta suas respostas de código com introduções intermináveis e negocia quando você pede uma tradução literal. Em vez de repetir o mesmo prompt de sistema em cada sessão, você o fixa uma única vez em um Modelfile e obtém uma variante reutilizável.
Concretamente, um Modelfile permite três coisas: (1) anexar um prompt de sistema persistente ao modelo, (2) ajustar os parâmetros de geração (temperatura, contexto, tokens de parada), (3) opcionalmente substituir o template de chat. A variante criada pode ser usada como qualquer modelo Ollama: ollama run mon-assistant.
#Pré-requisitos
Você sabe personalizar um modelo com um Modelfile. O kit IA Local o instala em um verdadeiro ChatGPT privado para toda a casa, com Ollama e Open WebUI (cap. 6), e ajuda você a escolher o modelo-base adequado para a sua máquina (cap. 3).
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
- Ollama instalado
- Versão 0.3+ recomendada. Verifique com o ollama --version. O daemon deve estar rodando em http://localhost:11434.
- Um modelo base já baixado
- Por exemplo, ollama pull qwen3.5:9b ou ollama pull qwen3-coder:30b. O Modelfile herda desse modelo.
- Um editor de texto
- VSCode, Notepad++, vim — qualquer um. O arquivo não precisa ter uma extensão específica e, por convenção, costuma ser chamado de Modelfile.
- Aproximadamente 5 minutos
- O tempo necessário para criar o arquivo e executar ollama create. Nenhum download adicional: reutilizamos um modelo já presente.
#1. Sintaxe do Modelfile
Um Modelfile é um arquivo de texto com instruções em maiúsculas, uma por bloco. A ordem não importa, mas a convenção coloca FROM no início.
Instruções principais:
- FROM
- Modelo base. Obrigatório. Aceita um nome Ollama (qwen3.5:9b, qwen3.8:27b) ou um caminho local para um GGUF.
- SYSTEM
- O prompt de sistema que será injetado em cada conversa. Use aspas triplas para textos com várias linhas.
- PARAMETER
- Configurações de amostragem e contexto. Uma instrução por parâmetro. Os mais úteis: temperature, top_p, top_k, num_ctx, repeat_penalty, num_predict, stop.
- TEMPLATE
- Formato completo do prompt (raro). Alterar apenas se você souber o que está fazendo — cada família de modelos tem seu template.
- MESSAGE
- Exemplos few-shot. Prefixados por MESSAGE user ou MESSAGE assistant. Úteis para estabelecer um estilo.
- ADAPTER
- Caminho para um GGUF LoRA a ser aplicado sobre o FROM. Para usuários avançados.
- LICENSE
- Texto livre, para rastreabilidade. Não afeta a execução.
#2. Criar seu primeiro modelo
O workflow é sempre o mesmo: escrevemos um Modelfile, executamos ollama create e testamos com ollama run.
- 01Criar o arquivoEm um diretório de trabalho, crie um arquivo chamado Modelfile (sem extensão). Coloque nele a definição da sua variante.
- 02Iniciar a criaçãoDo mesmo diretório: ollama create mon-modele -f ./Modelfile. O Ollama valida a sintaxe, herda os pesos do modelo FROM e registra uma nova entrada. É instantâneo, não baixa nada novamente.
- 03Verificarollama list mostra seu novo modelo ao lado dos outros. O tamanho exibido é idêntico ao do modelo base — isso é uma referência, não uma cópia.
- 04Testarollama run mon-modele. O prompt de sistema e os parâmetros já foram aplicados. Você também pode apontar uma interface (Open WebUI, LM Studio) para essa variante pela API.
#3. Exemplo: assistente conciso em francês
Objetivo: um assistente que responda sempre em francês, sem preâmbulos do tipo "Bien sûr, voici…", sem expressões de desculpa e com respostas de extensão ajustada.
Criação e teste:
O repeat_penalty em 1.15 (em vez do valor padrão de 1.1) interrompe as repetições dos modelos. O num_ctx em 8192 permite colar documentos um pouco longos sem estourar o contexto padrão de 2048.
#4. Exemplo: programador Python silencioso
Objetivo: um assistente de programação que retorna código Python pronto para colar, com o mínimo de texto ao redor. Ideal para fluxos de trabalho em que se deseja enviar a saída por um pipe para um editor ou um script.
Algumas escolhas técnicas que se destacam:
- FROM qwen3-coder:30b
- Modelo especializado em código de 2026 (MoE 30B-A3B, apenas 3B de parâmetros ativos, 256k de contexto, ~19 GB em Q4). Em uma placa de 24 GB (RTX 4090) ou em um Mac com 32 GB, ele roda a 50-80 tokens/s graças aos 3B ativos. Se você tiver apenas 16 GB de VRAM, substitua por gpt-oss:20b (14 GB) ou devstral:24b.
- temperature 0.2
- Baixa para código. Com 0.7 (padrão), o modelo improvisa nomes de variáveis e às vezes inventa APIs. Para código, queremos determinismo.
- num_ctx 16384
- Janela ampliada para analisar arquivos inteiros. Cuidado: multiplica a VRAM consumida pelo contexto.
- stop
- O modelo para após o primeiro bloco de código. Isso evita explicações após o código que poluem a saída.
#5. Exemplo: tradutor estrito EN→FR
Objetivo: um tradutor que retorne EXCLUSIVAMENTE a tradução, sem aspas, sem "Tradução:", sem variação estilística. Caso de uso típico: integração em um pipeline n8n ou em um script bash em que a saída será consumida em formato bruto.
A adição de MESSAGE para estabelecer o formato com few-shot torna o comportamento ainda mais previsível:
Uso em pipeline:
#6. Gerenciar seus modelos personalizados
Ao longo do tempo, você vai acumular várias variantes. Algumas comandos úteis para manter o controle:
#7. Qual modelo base escolher?
Todo Modelfile começa com FROM: é a escolha do modelo base que determina 90% do resultado final. Um prompt de sistema perfeito nunca compensará uma base inadequada para seu uso ou grande demais para sua VRAM.
- Assistente geral
- Um modelo recente de 8 a 14B (família Qwen ou Gemma) em Q4: rápido nas respostas, bom em francês e com margem para o contexto.
- Código
- Um modelo especializado em código — os modelos MoE do tipo Qwen3-Coder 30B-A3B são muito rápidos a partir de 20 GB de memória; abaixo disso, um modelo de código de 7 a 9B continua relevante.
- Francês formal / redação
- Os modelos Mistral (Nemo, Magistral) mantêm a vantagem na língua francesa quando comparados a modelos do mesmo tamanho.
- Configuração modesta (8 GB de VRAM)
- Fique com modelos de 4 a 9B em Q4: um modelo que precisa ser parcialmente carregado na RAM compromete muito a capacidade de resposta, independentemente do Modelfile.
Para comparar as bases por VRAM, licença e uso, o catálogo QuelLLM filtra os modelos compatíveis com sua máquina — cada ficha fornece o comando ollama run exacte para incluir no seu FROM.
#Solução de problemas
- O modelo ignora o system prompt
- Verifique se você está realmente executando sua variante (ollama run mon-modele) e não o modelo base. Confirme com ollama show --system mon-modele.
- Respostas truncadas
- Aumente num_predict (padrão 128 em algumas configurações) para 2048 ou mais. Ou adicione PARAMETER num_predict -1 para desativar a limitação.
- O modelo não segue uma regra estrita
- Reformule a regra em caixa alta, adicione "ABSOLUTAMENTE" ou "JAMAIS" e inclua um exemplo via MESSAGE. Modelos pequenos (menos de ~10B) têm dificuldade com negações isoladas.
- Erro "Error: invalid model reference"
- O modelo FROM não está instalado localmente. Execute ollama pull <modele> antes do ollama create.
- VRAM saturada após criação
- O num_ctx elevado multiplica o consumo. Se você passar de 2048 para 16384, considere +1 a +3 GB de VRAM de acordo com o tamanho do modelo. Reduza para 8192 se ficar apertado.
#Para se aprofundar
O Modelfile é a base para especializar Ollama sem tocar nos pesos. Três direções naturais a explorar em seguida:
- Dominar os prompts de sistema com mais profundidade
- O guia sobre system prompts detalha como estruturar papéis, restrições e exemplos para comportamentos realmente confiáveis — útil a partir do momento em que você ultrapassar 5 linhas de SYSTEM.
- Ajustar temperatura, top-p e top-k
- Antes de mexer no modelo, saber exatamente o que cada parâmetro de amostragem altera evita muitas idas e vindas. O guia dedicado abrange todos os ajustes úteis.
- Disponibilizar suas variantes via Open WebUI
- Após criar seus modelos personalizados, o Open WebUI os lista automaticamente. Você pode alternar entre assistant-fr, coder-py e translator-en-fr com apenas um clique a partir da interface.
Como listar os modelos Ollama instalados?+
Onde os modelos Ollama são armazenados?+
Como remover um modelo para liberar espaço?+
Um modelo personalizado ocupa o dobro de espaço no disco?+
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.