ユースケース
インタラクティブ・フィクションとテキストアドベンチャーのためのAPI
どのOpenAI SDKからでも nokeep を指定し、ナレーターに DeepSeek V4.1 Flash Uncensored を使ってください。文章が書かれるそばからストリーミングし、フィクションに必要なサンプラーに対応し、キャンペーン全体の100万トークンを保持します。ダークな筋書きにも拒否なしで従います。60ターンのセッションは約$0.041です。
2026年10月29日 確認
テキストゲームに必要なものと、nokeep で得られるもの
| テキストゲームに必要なもの | nokeep での対応 |
|---|---|
| 最初の一言を素早く | すべてのモデルでストリーミングに対応。DeepSeek は考えるよう頼まない限りすぐに答えるので、呼び出しが始まると同時に語りも始まります。 |
| 長い記憶 | DeepSeek は100万トークンを保持するので、キャンペーン全体が収まります。各呼び出しで繰り返される冒頭は、キャッシュ価格で課金されます。100万トークンあたり$0.45ではなく$0.011です。 |
| 繰り返しにならない文章 | DeepSeek は temperature、min_p、top_k と3つのペナルティに対応しています。開始値の目安。 |
| ダークな物語にも対応 | 重みから拒否応答が取り除かれており、プロンプトに何かが追加されることはありません。例外は ハードリミット の短いリストだけです。そのいずれかに触れた呼び出しは、コードとともに 422 が返り、料金はかかりません。 |
| 予測できる料金 | 5ドルから、期限のないプリペイドクレジット。各レスポンスに、その呼び出しの料金が表示されます。 |
セッションの料金
| モデル | 1回の会話、キャッシュなし | 1回の会話、繰り返す冒頭はキャッシュ |
|---|---|---|
| DeepSeek V4.1 Flash Uncensored | $0.30 | $0.041 |
| GLM 5.3 Flash Uncensored | $0.13 | $0.037 |
今日の価格から算出: 1,500トークンの冒頭、60ターンで入力40トークン・出力250トークン、最長の呼び出しは18,650トークン。GLM が返答の前に行う短い思考による出力トークンは、この計算に含まれていません。
各ターンで会話履歴全体を送るので、60回目の呼び出しは1回目よりずっと長くなります。それでも安く済むのはキャッシュがあるからです。呼び出しが直前の呼び出しと重なる部分は、キャッシュから読み込まれます。キャッシュが1回も当たらなければ、同じセッションは DeepSeek で $0.30 です。キャッシュの仕組み。
20行のナレーター
世界観とルールはシステムメッセージに入れます。ターンごとに同じ内容にしておけば、各呼び出しの冒頭が繰り返されてキャッシュから読み込まれます。返答はストリーミングで受け取り、届いた分から順に表示します。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://nokeep.ai/v1",
api_key=os.environ["NOKEEP_API_KEY"],
)
history = [{"role": "system", "content": "You are the narrator of a dark fantasy text adventure. The player is a smuggler in the drowned city of Vell. Describe what they see, hear and smell in second person, in under 150 words. Never act or speak for the player. End each turn with the scene open, not with a list of options."}]
def turn(move):
history.append({"role": "user", "content": move})
stream = client.chat.completions.create(
model="deepseek-v4.1-flash-uncensored",
messages=history,
stream=True,
max_tokens=400,
temperature=0.9,
extra_body={"min_p": 0.05, "repetition_penalty": 1.05, "prompt_cache_key": "campaign-42"},
)
text = ""
for chunk in stream:
if chunk.choices:
piece = chunk.choices[0].delta.content or ""
print(piece, end="", flush=True)
text += piece
history.append({"role": "assistant", "content": text})
turn("I row the stolen skiff under the old customs bridge.")prompt_cache_key はキャンペーンごとに同じ任意の文字列にしてください。キャンペーンの呼び出しを、冒頭がすでにキャッシュされている場所へ振り分けます。ストリーミング では、最後のチャンクに含まれる使用量と、返答を途中で止める方法を扱っています。
ゲームの状態はコード側で持つ
- 状態は文章の外に。 持ち物、体力、フラグは自分のデータで管理し、短い要約をシステムメッセージに入れてください。モデルは物語をよく覚えますが、数字は苦手です。
- 事実を返してほしいときはJSONで頼む。
response_formatを付けた2回目の短い呼び出しで、そのターンで変わったことを返させ、コードで反映できます。JSON出力。 - 長いキャンペーン。 100万トークンは多くのターンに相当しますが、どのターンにも料金がかかります。数百ターンを超えたら、古いターンを一度書いた要約に置き換えてください。要約は同じ位置に置き、冒頭が繰り返されるようにします。
- 分岐と取り消し。 API は呼び出し間で何も保持しないので、セーブポイントはそのターンのメッセージ一覧そのものです。前の一覧を送り直せば巻き戻せます。
モデルの選び方
| DeepSeek V4.1 Flash Uncensored | GLM 5.3 Flash Uncensored | |
|---|---|---|
| 用途 | ナレーター。ほとんどのテキストゲーム向け。 | 要約などの短い補助呼び出し。安価。 |
| サンプラー | すべて対応 | なし。独自の設定を使用 |
| 思考 | 指定しない限りオフ。返答はすぐ始まる | 常に短い思考を先に行う |
| コンテキスト | 100万トークン | 12万8,000トークン |
| 画像入力 | あり、1リクエストに最大10枚 | なし |
IDは deepseek-v4.1-flash-uncensored と glm-5.3-flash-uncensored。両モデルの詳細な比較。
プレイヤーの物語はどうなるか
1回の呼び出しにつき1行だけ、時刻、キー、モデル、トークン数、クレジット、ステータスを30日間保存します。メッセージも返答も保存しません。DeepSeek は、プロンプトも返答も保存しないプライベートな階層で動いています。プレイヤーの物語は、ゲームが保存する場所にだけあり、nokeep 側には残りません。保存する内容。
よくある質問
成人向けのテーマでテキストアドベンチャーを作れますか?
はい、大人向けに限ります。暴力、ホラー、犯罪、大人同士の関係などのフィクションは、ジェイルブレイクのプロンプトなしでモデルが書きます。規約にある短いハードリミットのリストだけは拒否され、その場合は 422 が返り、料金はかかりません。キーを作成した人は全員、18歳以上であることを確認しています。
モデルが忘れるまでに何ターン入りますか?
DeepSeek は1回の呼び出しで100万トークンを読みます。1ターンが約300トークンなら、3,000ターン以上の履歴に相当します。多くのゲームは、呼び出しを安く保つためにそれよりずっと前に要約します。
プレイヤーがブラウザのページから直接APIを呼べますか?
APIはブラウザからの呼び出しを許可していますが、公開ページに置いたキーはコピーされてしまうおそれがあります。サーバーから呼び出すか、プレイヤーごとに1日の上限付きの別のキーを渡してください。
支払う前に試せますか?
はい。無料のテストキー sk-nokeep-test は、どのリクエストにも決まった1行を返すので、まずゲームとの接続を組めます。テストキー。