TITAN — El orquestador multimodelo de Theus
TITAN es el modelo/orquestador propio de Theus. Cuando pides el modelo titan, el gateway no hace un proxy simple: TITAN analiza tu petición y decide si la responde con un solo modelo (lo normal) o si la descompone en subtareas repartidas entre varios modelos del catálogo y luego sintetiza una única respuesta final.
Qué es
TITAN vive en el gateway de Theus (theus.pe/v1). Aparece en el catálogo con el id titan (alias heredado: theus-router-auto) y está disponible en todos los planes, incluido el gratuito. Su trabajo es elegir por ti: en lugar de decidir a mano entre los modelos de la suscripción, le das la tarea a TITAN y él asigna el modelo —o los modelos— más adecuados por costo y capacidad.
- Un id, todos los modelos —
titanreparte trabajo entre los modelos del catálogo que tienen ruta a un proveedor operativo. - Sesgo a lo simple — para la gran mayoría de peticiones elige un único modelo y hace proxy directo con streaming real. El modo multi se reserva para tareas que de verdad se benefician de dividirse (p. ej. investigar + implementar + revisar).
- Cerebro configurable — el modelo que «piensa» el plan y la síntesis se configura desde la consola de administración o por entorno; cambiarlo no requiere tocar código ni reiniciar.
- Una sola voz — la respuesta siempre habla como Theus; TITAN nunca revela qué modelo la produjo por debajo.
- Fail-open — si el planificador falla o responde algo inválido, TITAN degrada a modo single con el modelo por defecto:
titansiempre responde.
El flujo: plan → ejecución → verificación → síntesis
prompt del usuario (model: "titan")
│
▼
┌────────────────────────────────────┐
│ 1 · PLAN │ el cerebro TITAN lee la conversación,
│ ¿single o multi? │ el menú de modelos CON su costo
│ ¿qué depende de qué? │ relativo, y decide la estrategia (JSON)
└────────────────────────────────────┘
│ │
│ single │ multi (hasta max_subtasks)
▼ ▼
┌─────────────────┐ ┌────────────────────────────────┐
│ proxy directo │ │ 2 · EJECUCIÓN por olas │
│ al modelo │ │ las subtareas independientes │
│ elegido, con │ │ corren EN PARALELO; las que │
│ streaming real │ │ declaran depends_on reciben │
│ (SSE) │ │ las salidas de sus etapas │
└─────────────────┘ │ previas (multi-proveedor real) │
└────────────────────────────────┘
│
▼
┌────────────────────────────────┐
│ 3 · VERIFICACIÓN │
│ el cerebro audita cada │
│ resultado: lo conserva, lo │
│ descarta o lo re-despacha con │
│ la instrucción corregida │
└────────────────────────────────┘
│
▼
┌────────────────────────────────┐
│ 4 · SÍNTESIS │
│ el cerebro integra SOLO el │
│ material aprobado y entrega │
│ UNA respuesta final coherente │
└────────────────────────────────┘
- Plan. El cerebro recibe la conversación y un menú con los modelos servibles hoy —cada uno con su costo relativo, para que «a igual capacidad, el más barato» sea una decisión informada— y responde un objeto JSON:
{"mode":"single","model":"…"}o{"mode":"multi","subtasks":[{"model":"…","instruction":"…","depends_on":[…]}]}. El planificador está instruido para preferirsinglesalvo que dividir aporte de verdad. Si la petición trae herramientas (function-calling del CLI), el planificador lo sabe y elige el mejor modelo single para uso agéntico: el modo multi nunca rompe el bucle de herramientas. - Ejecución por olas. Las subtareas sin dependencias corren en paralelo; una subtarea con
depends_oncorre después y recibe las salidas de sus etapas previas como contexto (investigar → implementar → revisar). El transporte se resuelve por subtarea: cada modelo va a su proveedor upstream según las rutas del panel (multi-proveedor real). El tope de subtareas por turno esmax_subtasks(1–6, por defecto 3). - Verificación. Antes de sintetizar, el cerebro audita cada resultado contra su instrucción: keep (útil), discard (fuera de tema o refusal — no entra a la síntesis) o redo (salvable — se re-despacha con una instrucción corregida, también en paralelo, hasta
TITAN_MAX_ROUNDSrondas). Si el verificador descarta todo, TITAN cae a un single real: jamás sintetiza sobre nada. - Síntesis. El cerebro funde los resultados aprobados en una única respuesta: integra lo mejor de cada uno, descarta errores y contradicciones, y mantiene el idioma y el formato que pediste.
theus-local-private) y a los modelos de embeddings (theus-embed), que no generan texto.Identidad Theus
La respuesta visible al usuario —tanto en modo single como en la síntesis multi— lleva antepuesta la identidad Theus como primera instrucción de sistema: el asistente se llama Theus, fue creado por Theus, y tiene prohibido revelar, mencionar o insinuar el modelo o proveedor que lo soporta por debajo. Para el usuario existe una sola voz. Los nombres reales de los modelos solo se muestran donde corresponde: en el catálogo.
Cómo usarlo
Desde el CLI
El comando /model (alias /modelo) cambia el modelo de la sesión. Tras iniciar sesión con tu cuenta Theus, el proveedor oficial queda configurado con theus-router-auto (el alias de TITAN) como modelo por defecto, así que TITAN ya está activo sin hacer nada. Para pedirlo explícitamente:
/model titan
Por API
En el gateway compatible OpenAI, basta con pedir "model": "titan":
curl https://theus.pe/v1/chat/completions \
-H "Authorization: Bearer $THEUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "titan",
"messages": [{"role": "user", "content": "Refactoriza este módulo y explica los cambios"}],
"stream": true
}'
stream: true, el modo single transmite SSE en tiempo real desde el proveedor. En modo multi la síntesis se produce completa y se emite como stream SSE al final (un solo bloque). Ver la referencia de la API.El cerebro configurable
El «cerebro» de TITAN —el modelo que planifica y sintetiza— vive tras una interfaz simple: un endpoint compatible OpenAI (base_url + api_key + model). Se configura con esta prioridad, leída por request (un cambio aplica al instante, sin reiniciar el servicio):
- Consola de administración (
titan_config): proveedor del panel + modelo +max_subtasks. Es la vía recomendada; ver panel de administración. - Entorno (
TITAN_*): configuración estática del operador. - Transporte por defecto del gateway: si no hay nada de lo anterior, el cerebro usa el upstream por defecto, de modo que
titansiempre responde.
| Variable | Qué controla |
|---|---|
TITAN_ENABLED | Activa/desactiva el bucle TITAN (por defecto activo). Desactivado, titan se sirve como proxy simple al upstream por defecto. |
TITAN_BASE_URL | Endpoint del cerebro (API compatible OpenAI). |
TITAN_API_KEY | Credencial del cerebro. |
TITAN_MODEL | Modelo que planifica y sintetiza. |
TITAN_MAX_SUBTASKS | Tope de subtareas por turno (1–6, por defecto 3). |
TITAN_VERIFY | Activa/desactiva el verificador (por defecto activo): una llamada barata al cerebro que audita cada resultado antes de la síntesis. |
TITAN_MAX_ROUNDS | Rondas de corrección verificar→re-despachar (0–2, por defecto 1). Con 0, el verificador solo filtra. |
TITAN_PLAN_TIMEOUT_SECS | Presupuesto de tiempo propio del planificador (por defecto 25 s); si vence, fail-open a single. |
TITAN_PLAN_MAX_TOKENS | Presupuesto de tokens del plan (por defecto 900; los planes multi largos necesitan espacio para no truncar el JSON). |
TITAN_SUBTASK_MAX_TOKENS | Tope de salida por subtarea (por defecto 4000): una subtarea verborrágica no ahoga la síntesis. |
GET /api/admin/titan-config, campo decisions). El modelo de respaldo cuando el planificador no puede decidir es configurable (default_worker); si no se fija, TITAN usa el worker de menor costo relativo — nunca el más caro.anthropic: el gateway traduce el plan y la síntesis automáticamente. Y como toda la interfaz es «endpoint + key + modelo», migrar el cerebro a un modelo propio auto-alojado es solo un cambio de configuración.Consumo
Todo el trabajo de TITAN entra en tu cuota como un único uso del modelo titan: los tokens del plan, los de cada subtarea y los de la síntesis se suman al total del turno. En modo single, el costo del plan se añade al del modelo elegido.