Modelos de decisión

Un modelo de decisión es un modelo pequeño que responde preguntas de sí o no para Marinara, como "Does the latest message move the scene to a new place?". Lo usan los lorebooks (libros de trasfondo), los agentes personalizados, los prompts (las instrucciones enviadas a la IA) y los chats grupales. Es opcional. Sin uno, los chats siguen funcionando y cada función usa el respaldo descrito en Dónde lo usa Marinara.

Sus respuestas controlan lo que hace Marinara y nunca se publican en el chat. Puntúa una declaración de 0 a 1. Marinara compara ese número con un umbral y trata el resultado como sí o no. También puede elegir una respuesta de una lista corta, como "angry", "sad" o "none of these".

Nuestro consejo: déjalo en None (ninguno) si tienes dudas. Si quieres decisiones, usa el modelo integrado que quizá ya tengas o un modelo de chat en un servidor que ya ejecutas. Ninguna de las dos opciones cuesta nada adicional.

Elegir un modelo de decisión

Antes de empezar, consulta Cuál elegir.

  1. Haz clic en Connections (Conexiones) en la barra superior y abre el cuadro Jobs (tareas).
  2. En Behind the scenes (entre bastidores), haz clic en la fila Decision (decisión). Se abre una lista.
  3. Elige un modelo. La lista tiene tres grupos:
  1. Para probarlo, haz clic en el engranaje Decision settings (ajustes de decisión) de la fila y luego en Test (probar). Ese botón aparece para las entradas del modelo integrado. Para una cuenta de TypeSafe u OpenRouter, abre Edit model (editar modelo) en su modelo y haz clic en Test provider (probar proveedor). Para una cuenta Own decision server (servidor de decisiones propio), usa Test en el menú ⋯ de la cuenta.

Una prueba correcta muestra la probabilidad de sí y cuánto tardó la respuesta. Para un modelo en tu computadora también indica si había log-probabilidades disponibles y si el modelo responde directamente. Las log-probabilidades son los números de confianza del modelo para cada palabra que podría escribir. La prueba envía una muestra fija, no tu chat.

Si no funcionó, el mensaje explica por qué. Causas habituales: la clave fue rechazada, el servicio está limitando las solicitudes, el modelo integrado no está en ejecución o la respuesta superó el límite de tiempo. Consulta Solución de problemas.

Las entradas que no pueden responder ahora permanecen en la lista, en gris y con el motivo. Elegir None desactiva las decisiones sin borrar ninguna pregunta de activación ni declaración de decisión.

Cuál elegir

Si ya ejecutas un modelo local, pruébalo primero y prueba turnos de tus propios chats. La redacción importa mucho. Consulta Redactar declaraciones.

Jev y Open-Jev son modelos distintos. Jev es el modelo alojado de TypeSafe, disponible directamente o mediante OpenRouter. Open-Jev es un modelo publicado por separado y basado en Qwen, que Marinara puede ejecutar localmente. Las pruebas de Open-Jev no miden Jev alojado.

En Android (Termux), el Built-in decision model (modelo de decisión integrado) no puede ejecutarse, y un modelo local pequeño en el procesador de un teléfono puede ser demasiado lento. Una cuenta alojada es la opción práctica, por ejemplo Jev mediante OpenRouter. Consulta Configurar una conexión Decision.

Escribe los presets (ajustes guardados), las tarjetas y los agentes para "un modelo de decisión", nunca como "requiere Jev". Usan la misma sintaxis de declaraciones con cualquier modelo, pero los modelos pueden dar respuestas distintas. Cuando importas contenido que usa decisiones, incluidos agentes personalizados e instalaciones de Agent Organizer, Marinara muestra un aviso con un enlace a esta guía. Restaurar un ZIP de perfil completo no lo muestra.

Usar el modelo integrado

Si tienes descargado el modelo integrado, puedes usarlo para decisiones sin cuenta y sin costo. Consulta Configuración del modelo integrado.

  1. Haz clic en la fila Decision, en Behind the scenes, dentro del cuadro Jobs.
  2. Elige Built-in model (o Built-in model (utility) si tienes uno).
  3. Haz clic en el engranaje Decision settings y luego en Test.

