活用例
ゲームNPC対話API
NPCごとの人物設定とクエストの状態をシステムメッセージとして送り、短い台詞をストリーミングで受け取ります。DeepSeek V4.1 Flash Uncensored はすぐに答え、悪役や盗賊の役になりきり、ゲームが読めるJSONを返せます。8行の会話を1,000回行っても約$2.76です。
2026年10月29日 確認
NPC対話に必要なもの、と得られるもの
| NPC対話の必要条件 | nokeepでは |
|---|---|
| すぐ始まる台詞 | ストリーミングを使い、max_tokens は小さくして、思考はオフにしてください(DeepSeekの初期設定がオフです)。毎時の稼働確認では、短い質問1つへの回答全体が、2026年10月26日から29日のDeepSeekで1日平均0.5〜1.7秒でした。混雑時は1回の呼び出しがこれより大幅に長くかかることがあります。稼働状況。 |
| 残酷な役もこなせる | 盗賊は脅し、カルト教祖は説法できます。拒否はモデルの重みから取り除かれています。拒否されるのは厳格な制限だけで、その場合は 422 を返し、料金はかかりません。 |
| ゲームが動作に使える情報 | DeepSeekは response_format を受け付け、json_schema も含まれるので、台詞に感情と動作を添えて返せます。JSON出力。 |
| プレイヤーの記憶 | APIは呼び出し同士の間で何も保持しません。NPCが覚えておくべきこと(クエストの段階、過去の侮辱など)はシステムメッセージに入れてください。セーブデータに保存しておけます。 |
| 計画しやすいプレイヤー1人あたりの料金 | 前払いのクレジットで、100万分の1クレジット単位で請求されます。キーごとの1日の上限で、暴走したループを止められます。 |
1,000回の会話の料金
| モデル | 1,000回あたり(キャッシュなし) | 1,000回あたり(繰り返しの冒頭をキャッシュ) |
|---|---|---|
| DeepSeek V4.1 Flash Uncensored | $4.88 | $2.76 |
| GLM 5.3 Flash Uncensored | $2.11 | $1.34 |
今日の単価で計算しています。冒頭800トークン、1往復あたり入力25・出力60トークンの8往復、最長の呼び出し1,420トークンです。GLMは返信の前に短く思考するため、その分の出力トークンはここには含まれていません。
GLMでは同じ1,000回の会話が、短い思考を除いて約$1.34です。ただし、その思考は台詞ごとに入るため、NPCには許されない待ち時間が生じます。短い人物設定はどちらでも安く済みます。毎回長い設定資料を送ると、料金がかさみます。
台詞をストリーミングで返す
これはクライアントではなく、ゲームサーバーで実行してください。ゲームに組み込んだキーは取り出されてしまいます。届いた部分から順に表示すれば、プレイヤーが見ている間に吹き出しが埋まっていきます。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://nokeep.ai/v1",
api_key=os.environ["NOKEEP_API_KEY"],
)
persona = "You are Brannoc, the blacksmith of Hollowmere: gruff, superstitious, owes the thieves guild money. The player has the quest \"Missing ore\" and has not yet found the mine. Speak only as Brannoc, in one to three short sentences. Never mention game mechanics."
stream = client.chat.completions.create(
model="deepseek-v4.1-flash-uncensored",
messages=[
{"role": "system", "content": persona},
{"role": "user", "content": "Have you seen any ore carts come through town?"},
],
stream=True,
max_tokens=120,
temperature=0.8,
)
for chunk in stream:
if chunk.choices:
print(chunk.choices[0].delta.content or "", end="", flush=True)ゲームが動作に使える台詞
NPCの応答でゲームの状態を変えたいときは、文章をストリーミングする代わりにJSONを求めてください。表示する台詞、アニメーションの感情、コードが使う動作を含めます。形式はプロンプトにも書いてください。
import json
reply = client.chat.completions.create(
model="deepseek-v4.1-flash-uncensored",
max_tokens=200,
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": persona + ' Answer as JSON: {"line": string, "mood": "calm" | "angry" | "afraid", "action": "none" | "give_map" | "attack"}.'},
{"role": "user", "content": "Tell me where the mine is or I tell the guild you skipped town."},
],
)
npc = json.loads(reply.choices[0].message.content)
print(npc["line"], npc["mood"], npc["action"])多くのプレイヤーが同時に
どのモデルを使うか
話し言葉の台詞には deepseek-v4.1-flash-uncensored を使ってください。最初に考えずに答え、サンプリング設定を受け付け、JSONを返します。glm-5.3-flash-uncensored はトークンあたりが安い(100万あたり入力$0.20、出力$0.65。DeepSeekは$0.45と$1.75)ものの、答えるたびに短く考えるため、プレイヤーが待たない作業に向いています。例えば、明日の町の噂を書くような作業です。モデルを比較する。
プレイヤーの言葉について保存するもの
呼び出しごとに1行だけ、時刻、キー、モデル、トークン数、クレジット、ステータスを、30日間保存します。プレイヤーが入力した内容や、NPCの台詞は保存しません。人物設定のプロンプトに何も追加されません。保存する内容。
よくある質問
リアルタイムの対話に十分速いですか?
吹き出しや対話ウィンドウには十分です。台詞はストリーミングにし、max_tokens は120前後、思考はオフにしてください。時間は負荷によって変わります。日ごとの平均は稼働状況ページに表示されます。リップシンクの音声なら、最初の文が届いてから音声を再生し始めてください。
悪役が悪態をついたり、脅したり、嘘をついたりできますか?
はい。ジェイルブレイク用のプロンプトがなくても、モデルは暗い役柄を書けます。規約に定められた短い厳格な制限だけが拒否され、その場合は422を返し、料金はかかりません。
ゲームのクライアントから直接呼び出せますか?
APIはどのオリジンからの呼び出しも許可しているので、技術的には可能です。ただし、配布されたゲームからは誰でもキーを取り出せます。サーバーから呼び出し、キーには1日の上限を設定してください。
Unity、Godot、Unrealで使えますか?
HTTPSのPOSTを送れるエンジンならどれでも使えます。APIはOpenAIのチャット補完の形式なので、お使いの言語のOpenAIクライアントライブラリを、そのままベースURLに向ければ動きます。