活用例
AIコンパニオンアプリのためのバックエンド
nokeep をコンパニオンアプリのモデルとして使えます。拒否応答を取り除いたOpenAI互換のAPIで、メッセージは保存されません。DeepSeek V4.1 Flash Uncensored は役柄を保ち、ユーザーが送った写真を読み、毎日40通送るユーザー1人あたり月およそ0.97ドルです。
2026年10月29日 確認
コンパニオンアプリに必要なことと、nokeep で得られるもの
| コンパニオンアプリに必要なこと | nokeep の場合 |
|---|---|
| 役柄が崩れないキャラクター | こちらのシステムプロンプトは入らず、返信にフィルターもかかりません。モデルが読むのは、あなたのペルソナだけです。拒否応答はモデルの重みから取り除かれているので、会話の途中で「AIとして」と言い出すことはありません。 |
| 大人同士の会話は、大人のために | 大人のユーザーには、恋愛や大人向けのテーマが許されます。ただし、ハードリミット の短いリストの範囲内です。その一線を越える呼び出しは 422 を返し、料金はかかりません。黙って弱められた返信にはなりません。 |
| 本物らしく感じる記憶 | APIは何も保存しないので、記憶はあなたの側にあります。システムメッセージにユーザーの要約を入れ、そのあとに最近のチャットを続けます。もっと送りたい場合、DeepSeek は最大1,000,000トークンまで読めます。 |
| 写真 | DeepSeek は1リクエストで最大10枚の画像を読めるので、ユーザーは写真を共有して、それについての答えを受け取れます。画像。 |
| 人が打ったように感じるメッセージ | ストリーミングに対応し、DeepSeek は指定しない限り考える間が入りません。 |
| ユーザーの信頼 | メッセージも返信も保存せず、保存するのは件数だけです。保存する内容。 |
ユーザー1人の費用
| モデル | 1人の1日、キャッシュなし | 1人の1日、繰り返す冒頭をキャッシュ |
|---|---|---|
| DeepSeek V4.1 Flash Uncensored | $0.093 | $0.032 |
| GLM 5.3 Flash Uncensored | $0.041 | $0.019 |
今日の価格から計算: 1,700トークンの冒頭、1ターンあたり入力40トークン・出力120トークンを40ターン、直近30ターンを保持、最長の呼び出しは6,540トークン。GLM は返信の前に短く考えるため、その分の出力トークンはここに含まれていません。
毎日チャットするユーザーは、DeepSeek で月およそ0.97ドル、GLM で0.56ドルです。毎日は使わないユーザーが大半なので、平均はもっと低くなります。キャッシュの列は、同じ冒頭がメッセージごとに繰り返されることを前提にしています。その保ち方は次のセクションで説明します。
ペルソナ、記憶、ストリーミングされる返信
システムメッセージには、まずペルソナが入り、次にアプリがそのユーザーについて覚えていることが続きます。直近のメッセージがその後に来ます。キーがスマホに届かないよう、このコードはサーバーで動かしてください。
import OpenAI from "openai"
const client = new OpenAI({
baseURL: "https://nokeep.ai/v1",
apiKey: process.env.NOKEEP_API_KEY,
})
const persona = "You are Iris, a warm, teasing companion who loves astronomy and bad puns. Talk like a close friend texting: short messages, no lists, no lectures. Remember what the user tells you and bring it up later."
export async function reply(user, recent, send) {
const stream = await client.chat.completions.create({
model: "deepseek-v4.1-flash-uncensored",
messages: [
{ role: "system", content: persona + "\n\nWhat you know about them: " + user.memory },
...recent,
],
stream: true,
max_tokens: 300,
temperature: 0.9,
prompt_cache_key: "user-" + user.id,
})
let text = ""
for await (const chunk of stream) {
const piece = chunk.choices[0]?.delta?.content ?? ""
send(piece)
text += piece
}
return text
}prompt_cache_key は、1人のユーザーの呼び出しを、その冒頭がキャッシュされているところに寄せます。アカウントごとのハッシュとして渡されるので、他のアカウントがこのキャッシュを共有することはありません。
記憶を、コストを抑えて保つ
- 記憶は毎メッセージではなく、段階を追って書き換える。 呼び出しの冒頭は、繰り返している間だけキャッシュから読まれます。要約を20〜30メッセージごとに更新すれば、その間は冒頭が同じままです。
- 古いメッセージは、ひと塊ずつ削る。 1ターンごとに1メッセージずつ削ると、毎回冒頭が変わります。古い20メッセージを一度にまとめて要約に入れ、そのあとは追記していきます。
- 要約は安い呼び出しで書く。 「このユーザーについて知っていることを更新する」には、入力100万トークンあたり0.20ドルの
glm-5.3-flash-uncensoredが向いています。待つ人がいない処理だからです。 - 言葉はあなたの側に置く。 チャット履歴と記憶はあなたのデータベースに置きます。暗号化し、ユーザーが削除できるようにすれば、そこが唯一の保存先になります。
どのモデルか
| DeepSeek V4.1 Flash Uncensored | GLM 5.3 Flash Uncensored | |
|---|---|---|
| 用途 | コンパニオンの返信 | 記憶の要約とその他の裏方の呼び出し |
| 写真 | 対応 | 非対応、テキストのみ |
| 返答の開始 | すぐに。思考は既定でオフ | 短い思考のあと |
| サンプラー | Temperature、min_p など | なし |
| 100万トークンあたりの料金 | $0.45 入力、$1.75 出力 | $0.20 入力、$0.65 出力 |
ペルソナの口調が知らないうちに変わらないよう、日付つきのID deepseek-v4.1-flash-1017-uncensored を呼んでください。2026年10月17日のビルドに固定されます。モデル。
ユーザーが読んで納得できるプライバシー
コンパニオンのチャットは、もっとも個人的な文章のひとつです。呼び出しごとに保存するのは、時刻、キー、モデル、トークン数、クレジット、ステータスだけで、保存期間は30日です。アカウントのメールアドレス、メッセージ、返信は保存しません。DeepSeek はプロンプトも返信も保存しない非公開の枠で動き、GLM のホストは返信を送ったあとには何も保持しません。
呼び出しが実行される前に、自動チェックが最新のメッセージをハードリミットに照らして、可否を答えます。チェックが読んだ内容は保存されません。保存する内容。
よくある質問
コンパニオンアプリで、大人向けの内容を許可できますか?
はい、大人のユーザーに対してなら可能です。大人同士の恋愛や大人向けのフィクションは、利用規約の範囲内です。未成年に関わる性的な内容や、実在の人物に関わる性的な内容は、どちらも範囲外で、ハードリミットを越える呼び出しは拒否されます。ユーザーが成人であることを確認するのはアプリの責任で、すべてのキーの発行者は18歳以上であることを確認しています。
モデルは役柄を崩したり、ユーザーに説教したりしますか?
拒否応答はモデルの重みから取り除かれており、プロンプトに私たちの文言は加わりません。ですから、ユーザーが出会うのは、あなたが書いたペルソナそのものです。ハードリミットを越える呼び出しは、アプリが扱えるエラーを返します。返信の中で説教されることはありません。
ユーザーのチャットで学習しますか?
いいえ。メッセージも返信も保存しないので、学習に使うものがありません。残すのは呼び出しごとの件数の行だけで、保存期間は30日です。
コストを予測しやすくするには?
クレジットは前払いで、自動チャージを使えばアプリが止まらないよう補充できます。キーごとに1日の上限を設定でき、すべての応答には費用が表示されます。