Ollama Modelfile: crear y personalizar tu modelo
Ollama no se limita a descargar modelos existentes: con un archivo de texto de unas pocas líneas, puedes crear tus propias variantes. Un Modelfile es el equivalente de un Dockerfile para LLM: deja definidos un prompt de sistema, parámetros de muestreo y una plantilla de conversación. Esta guía muestra cómo personalizar Ollama con un Modelfile mediante tres casos concretos: un asistente que responde estrictamente en francés, un programador de Python y un traductor sin comentarios adicionales.
#¿Por qué se necesita un Modelfile?
Cuando escribes ollama run qwen3.5:9b, obtienes un modelo genérico. A veces responde en inglés a una pregunta en francés, comenta sus respuestas de código con introducciones interminables y negocia cuando pides una traducción literal. En lugar de repetir el mismo prompt de sistema en cada sesión, lo dejas fijado una sola vez en un Modelfile y obtienes una variante reutilizable.
En concreto, un Modelfile permite tres cosas: (1) asociar un prompt de sistema persistente al modelo, (2) ajustar los parámetros de generación (temperatura, contexto, tokens de parada), (3) opcionalmente reemplazar el template de chat. La variante creada se utiliza como cualquier modelo Ollama: ollama run mon-assistant.
#Prerrequisitos
Sabes personalizar un modelo con un Modelfile. El kit IA Local lo instala en un verdadero ChatGPT privado para toda la casa, con Ollama y Open WebUI (cap. 6), y te ayuda a elegir el modelo base adecuado para tu máquina (cap. 3).
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
- Ollama instalado
- Versión 0.3+ recomendada. Comprueba la versión con ollama --version. El daemon debe estar en ejecución en http://localhost:11434.
- Un modelo base ya descargado
- Por ejemplo, ollama pull qwen3.5:9b o ollama pull qwen3-coder:30b. El Modelfile hereda de este modelo.
- Un editor de texto
- VSCode, Notepad++, vim: cualquiera. El archivo no requiere una extensión concreta; por convención, suele llamarse Modelfile.
- Alrededor de 5 minutos
- El tiempo necesario para crear el archivo y ejecutar ollama create. No hay descargas adicionales: se reutiliza un modelo que ya está disponible.
#1. Sintaxis del Modelfile
Un Modelfile es un archivo de texto con instrucciones en mayúsculas, una por bloque. El orden no tiene importancia, pero la convención coloca FROM al principio.
Instrucciones principales:
- FROM
- Modelo base. Obligatorio. Acepta un nombre Ollama (qwen3.5:9b, qwen3.8:27b) o una ruta local hacia un GGUF.
- SYSTEM
- El prompt de sistema que se inyectará en cada conversación. Usa comillas triples para textos multilínea.
- PARAMETER
- Ajustes de muestreo y contexto. Una instrucción por parámetro. Los más útiles: temperature, top_p, top_k, num_ctx, repeat_penalty, num_predict, stop.
- TEMPLATE
- Formato de prompt completo (raro). Solo modificarlo si sabes lo que haces: cada familia de modelos tiene su plantilla.
- MESSAGE
- Ejemplos few-shot. Precedidos por MESSAGE user o MESSAGE assistant. Útiles para fijar un estilo.
- ADAPTER
- Ruta hacia un GGUF LoRA para aplicar sobre FROM. Para usuarios avanzados.
- LICENSE
- Texto libre, para trazabilidad. No afecta la ejecución.
#2. Crear tu primer modelo
El flujo de trabajo es siempre el mismo: escribimos un Modelfile, lanzamos ollama create y probamos con ollama run.
- 01Crear el archivoEn una carpeta de trabajo, crea un archivo llamado Modelfile (sin extensión). Escribe en él la definición de tu variante.
- 02Empezar a crearDesde el mismo directorio: ollama create mon-modele -f ./Modelfile. Ollama valida la sintaxis, hereda los pesos del modelo FROM y registra una nueva entrada. Es instantáneo, no vuelve a descargar nada.
- 03Verificarollama list montre votre nouveau modèle aux côtés des autres. La taille affichée est identique à celle du modèle de base — c'est une référence, pas une copie.
- 04Probarollama run mon-modele. Le system prompt et les paramètres sont déjà appliqués. Vous pouvez aussi pointer une interface (Open WebUI, LM Studio) sur cette variante via l'API.
#3. Ejemplo: asistente conciso en francés
Objetivo: un asistente que responda siempre en francés, sin prólogo del tipo "Bien sûr, voici…", sin fórmulas de disculpa, con una longitud ajustada.
Creación y prueba:
Configurar repeat_penalty en 1.15 (en lugar de 1.1, el valor predeterminado) frena las repeticiones de los modelos. Configurar num_ctx en 8192 permite pegar documentos algo largos sin desbordar el contexto predeterminado de 2048.
#4. Ejemplo: codificar Python en silencio
Objetivo: un compañero de código que devuelve código Python listo para pegar, con un mínimo de texto adicional. Ideal para flujos de trabajo en los que se quiere enviar la salida a un editor o a un script mediante una tubería.
Algunas decisiones técnicas destacadas:
- FROM qwen3-coder:30b
- Modelo especializado en código de 2026 (MoE 30B-A3B, solo 3B de parámetros activos, 256k de contexto, ~19 GB en Q4). En una tarjeta de 24 GB (RTX 4090) o en un Mac de 32 GB, funciona a 50-80 tokens/s gracias a sus 3B activos. Si solo tienes 16 GB de VRAM, sustitúyelo por gpt-oss:20b (14 GB) o devstral:24b.
- temperature 0.2
- Baja para el código. Con 0.7 (valor predeterminado), el modelo improvisa nombres de variables y a veces inventa API. Para el código, buscamos determinismo.
- num_ctx 16384
- Ventana ampliada para analizar archivos enteros. Cuidado: multiplica la VRAM consumida por el contexto.
- stop
- El modelo se detiene después del primer bloque de código. Esto evita las explicaciones posteriores al código que contaminan la salida.
#5. Ejemplo: traductor estricto EN→FR
Objetivo: un traductor que devuelva ÚNICAMENTE la traducción, sin comillas, sin "Traducción:", sin variación estilística. Caso de uso típico: integración en un pipeline n8n o un script bash donde la salida se consuma directamente.
Añadir MESSAGE para fijar el formato mediante unos pocos ejemplos (few-shot) hace que el comportamiento sea aún más predecible:
Uso en pipeline:
#6. Gestionar tus modelos personalizados
Con el tiempo, irás acumulando varias variantes. Algunas órdenes útiles para mantener el control:
#7. ¿Qué modelo base elegir?
Todo Modelfile comienza con FROM: la elección del modelo base determina el 90 % del resultado final. Un prompt de sistema perfecto nunca compensará una base inadecuada para tu uso o demasiado grande para tu VRAM.
- Asistente generalista
- Un modelo reciente de 8 a 14B (familia Qwen o Gemma) en Q4: responde con rapidez, funciona bien en francés y deja margen para el contexto.
- Código
- Un modelo especializado en código — los modelos MoE tipo Qwen3-Coder 30B-A3B son muy rápidos a partir de 20 GB de memoria; por debajo, un modelo de código de 7 a 9B sigue siendo relevante.
- Francés formal / redacción
- Los modelos Mistral (Nemo, Magistral) mantienen la ventaja en el idioma francés a igual tamaño.
- Configuración modesta (8 GB de VRAM)
- Quédate con modelos de 4 a 9B en Q4: un modelo que no cabe en la VRAM y se carga parcialmente en la RAM arruina la capacidad de respuesta, independientemente del Modelfile.
Para comparar las bases por VRAM, licencia y uso, el catálogo QuelLLM filtra los modelos compatibles con tu máquina — cada ficha da la orden ollama run exacte para poner en tu FROM.
#Solución de problemas
- El modelo ignora el prompt del sistema
- Asegúrate de que estás ejecutando tu variante (ollama run mon-modele) y no el modelo base. Confírmalo con ollama show --system mon-modele.
- Respuestas truncadas
- Aumenta num_predict (predeterminado 128 en algunas configuraciones) hasta 2048 o más. O añade PARAMETER num_predict -1 para desactivar el límite.
- El modelo no cumple una regla estricta
- Reformula la regla en mayúsculas, añade "ABSOLUTAMENTE" o "NUNCA" y añade un ejemplo mediante MESSAGE. Los modelos pequeños (menos de ~10B) tienen dificultades con las negaciones aisladas.
- Error "Error: invalid model reference"
- El modelo FROM no está instalado localmente. Ejecuta ollama pull <modele> antes de ollama create.
- VRAM saturada tras la creación
- Un num_ctx elevado multiplica el consumo. Si pasas de 2048 a 16384, calcula entre 1 y 3 GB adicionales de VRAM según el tamaño del modelo. Vuelve a 8192 si queda poco margen.
#Para ir más allá
El Modelfile es la base para especializar Ollama sin tocar los pesos. Tres vías que puedes explorar a continuación:
- Dominar los prompts de sistema con mayor profundidad
- La guía sobre los prompts de sistema detalla cómo estructurar roles, restricciones y ejemplos para lograr comportamientos realmente fiables; resulta útil en cuanto superas las 5 líneas de SYSTEM.
- Ajustar temperatura, top-p y top-k
- Antes de tocar el modelo, saber con precisión qué cambia cada parámetro de muestreo evita muchas idas y venidas. La guía específica cubre todos los ajustes útiles.
- Exponer tus variantes mediante Open WebUI
- Una vez que hayas creado tus modelos personalizados, Open WebUI los lista automáticamente. Puedes cambiar entre assistant-fr, coder-py y translator-en-fr con un clic desde la interfaz.
¿Cómo listar los modelos Ollama instalados?+
¿Dónde se almacenan los modelos de Ollama?+
¿Cómo eliminar un modelo para liberar espacio?+
¿Un modelo personalizado ocupa el doble de espacio en disco?+
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.