Marinara hace una sola pregunta de sí o no al modelo, le permite escribir un token (un fragmento de texto) y lee la respuesta a partir de las probabilidades de ese token. No se escribe ninguna respuesta, así que la solicitud es corta. Una elección entre varias respuestas se formula como una pregunta de sí o no por respuesta.

El ajuste Thinking (razonamiento) controla qué pasa cuando un modelo no puede responder con una palabra. Algunos modelos siempre razonan primero.

ThinkingQué hace
Auto (try one word, allow thinking if the model cannot) (automático: intentar una palabra y permitir el razonamiento si el modelo no puede)Predeterminado. Tras dos respuestas fallidas de una palabra seguidas, se permite que el modelo razone primero, y Marinara te lo indica.
Off (always answer in one word) (desactivado: responder siempre con una palabra)Un modelo que no puede responder con una palabra no da respuesta.
Allowed (let the model think first) (permitido: dejar que el modelo razone primero)Nunca pide al modelo que omita el razonamiento.

Un modelo que razona primero tarda segundos, así que de forma predeterminada solo responde para comprobaciones que se ejecutan después de que la respuesta aparece en pantalla, como los agentes de posprocesamiento. Para que también controle los agentes que se ejecutan antes de la respuesta, activa Also gate agents that run before the reply (evaluar también los agentes que se ejecutan antes de la respuesta). Entonces cada respuesta lo espera.

Las probabilidades de sí o no de un modelo de chat general sirven para un umbral, pero no se entrenaron para estar calibradas como las de un modelo creado específicamente para decisiones. Un entorno de ejecución que no devuelve log-probabilidades responde con un 1 o un 0 fijo. Ajusta los umbrales con tus propios chats.

En un servidor que ya ejecutas

Si tu modelo de chat se ejecuta en Ollama, LM Studio, llama.cpp u otro servidor compatible con OpenAI, puede responder decisiones sin que Marinara cargue una segunda copia.

  1. Haz clic en ⋯ en ese modelo del panel Connections y elige Use this model for decisions (usar este modelo para decisiones). La ventana Add account (añadir cuenta) se abre en el paso de decisiones con la misma dirección, el mismo modelo y la misma clave.
  2. Elige el modelo y haz clic en Test decision (probar decisión). Una prueba correcta indica si el servidor devolvió log-probabilidades y si el modelo tuvo que razonar primero. Haz clic en Done (listo).
  3. Haz clic en la fila Decision, en Behind the scenes, y elige el nuevo modelo.

