Lompat ke konten
Semua dokumentasi

Kasus penggunaan

API dialog NPC untuk game

Kirim persona setiap NPC dan kondisi quest sebagai pesan sistem, lalu terima satu baris pendek yang di-stream. DeepSeek V4.1 Flash Uncensored menjawab seketika, tetap dalam karakter untuk penjahat dan bandit, dan bisa mengembalikan JSON yang dibaca game-mu. Seribu percakapan delapan baris berharga sekitar $2.76.

Diperiksa 29 Oktober 2026

Apa yang dibutuhkan dialog NPC, dan apa yang kamu dapat

Kebutuhan dialog NPCDi nokeep
Baris yang mulai cepatGunakan stream, jaga max_tokens tetap kecil, dan biarkan berpikir mati, yang merupakan default DeepSeek. Pemeriksaan status per jam, satu pertanyaan pendek yang dijawab utuh, rata-rata antara setengah detik dan 1.7 detik per hari untuk DeepSeek pada 26 sampai 29 Oktober 2026; satu panggilan bisa jauh lebih lama saat sedang sibuk. Status langsung.
Karakter yang bisa kejamBandit bisa mengancam dan pemimpin kultus bisa berkhotbah: penolakan sudah dihapus dari bobot model. Hanya batas keras yang ditolak, dengan 422 dan tanpa biaya.
Fakta yang bisa ditindaklanjuti game-muDeepSeek menerima response_format, termasuk json_schema, sehingga sebuah baris bisa kembali dengan suasana hati dan aksi. Keluaran JSON.
Ingatan tentang pemainAPI tidak menyimpan apa pun di antara panggilan. Letakkan yang harus diingat NPC (tahap quest, hinaan di masa lalu) di pesan sistem; file simpanan gamemu yang menampungnya.
Biaya per pemain yang bisa kamu rencanakanKredit prabayar, ditagih sampai sepersejuta kredit. Batas harian per kunci menghentikan loop yang tak terkendali.

Berapa biaya seribu percakapan

ModelPer 1,000 percakapan, tanpa cachePer 1,000 percakapan, awal berulang di-cache
DeepSeek V4.1 Flash Uncensored$4.88$2.76
GLM 5.3 Flash Uncensored$2.11$1.34

Dihitung dari harga hari ini: awal 800 token, 8 giliran masing-masing 25 token masuk dan 60 keluar, panggilan terpanjang 1,420 token. Pikiran singkat GLM sebelum setiap balasan menambah token keluaran yang tidak dihitung di sini.

Di GLM, seribu percakapan yang sama sekitar $1.34 sebelum pikiran singkatnya, tetapi pikiran itu terjadi sebelum setiap baris, dan itu memakan waktu yang tidak bisa dimiliki NPC. Persona pendek murah dalam kedua kasus; yang membuat biaya membengkak adalah lore panjang yang dikirim di setiap panggilan.

Sebuah baris dialog, di-stream

Jalankan ini di server game-mu, bukan di klien: kunci yang disertakan di dalam game bisa dicabut darinya. Tampilkan setiap potongan saat datang, agar gelembung ucapan terisi selagi pemain menonton.

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)

Baris yang bisa ditindaklanjuti game-mu

Saat jawaban NPC harus mengubah game, minta JSON alih-alih prosa yang di-stream: baris yang ditampilkan, suasana hati untuk animasi, dan aksi untuk kodemu. Jelaskan bentuknya di prompt juga.

Python
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"])

Banyak pemain sekaligus

  • Setiap kunci mendapat 120 permintaan per menit, dan satu akun bisa punya 10 kunci. Setelah 429, header Retry-After memberi tahu berapa lama harus menunggu. Batas laju.
  • Berikan setiap lingkungan kuncinya sendiri dengan batas harian: bug yang membuat dialog terus berulang akan berhenti di batas itu, bukan di saldomu. Kunci dan batas.
  • Jaga persona tetap pendek dan tidak berubah. Persona sekitar 1,000 token atau lebih yang berulang dari panggilan ke panggilan dibaca dari cache dengan harga sebagian kecil.
  • Tulis baris cadangan untuk saat panggilan gagal, agar keadaan sibuk tidak membekukan adegan. Balasan 503 busy tidak dikenai biaya.

Model yang mana

Gunakan deepseek-v4.1-flash-uncensored untuk baris ucapan: ia menjawab tanpa berpikir dulu, menerima pengatur sampling dan mengembalikan JSON. glm-5.3-flash-uncensored lebih murah per token ($0.20 masuk, $0.65 keluar per juta, dibanding $0.45 dan $1.75), tetapi berpikir singkat sebelum setiap jawaban, jadi cocok untuk pekerjaan yang tidak ditunggu pemain, seperti menulis gosip kota untuk besok. Bandingkan keduanya.

Apa yang kami simpan dari kata-kata pemain

Satu baris per panggilan: waktu, kunci, model, jumlah token, kredit dan status, disimpan selama 30 hari. Tidak pernah apa yang diketik pemain, tidak pernah baris NPC. Tidak ada yang ditambahkan ke prompt persona-mu. Apa yang kami simpan.

Pertanyaan

Apakah cukup cepat untuk dialog real-time?

Untuk gelembung ucapan dan kotak dialog, ya: alirkan barisnya, jaga max_tokens sekitar 120 dan biarkan berpikir mati. Waktunya bervariasi menurut beban; halaman status menampilkan rata-rata setiap hari. Untuk suara yang disinkronkan dengan bibir, mulai suara setelah kalimat pertama tiba.

Bisakah penjahat mengumpat, mengancam dan berbohong?

Bisa. Model menulis karakter gelap tanpa prompt jailbreak. Hanya daftar pendek batas keras dalam ketentuan yang ditolak, dengan 422 yang tidak dikenai biaya.

Bisakah saya memanggilnya dari dalam klien game?

Bisa, karena API mengizinkan asal mana pun, tetapi siapa pun bisa mencabut kunci dari game yang sudah dirilis. Panggil dari servermu, dan simpan batas harian di kuncinya.

Apakah ini bisa dipakai dengan Unity, Godot atau Unreal?

Engine apa pun yang bisa mengirim HTTPS POST bisa dipakai: API memakai format chat completions dari OpenAI, sehingga pustaka klien OpenAI untuk bahasamu bisa langsung dipakai dengan mengarahkannya ke URL dasar kami.