コンテンツへスキップ

Playground

キャラクターは次に何をすべき?

キャラクターは次に何をすべき?体力が低いとポーションを飲み、高いと攻撃します。

このサンプルが示すこと。 ゲーム AI には「固定リストから一手を選ぶ」判断が多く、手書きの if-else になりがちです。ここではキャラの状態を意思決定モデルに渡し、単一の Choice 質問にします:攻撃、ポーションを飲む、逃げる、休戦を求める、挑発。ゲームループがそのまま実行できる行動と、各選択肢の確率が返ります。

サンプル入力と結果(サンプルデータ、ライブ推論ではない)。 国境警備が狭い橋に立ち、体力 12%、敵 3、回復ポーション 1、近くに味方なし。結果:ポーションを飲む 58%。逃走 24%、休戦 9%、攻撃 7%、挑発 2%。 体力だけ 80% に変えると攻撃 64% に反転し、挑発 18%、ポーションは 3%。

確率が重要な理由。 低体力ではポーションが 58% で勝ち、逃走も 24%。分布からサンプリングするか、最上位の自信が足りないときスクリプトに戻し、毎回同じ動きにしない。

向いているとき。 状態が少数フィールド、行動が固定、推論の長文ではなく実行できる答えが欲しいとき。サンプルは Decider(decider-v1.1)。状態にスクリーンショットが含まれるなら画像対応の Clef モデルへ。

よくある質問

このページの確率はライブ計算ですか?

いいえ。サンプルデータで、モデル切替でも変わりません。自分のゲーム状態を実行するにはサインインしてください。

自分の行動を定義できますか?

はい。モデルは criteria に列挙した中から選びます。選択肢の上限は各モデルの Model info にあります。

毎フレーム呼んでも安く済みますか?

コストはリクエストサイズと質問数次第です。料金 を参照。毎フレーム呼ぶ前に、自ゲームでレイテンシを測ってください。

サンプル結果は選択したモデルでは変わりません。

リクエスト

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

結果

サンプルデータ
2つの例を比較

この 2 つの例は細部が 1 つだけ違います。結果もそれに応じて変わります。

何が変わったか低体力 → 高体力

これらの結果はサンプルデータであり、ライブ推論ではありません。サインインして自分の内容で試せます。
action: attack · 攻撃 → potion · ポーションを飲む
actionchoice
potion · ポーションを飲む
オプションごとの信頼度
攻撃
7%
ポーションを飲む
58%
逃げる
24%
休戦を求める
9%
挑発
2%

コードをコピー

SYSTEM_ONE_API_KEY を設定。スニペットは公開カタログのモデル ID を使用します。

リクエスト JSON
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":"攻撃","potion":"ポーションを飲む","flee":"逃げる","parley":"休戦を求める","taunt":"挑発"}}}}
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":"攻撃","potion":"ポーションを飲む","flee":"逃げる","parley":"休戦を求める","taunt":"挑発"}}}}'
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: "攻撃",    potion: "ポーションを飲む",    flee: "逃げる",    parley: "休戦を求める",    taunt: "挑発",  }),  },}, { headers: { 'Idempotency-Key': crypto.randomUUID() } });result.answers.action.choiceresult.response.requestId;