# Variante de qwen3.5:4b para el carril VERDE: contexto grande para el arnes.
#
#   ollama create qwen3.5:4b-verde -f verde/qwen3.5-4b-verde.Modelfile
#
# ── Por que hace falta una variante propia ─────────────────────────────────
#
# El naranja usa qwen3.5:4b-jarvis, afinado para lo contrario que esto:
# respuestas habladas cortas y VRAM libre para whisper. Medido con
# `hermes prompt-size` desde $HOME/COFRE/CODERS/JARVIS:
#
#   prompt de sistema de Hermes        26.281 B
#   esquemas de las 19 herramientas    55.978 B
#   ─────────────────────────────────────────────
#   fijo, antes de decir nada          82.259 B  ≈ 20.500 tokens
#
# Contra los num_ctx 4096 del naranja. Cinco veces por encima: no es que rinda
# mal, es que no entra la pregunta.
#
# ── Y el numero NO se elige por lo que cabe, sino por lo que Hermes exige ──
#
# CORREGIDO EL 16 DE AGOSTO. Aqui ponia num_ctx 32768 con las 32 capas en GPU,
# elegido como "lo mas que cabe en la GPU". Dos cosas mal:
#
#   1. 32768 con 32 capas da cudaMalloc failed. Lo que cabia asi era 24576.
#   2. Da igual: Hermes RECHAZA cualquier modelo por debajo de 64.000 tokens
#      (MINIMUM_CONTEXT_LENGTH, agent/model_metadata.py). Es un tope duro y no
#      se ve hasta que abres el TUI.
#
# O sea que el contexto no se negocia: 65536. Lo que se mide entonces es
# cuantas capas caben con ese contexto, y son 16 de 32 (medido el 16 ago:
# 32 y 24 dan OOM; con 16 son 2795 MiB en tarjeta y ~3 GB en RAM).
#
# El precio son las 16 capas que van por CPU, y se paga en el prefill de los
# ~20.500 tokens del prompt fijo. Ver la tabla de tiempos en NOTAS.md.
#
# ── num_predict: el tope que no se ve venir ────────────────────────────────
#
# El naranja hereda num_predict 300 del modelo BASE (no lo pone su Modelfile).
# 300 tokens cortan el JSON de una llamada a herramienta por la mitad, y el
# sintoma seria "el modelo no sabe llamar herramientas", que es falso. Hay que
# sobrescribirlo aqui a mano.
#
# ── temperature ───────────────────────────────────────────────────────────
#
# El base trae 0.4, bien para conversar. Emitir JSON valido no es conversar:
# se baja a 0.2. Menos invencion en los nombres de parametros.
# OJO: ollama NO admite comentarios en la misma linea que un PARAMETER.
# "PARAMETER num_gpu 32  # comentario" falla con:
#   Error: invalid int value [32 # comentario]
# Van encima, cada uno.
FROM qwen3.5:4b

# 16 de 32: con mas, num_ctx 65536 no carga (cudaMalloc failed)
PARAMETER num_gpu 16
# no es lo que cabe, es el suelo que exige Hermes (64.000)
PARAMETER num_ctx 65536
# 300 (el que hereda del base) cortaria una tool call por la mitad
PARAMETER num_predict 4096
# llamar herramientas no es escribir prosa
PARAMETER temperature 0.2