También puedes crearla tú. Usa una cuenta Decision con la fuente OpenAI-compatible chat model (Ollama, LM Studio, llama.cpp) (modelo de chat compatible con OpenAI: Ollama, LM Studio, llama.cpp), la misma dirección que tu cuenta de chat (por ejemplo http://localhost:11434/v1 para Ollama) y el nombre de modelo que usa el servidor.

Se consulta igual que el modelo integrado: una palabra de sí o no por declaración. Las declaraciones se envían de una en una, porque Marinara no puede saber cuántas solicitudes procesa tu servidor a la vez. Thinking siempre es Auto para una cuenta. Un servidor en otra computadora necesita PROVIDER_LOCAL_URLS_ENABLED. Consulta Conectar un modelo local o autoalojado.

Configurar una conexión Decision

Una cuenta Decision alojada envía al servicio los mensajes recientes seleccionados y las declaraciones, y puede costar dinero. El orden de respuesta Smart también envía una lista de personajes.

  1. Haz clic en Connections en la barra superior y luego en Add (añadir).
  2. En Decisions (decisiones), haz clic en TypeSafe u Own decision server. Para OpenRouter, haz clic en OpenRouter en Chat, conéctalo y luego usa Use this key for decisions (usar esta clave para decisiones) en el menú ⋯ del modelo.
  3. Introduce la API key (clave de API) o, para Own decision server, la Server address (dirección del servidor). Haz clic en Connect (conectar). La ventana se cierra y el panel muestra la nueva cuenta.
  4. Haz clic en la fila Decision, en Behind the scenes, y elige el nuevo modelo.
  5. Para probarlo, haz clic en el modelo en el panel para abrir Edit model y luego haz clic en Test provider en la tarjeta Provider tests (pruebas del proveedor). Un modelo de Own decision server no tiene ahí el botón Test provider. En su lugar, abre el menú ⋯ de la cuenta en el panel y haz clic en Test.

Un Test provider correcto muestra la probabilidad, cuánto tardó la respuesta y el límite de tiempo de la cuenta. El Test de la cuenta en el menú ⋯ solo indica si funcionó y cuánto tardó. La prueba espera al menos 10 segundos, o 5 segundos más que un límite mayor. Si la respuesta tardó más que el límite, el resultado lo indica: en los chats, esa respuesta contaría como ausencia de respuesta.

Si no funcionó, consulta Solución de problemas.

El editor de Decision (Edit model en un modelo de decisión) tiene estos campos:

CampoQué hace
Decision source (fuente de decisión)TypeSafe, OpenRouter, Custom System One endpoint (endpoint System One personalizado) u OpenAI-compatible chat model (Ollama, LM Studio, llama.cpp). Queda fija al crear el modelo.
API key source (origen de la clave de API)Enter a separate key (optional for local servers) (introducir una clave aparte: opcional para servidores locales) o Use key from … (usar la clave de …) otra cuenta. Las claves vinculadas siguen los cambios posteriores de la clave. Un modelo System One personalizado o compatible con OpenAI puede tomar prestada la clave de una cuenta de chat personalizada solo cuando ambas direcciones tienen el mismo esquema, host y puerto.
Recent-message token budget (presupuesto de tokens de mensajes recientes)Cuántos tokens estimados del chat se envían. De 1 a 30.000. 30.000 de forma predeterminada para TypeSafe y OpenRouter, y 3.500 para servidores personalizados. Marinara descarta primero los mensajes más antiguos y después recorta la parte más antigua del mensaje más reciente. Una solicitud rechazada o que supera el presupuesto no da respuesta.
Time limit (seconds) (límite de tiempo en segundos)Cuánto se espera cada declaración durante los chats. De 0,5 a 30. 1,5 de forma predeterminada, o 4 para un modelo de chat compatible con OpenAI. Consulta Límites de tiempo.

TypeSafe envía las solicitudes a https://api.typesafe.ai. Puedes reemplazar su Base URL (URL base) por otro servidor que ejecute la API de TypeSafe, sin /v1/systemone. Sigue necesitando tu clave de TypeSafe, que se envía a ese servidor. Custom System One endpoint acepta un servidor System One que ejecutes tú, como Open-Jev o Strands decider. Introduce su dirección sin /v1/systemone. Un servidor de modelos de chat como Ollama no habla System One. Usa OpenAI-compatible chat model para él.

Algunos servicios alojados a veces tardan más de 1,5 segundos, lo que hace que las decisiones parezcan fallar al azar. Prueba varias veces y fija el límite por encima de la respuesta más lenta. Las declaraciones que se preguntan antes de la respuesta, como las decisiones de un preset o una pregunta de activación de un agente que se ejecuta antes de la respuesta, pueden retrasarla hasta ese tiempo cada una.

Al borrar una cuenta cuya clave se usa para decisiones se muestra una advertencia. Después hay que volver a vincular la cuenta Decision, y hasta entonces las decisiones no dan respuesta. Los archivos de conexión importados nunca contienen API keys ni vínculos a cuentas prestadas, así que restáuralos a mano.

Dónde lo usa Marinara

Una pregunta de activación decide si un agente se ejecuta. Una declaración de decisión dentro de su prompt decide qué se le dice a ese agente al ejecutarse. Usa {{#if decision:"..."}} para condiciones de sí o no y {{#if decision_choice:"..." == "..."}} para elegir entre respuestas.

Qué ve el modelo

Para las preguntas de activación y las declaraciones de prompts y lorebooks, el modelo recibe la declaración y los mensajes recientes tal como se guardaron en el chat. No recibe tu preset, tu tarjeta de personaje, tu persona, las entradas de lorebook (tampoco las Constant), los resúmenes ni la salida de agentes. También se omite el texto colocado entre mensajes, como una entrada configurada en @ Depth (a una profundidad). Una declaración que dependa de uno de esos datos debe incluir el dato mismo.

El orden de respuesta Smart también envía una lista de personajes: el nombre, el estado, la actividad y la locuacidad de cada candidato cuando se conocen, además de hasta 300 caracteres de su personalidad o, si está vacía, de su descripción.

Automatizar personajes activos también envía una lista de personajes: el nombre de cada personaje y hasta 300 caracteres de su descripción o, si está vacía, de su personalidad, recortados a 100 caracteres o a solo los nombres cuando un reparto grande no cabe, además de los nombres que el Character Tracker vio por última vez. Si incluso solo con los nombres queda muy poco espacio para los mensajes, no se le pregunta al modelo y el Character Tracker lo sustituye. Las respuestas de un grupo Merged se etiquetan como "the narrator", porque una sola respuesta da voz a todos.

Un servicio de decisión alojado recibe estas listas además de los mensajes.

Advanced Memory usa su propio modelo de decisión por chat y no la regla de los últimos 5. Las comprobaciones de escena leen la ventana pertinente del historial. La recuperación envía texto reciente de la conversación y hasta 24 resúmenes archivados preseleccionados —más si Maximum recalled scenes (máximo de escenas recuperadas) es mayor—, y luego mensajes originales de las escenas que eligió el modelo, tras comprobar el acceso de los personajes. Los servicios alojados reciben estos textos, a veces en varios lotes. Cada pasada de recuperación recibe normalmente entre 10 y 25 segundos, según la velocidad del modelo. Las dos pasadas comparten 40 segundos por respuesta, así que una pasada puede recibir menos de 10 segundos. Las memorias sin respuesta a tiempo recurren a la recuperación habitual. Consulta Modelo de decisión opcional.

Umbrales

Las probabilidades no son comparables entre modelos. El mismo ejemplo puede puntuar 0,99 en uno y 0,2 en otro. El umbral predeterminado de sí o no depende del modelo:

Run when probability is at least (ejecutar cuando la probabilidad sea al menos) de un agente reemplaza este valor. El editor ofrece restaurar la recomendación del modelo cuando el valor guardado difiere. Compruébalo siempre que cambies de modelo. Las declaraciones en prompts y los campos Decision de lorebooks usan el valor predeterminado del modelo, y el umbral de un agente no cambia el suyo.

Un Open-Jev autoalojado detrás de una cuenta Custom System One sigue usando 0,5, porque Marinara no puede calibrar endpoints personalizados arbitrarios. Sus resultados pueden diferir de los del Open-Jev integrado, incluida la interpretación de un resultado positivo inferior a 0,5 como no.

Límites de tiempo

Una decisión que no llega a tiempo no da respuesta, y la generación continúa con el respaldo de la función (consulta Dónde lo usa Marinara). Cada límite es por declaración. Una solicitud con varias declaraciones recibe el límite para cada una, y cada respuesta Choice cuenta como una declaración. Un modelo local solo procesa unas pocas solicitudes a la vez, así que las declaraciones esperan su turno, y el tiempo de una declaración empieza cuando el modelo comienza con ella.

Las solicitudes de decisión se detienen cuando cancelas una generación.

Otros ajustes

Están en el engranaje Decision settings:

Prevé respuestas incorrectas

Cualquier modelo puede responder incorrectamente, y las respuestas "sí" correctas pueden quedar cerca del umbral.

Solución de problemas

Para ver las puntuaciones y salidas de las decisiones durante la generación, activa Debug Mode o establece el nivel de registro en debug. Consulta Niveles de registro. Para probar tus propias declaraciones sin generar una respuesta, abre Peek Prompt → Decision diagnostics → Test decisions (Peek Prompt → diagnóstico de decisiones → probar decisiones). Las pruebas explícitas llaman al modelo seleccionado y pueden costar dinero en un servicio alojado. Consulta Probar declaraciones de decisión.

Dejar que Marinara instale un modelo de decisión

El Built-in decision model es un modelo experimental, creado específicamente para decisiones, que Marinara descarga y ejecuta como su propio proceso local, junto a tu modelo de chat. Su uso de memoria se suma al de tu modelo de chat. Si ya tienes un modelo local, prueba primero sus decisiones.

Los modelos Open-Jev necesitan Linux x86-64, una GPU NVIDIA con capacidad de cómputo 7.5 o posterior (Turing, la serie RTX 20 o posterior) y el controlador 580 o posterior. Linux ARM y las tarjetas más antiguas no son compatibles. Donde un modelo no puede ejecutarse, la opción permanece visible, indica el motivo y ofrece Set up a Decision provider instead (configurar un proveedor de decisiones en su lugar).

ModeloDescarga del modeloDisco incluido el entorno de ejecuciónMemoria de GPU
Open-Jev 2BAproximadamente 4,6 GBAproximadamente 10 GBAproximadamente 4,8 GB (4,5 GiB)
Open-Jev 9BAproximadamente 19,4 GBAproximadamente 25,3 GBAproximadamente 23,6 GB (22 GiB)

Son las estimaciones del catálogo. El modelo 9B deja poco margen en una GPU de 24 GB. Comprueba el dictamen del instalador para tu tarjeta.

  1. Haz clic en Add en el panel Connections y luego en Built-in model (decisions), en Decisions. Se abre una ventana titulada Built-in decision model. También puedes abrirla desde la página de la tarjeta Built-in model.
  2. Lee la advertencia y luego activa Use the built-in decision model (usar el modelo de decisión integrado). Un cuadro de diálogo titulado Turn on the built-in decision model? (¿activar el modelo de decisión integrado?) muestra el dictamen para tu computadora. Haz clic en Enable (activar), o en Enable anyway (activar de todos modos) cuando el dictamen es una advertencia.
  3. En Available decision models (modelos de decisión disponibles), elige Open-Jev 2B u Open-Jev 9B. Haz clic en Download and install (descargar e instalar) y confirma el tamaño, el dictamen de hardware y las licencias. No se descarga nada antes de eso.
  4. Haz clic en la fila Decision, en Behind the scenes, y elige Built-in model (decisions).

Otros controles de la ventana:

La primera respuesta de un modelo tras iniciarse es más lenta, así que Marinara hace una pregunta de calentamiento mientras lo carga. Si falla, el modelo se inicia de todos modos y la primera pregunta real asume esa demora. Un turno con muchas declaraciones en un chat largo tarda más. En un chat largo, Open-Jev 2B tarda aproximadamente un cuarto de segundo por declaración.

Ejecutar Strands decider por tu cuenta

Strands decider 2B es otro modelo de decisión abierto (Apache-2.0) que habla System One. Marinara no puede instalarlo, pero funciona como Custom System One endpoint mientras lo mantengas en ejecución.

  1. En un entorno con Python 3.10 o posterior, instálalo e inicia su servidor:
   pip install strands-decider
   strands-decider serve StrandsAgents/strands-decider-2B-hobson-v19 --port 8000

Usa una GPU NVIDIA o Apple silicon cuando encuentra uno de ellos y, si no, el procesador, con menor velocidad. El primer inicio descarga el modelo y unos 4,6 GB de pesos base, y sus paquetes de Python ocupan unos 5,5 GB. El servidor no tiene contraseña, así que mantenlo en 127.0.0.1.

  1. Añade una cuenta Own decision server con la Server address http://127.0.0.1:8000. Cualquier nombre de modelo funciona.
  2. Elígelo en la fila Decision y pruébalo con Test en el menú ⋯ de la cuenta. Su primera respuesta tras iniciarse tarda unos 2 segundos, más que el límite de tiempo predeterminado, así que pruébalo una vez antes de chatear.

Sus probabilidades están calibradas, así que el umbral predeterminado de 0,5 le resulta adecuado, a diferencia de un Open-Jev autoalojado (consulta Umbrales). Sus respuestas dependen de la redacción, así que sigue Redactar declaraciones.

Guías relacionadas