Saltar al contenido

Playground

¿Qué debe hacer el personaje a continuación?

¿Qué debe hacer el personaje a continuación? Con poca salud bebe una poción; con mucha, ataca.

Qué muestra este ejemplo. La IA de juegos está llena de decisiones «elige un movimiento de una lista fija», suele escribirse en if-else. Aquí el estado del personaje va a un modelo de decisión como una sola pregunta Choice: atacar, beber una poción, huir, pedir una tregua o burlarse. Obtienes una acción que el bucle del juego puede ejecutar tal cual, más la probabilidad de cada opción.

Entrada y resultado de ejemplo (datos de ejemplo, no una ejecución en vivo). Un guardia fronterizo en un puente estrecho al 12 % de salud, frente a 3 enemigos, con 1 poción de curación y sin aliado cerca. Resultado: beber una poción, 58 %. Huir 24 %, tregua 9 %, atacar 7 %, burlarse 2 %. Cambia solo la salud a 80 %. La elección pasa a atacar 64 %, burlarse 18 %, poción 3 %.

Por qué importan las probabilidades. Con poca salud la poción gana con 58 % y huir aún tiene 24 %. Puedes muestrear esa distribución, o volver a una regla scriptada si la opción top no es lo bastante confiada, para que el guardia no se comporte igual siempre.

Cuándo encaja. Cuando el estado cabe en pocos campos, los movimientos son fijos y quieres una respuesta ejecutable en lugar de un párrafo de razonamiento. La petición de ejemplo usa Decider (decider-v1.1). Si el estado incluye una captura, cambia a un modelo Clef que acepta imágenes.

Preguntas frecuentes

¿Las probabilidades de esta página se calculan en vivo?

No. Son datos de ejemplo y no cambian al cambiar de modelo. Inicia sesión para ejecutar tu propio estado de juego.

¿Puedo definir mis propias acciones?

Sí. El modelo elige de lo que listes en criteria. El máximo de opciones está en Model info de cada modelo.

¿Es lo bastante barato para llamar cada frame?

El coste depende del tamaño de la petición y del número de preguntas; ver Precios. Mide la latencia en tu juego antes de llamar cada frame.

Los resultados de ejemplo no cambian con el modelo seleccionado.

Solicitud

state
application/json
{  "npc": "Border guard",  "hp": "12%",  "enemies": 3,  "inventory": {    "healing_potion": 1  },  "terrain": "narrow bridge",  "ally_nearby": false}

Resultados

Datos de ejemplo
Comparar dos ejemplos

Estos dos ejemplos difieren en un solo detalle. El resultado cambia con ellos.

Qué cambióSalud baja → salud alta

Estos resultados son datos de ejemplo, no una ejecución en vivo. Inicia sesión para probarlos con tu contenido.
action: attack · Atacar → potion · Beber una poción
actionchoice
potion · Beber una poción
Confianza por opción
Atacar
7%
Beber una poción
58%
Huir
24%
Pedir una tregua
9%
Provocar
2%

Copiar el código

Configura SYSTEM_ONE_API_KEY. El fragmento usa un ID de modelo publicado en el catálogo.

JSON de la solicitud
application/json
{"model":"decider-v1.1","state":{"npc":"Border guard","hp":"12%","enemies":3,"inventory":{"healing_potion":1},"terrain":"narrow bridge","ally_nearby":false},"questions":{"action":{"type":"choice","instructions":"Choose the NPC's next action given the game state.","criteria":{"attack":"Atacar","potion":"Beber una poción","flee":"Huir","parley":"Pedir una tregua","taunt":"Provocar"}}}}
cURL · POST /v1/systemone
sh
curl "https://system-one.dev/v1/systemone" \  -H "Authorization: Bearer $SYSTEM_ONE_API_KEY" \  -H 'Content-Type: application/json' \  -H 'Idempotency-Key: saved-operation-id' \  --data '{"model":"decider-v1.1","state":{"npc":"Border guard","hp":"12%","enemies":3,"inventory":{"healing_potion":1},"terrain":"narrow bridge","ally_nearby":false},"questions":{"action":{"type":"choice","instructions":"Choose the NPC'\''s next action given the game state.","criteria":{"attack":"Atacar","potion":"Beber una poción","flee":"Huir","parley":"Pedir una tregua","taunt":"Provocar"}}}}'
TypeScript
TypeScript
// npm install @system-one-ai/core@0.8.0 @system-one-ai/adapter-system-one@0.7.0 @system-one-ai/transport-fetch@0.8.0import { createSystemOne, choice, score, booleanQuestion } from '@system-one-ai/core';import { systemOneAdapter } from '@system-one-ai/adapter-system-one';import { createFetchTransport } from '@system-one-ai/transport-fetch';const client = createSystemOne({  baseURL: "https://system-one.dev/v1",  apiKey: process.env.SYSTEM_ONE_API_KEY!,  model: "decider-v1.1",  adapter: systemOneAdapter,  transport: createFetchTransport(),  timeoutMs: 30_000,  maxRetries: 0,});const result = await client.evaluate({  state: {    "npc": "Border guard",    "hp": "12%",    "enemies": 3,    "inventory": {      "healing_potion": 1    },    "terrain": "narrow bridge",    "ally_nearby": false  },  questions: {  action: choice("Choose the NPC's next action given the game state.", {    attack: "Atacar",    potion: "Beber una poción",    flee: "Huir",    parley: "Pedir una tregua",    taunt: "Provocar",  }),  },}, { headers: { 'Idempotency-Key': crypto.randomUUID() } });result.answers.action.choiceresult.response.requestId;