Parámetros de conversación y generación de Ollama
Este capítulo profundiza en los detalles del uso conversacional de Ollama: los distintos modos de conversación, los parámetros de generación que controlan la "personalidad" del modelo, la ventana de contexto, el modo de razonamiento y el diálogo multimodal.
Tres formas de conversación: interactiva, de una sola vez y mediante tubería
El mismo comando run tiene diferentes usos y, por tanto, distintos escenarios de aplicación.
Modo interactivo: chat de múltiples turnos
Al ejecutarlo directamente se entra en la conversación; el modelo recuerda el contexto de la sesión actual, ideal para preguntas de seguimiento continuas:
Ejemplo
ollama run qwen3.5
Pregunta y respuesta únicas: una pregunta, una respuesta
Se añade la pregunta directamente como argumento y, tras obtener la respuesta, se sale de inmediato; es adecuado para tareas de una sola vez:
Ejemplo
ollama run qwen3.5 "Presenta el tutorial EJEMPLO en una frase"
Entrada mediante tubería: integración en scripts
Se alimenta al modelo con texto a través de la tubería, lo que facilita combinarlo con otros comandos:
Ejemplo
cat README.md | ollama run qwen3.5 "Resume este contenido"
Además, en la conversación, escribir tres comillas dobles permite envolver texto de varias líneas; el salto de línea con Enter no se considera un envío.
Parámetros de generación: controlar la "personalidad" del modelo
Antes de que el modelo genere cada palabra (token), internamente pasa por el mismo pipeline; los parámetros de generación intervienen en este pipeline en diferentes etapas.
temperature ajusta la distribución de probabilidad para hacerla más pronunciada o más plana; top_k / top_p / min_p se encargan de descartar los candidatos de baja calidad; finalmente, el muestreo aleatorio selecciona el siguiente token.
Los parámetros de uso común se resumen a continuación (los valores predeterminados provienen de la documentación oficial):
| Parámetro | Valor predeterminado | Función | Uso típico |
|---|---|---|---|
| temperature | 0.8 | Cuanto más alto, más creativo; cuanto más bajo, más riguroso | Para escribir código o extraer información, usar 0~0.3; para escritura creativa, alrededor de 1.0 |
| top_k | 40 | Solo muestrea entre los k candidatos con mayor probabilidad | Reducirlo hace que la salida sea más conservadora |
| top_p | 0.9 | Solo muestrea entre los candidatos cuya probabilidad acumulada alcance p | Se usa como alternativa a top_k para el ajuste fino |
| min_p | 0.0 | Establece el límite inferior de los candidatos según la proporción de la probabilidad más alta | 0.05 se usa a menudo como alternativa a top_p |
| repeat_penalty | 1.0 | Penaliza el contenido repetido | 1.1 alivia el discurso repetitivo |
| seed | 0 | Fija la semilla aleatoria para garantizar la reproducibilidad | Fija los resultados al probar y depurar |
| stop | Ninguno | Detiene la generación inmediatamente al encontrar la cadena especificada | Trunca cortesías innecesarias o formatos fijos |
| num_predict | -1 | Número máximo de tokens a generar; -1 significa sin límite | Limita la longitud de salida de las respuestas largas |
En el modo interactivo, se pueden ajustar en cualquier momento con comandos integrados:
Ejemplo
>>> /set parameter seed 42
Para que los parámetros tengan efecto de forma permanente, escríbelos en un Modelfile para crear un modelo "preajustado"; este es el uso central del Modelfile en el próximo capítulo.
Un pequeño experimento para verificar el efecto de seed: con la semilla fija, haz la misma pregunta dos veces y la salida será exactamente la misma; al liberar la semilla, cada respuesta será diferente.
Ventana de contexto num_ctx: la memoria de trabajo del modelo
La ventana de contexto determina cuánto contenido puede "ver" el modelo de una vez, incluidos el mensaje del sistema, el historial de la conversación y tu pregunta; la unidad es el token.
El contenido que no cabe en la ventana se trunca; esta es la causa fundamental de que el modelo "olvide el principio en medio de la conversación".
Ollama selecciona automáticamente la longitud de contexto predeterminada según la memoria de video: con menos de 24GiB, 4K por defecto; con 24~48GiB, 32K por defecto; con más de 48GiB, 256K por defecto. Los modelos en la nube usan por defecto el contexto máximo completo.
Hay tres formas de ajustarlo manualmente:
Ejemplo
/set parameter num_ctx 8192
# Opción 2: establecer el valor global predeterminado al iniciar el servicio
OLLAMA_CONTEXT_LENGTH=8192 ollama serve
# Opción 3: especificarlo bajo demanda en la solicitud API (options.num_ctx, ver el capítulo de API)
Ampliar la ventana tiene como costo un mayor consumo de memoria; puedes confirmar el valor actual con ollama ps del capítulo anterior, revisando la columna CONTEXT.
Al integrar Ollama en agentes, herramientas de codificación o escenarios de búsqueda en línea, la recomendación oficial es establecer el contexto en al menos 64K; de lo contrario, la gran cantidad de contenido devuelta por las herramientas ocupará el espacio de la conversación.
Modo de razonamiento: hacer que el modelo piense antes de responder
Los modelos de razonamiento (como qwen3.5, deepseek-r1) admiten generar primero un proceso de pensamiento y luego dar la respuesta; son adecuados para tareas de matemáticas y lógica.
Ollama tiene el razonamiento activado por defecto y también ofrece controles completos:
Ejemplo
ollama run qwen3.5 --think "¿Cuánto es 17 por 23?"
# Desactivar el razonamiento y dar la respuesta directamente
ollama run qwen3.5 --think=false "Presenta EJEMPLO en una frase"
# Razonar con normalidad, pero sin mostrar el proceso de razonamiento en la terminal
ollama run qwen3.5 --hidethinking "¿Qué es mayor, 9.9 o 9.11?"
En el modo interactivo, con/set thinky/set nothinkse puede cambiar en cualquier momento.
Algunos modelos admiten niveles de intensidad de razonamiento; por ejemplo, gpt-oss solo acepta tres niveles: low, medium y high. Se especifica--think=mediumde esta forma.
Desactivar el razonamiento puede reducir notablemente el tiempo de respuesta, pero la precisión en tareas de razonamiento puede disminuir. En escenarios que buscan velocidad de respuesta, como los asistentes de programación, se suele elegir hidethinking: conserva la calidad del razonamiento sin que la terminal se inunde con el proceso.
Multimodalidad: hacer que el modelo vea imágenes
qwen3.5 admite de forma nativa la entrada de imágenes; en la línea de comandos, basta con poner la ruta de la imagen después de la pregunta:
Ejemplo
ollama run qwen3.5 ./screenshot.png ¿Qué página es esta captura de pantalla?
El uso de la API y el SDK es un poco más complejo (codificación base64); se demuestra específicamente en el capítulo de capacidades visuales. También se puede combinar con la salida estructurada para hacer "conversión de imágenes a datos estructurados".
Salida estructurada: convertir las respuestas en JSON fiable
Al hacer que un programa analice las respuestas del modelo, lo peor es que el formato cambie cada vez. Ollama admite forzar al modelo a generar la salida según un JSON Schema.
Ejemplo
"model": "qwen3.5",
"messages": [{ "role": "user", "content": "Presenta el tutorial de EJEMPLO" }],
"format": {
"type": "object",
"properties": {
"name": { "type": "string" },
"category": { "type": "string" },
"free": { "type": "boolean" }
},
"required": ["name", "category", "free"]
},
"stream": false
}'
El content devuelto es una cadena JSON estrictamente conforme al schema, que se puede deserializar directamente en un objeto de programa.
En Python, usar Pydantic para definir el schema y luego validar el resultado es la combinación más práctica; la práctica completa se encuentra en el capítulo de capacidades del modelo.
Dos detalles prácticos: en la salida estructurada, bajar temperature a 0 da más estabilidad; si solo se escribe format sin explicar los requisitos en el mensaje (prompt), el efecto puede verse reducido; lo mejor es describir también el significado de los campos en el mensaje.
Gestión del contexto en conversaciones de múltiples turnos y errores comunes
En cada turno de conversación en el modo interactivo, Ollama introduce el historial completo en la ventana de contexto y lo envía al modelo; esto trae dos consecuencias que debes conocer.
Primero, dentro de la sesión el modelo tiene memoria; al salir (/bye), la memoria se pone a cero: volver a ejecutar run inicia una sesión totalmente nueva, y no recuerda lo que dijiste la vez anterior.
Segundo, cuando el historial es demasiado largo, el contenido más antiguo sale primero de la ventana, lo que se manifiesta como que el modelo de repente "olvida" las instrucciones del principio.
Estrategias prácticas correspondientes:
| Síntoma | Causa | Solución |
|---|---|---|
| Después de reiniciar la conversación, el modelo lo olvida todo | El contexto de la sesión no se conserva entre procesos | Escribir las convenciones importantes en SYSTEM del Modelfile, o gestionar manualmente el historial de mensajes con la API |
| En la segunda mitad de una conversación larga, empieza a "perder la memoria" | La ventana de contexto se llena y el contenido antiguo se trunca | Aumentar num_ctx, o abrir una nueva sesión por etapas llevando solo las conclusiones clave |
| Después de pegar un documento largo, las respuestas se vuelven más lentas y de peor calidad | El contenido largo ocupa demasiado espacio en el contexto | Pegar solo los fragmentos relevantes; entregar el documento completo a la solución de base de conocimientos RAG |
Para evitar estas limitaciones y lograr memoria persistente, hay que usar la API y mantener uno mismo el array de messages, que es el protagonista del capítulo de la API.
Referencia rápida de los comandos integrados del modo interactivo
Los comandos integrados que se pueden usar directamente en el prompt de diálogo son los siguientes; en cualquier momento puedes escribir /? para ver la lista real de la versión actual.
| Comando | Función |
|---|---|
| /? | Muestra la ayuda y todos los comandos disponibles |
| /set parameter <nombre> <valor> | Ajusta los parámetros de generación, como temperature, num_ctx |
| /set system "<prompt>" | Cambia temporalmente el prompt del sistema |
| /set think / /set nothink | Activa / desactiva el modo de pensamiento |
| /clear | Limpia el contexto de la sesión actual y reinicia |
| /load <modelo> | Cambia a otro modelo sin salir de la terminal |
| /save <nombre> | Guarda la sesión actual (incluyendo el prompt del sistema y los parámetros) como un nuevo modelo |
| /show info / /show parameters | Ver la información del modelo actual / los parámetros vigentes |
| /bye | Salir de la conversación |
Otras extensiones/save merece una mención aparte: convierte directamente una conversación con parámetros ajustados en un nuevo modelo, equivalente a una personalización rápida sin escribir un Modelfile; en el próximo capítulo se comparará con la solución de Modelfile.