Pular para o conteúdo
Toda a documentação

Caso de uso

Uma API de diálogo de NPC para jogos

Envie a persona de cada NPC e o estado da missão como mensagem de sistema, e receba de volta uma fala curta em streaming. O DeepSeek V4.1 Flash Uncensored responde na hora, mantém o personagem em vilões e ladrões, e pode devolver JSON que o seu jogo lê. Mil conversas de oito falas custam cerca de US$ 2.76.

Verificado em 29 de outubro de 2026

O que um diálogo de NPC precisa, e o que você recebe

O que o diálogo de NPC precisaNo nokeep
Falas que começam rápidoUse streaming, mantenha o max_tokens baixo e deixe o raciocínio desligado, que é o padrão do DeepSeek. A verificação de status a cada hora, com uma pergunta curta respondida por inteiro, ficou em média entre meio segundo e 1.7 segundo por dia para o DeepSeek de 26 a 29 de outubro de 2026; em um momento de muito uso, uma única chamada pode demorar bem mais. Status ao vivo.
Personagens que podem ser cruéisUm bandido pode ameaçar e um líder de culto pode pregar: as recusas foram removidas dos pesos. Só os limites rígidos são recusados, com 422 e sem cobrança.
Fatos que o seu jogo pode usarO DeepSeek aceita response_format, incluindo json_schema, então uma fala pode vir com um humor e uma ação. Saída em JSON.
Memória do jogadorA API não guarda nada entre as chamadas. Coloque o que o NPC deve lembrar (a etapa da missão, um insulto anterior) na mensagem de sistema; o seu arquivo de save guarda isso.
Um custo por jogador que você consegue planejarCréditos pré-pagos, cobrados até a milionésima parte de um crédito. Um teto diário por chave barra um loop descontrolado.

Quanto custam mil conversas

ModeloPor 1.000 conversas, sem cachePor 1.000 conversas, começo repetido em cache
DeepSeek V4.1 Flash Uncensored$4.88$2.76
GLM 5.3 Flash Uncensored$2.11$1.34

Calculado com os preços de hoje: um começo de 800 tokens, 8 turnos de 25 tokens de entrada e 60 de saída, a chamada mais longa com 1.420 tokens. O raciocínio curto do GLM antes de cada resposta adiciona tokens de saída que esta conta deixa de fora.

No GLM, as mesmas mil conversas ficam em cerca de US$ 1.34 antes do raciocínio curto, mas esse raciocínio acontece antes de cada fala, e isso custa um tempo que um NPC não pode gastar. Personas curtas são baratas de qualquer jeito; o que soma é uma ficha de lore longa em cada chamada.

Uma fala de diálogo, em streaming

Rode isto no servidor do seu jogo, não no cliente: uma chave embutida no jogo pode ser extraída dele. Mostre cada pedaço conforme ele chega, para que o balão de fala se preencha enquanto o jogador olha.

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)

Uma fala que o seu jogo pode usar

Quando a resposta do NPC deve mudar o jogo, peça JSON em vez de texto em streaming: a fala a mostrar, um humor para a animação e uma ação para o seu código. Descreva a estrutura no prompt também.

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

Muitos jogadores ao mesmo tempo

  • Cada chave aceita 120 requisições por minuto, e uma conta pode ter 10 chaves. Depois de um 429, o cabeçalho Retry-After diz quanto tempo esperar. Limites de taxa.
  • Dê a cada ambiente a sua própria chave com um teto diário: um bug que faça um diálogo entrar em loop para no teto, e não no seu saldo. Chaves e limites.
  • Mantenha as personas curtas e fixas. Uma persona de cerca de 1.000 tokens ou mais que se repete de chamada para chamada é lida do cache, por uma fração do preço.
  • Escreva uma fala de reserva para quando uma chamada falhar, para que um momento de uso alto nunca trave uma cena. Um 503 busy não custa nada.

Qual modelo usar

Use deepseek-v4.1-flash-uncensored para falas faladas: ele responde sem raciocinar antes, aceita parâmetros de amostragem e devolve JSON. O glm-5.3-flash-uncensored é mais barato por token (US$ 0.20 de entrada e US$ 0.65 de saída por milhão, contra US$ 0.45 e US$ 1.75), mas raciocina um pouco antes de cada resposta; por isso serve melhor para trabalhos que o jogador não está esperando, como escrever os boatos da cidade de amanhã. Compare os dois.

O que guardamos das palavras dos jogadores

Uma linha por chamada: a hora, a chave, o modelo, a contagem de tokens, os créditos e o status, guardados por 30 dias. Nunca o que o jogador digitou, nunca a fala do NPC. Nada é acrescentado ao prompt da sua persona. O que guardamos.

Perguntas

É rápido o bastante para diálogo em tempo real?

Para balões de fala e caixas de diálogo, sim: use streaming, mantenha o max_tokens perto de 120 e deixe o raciocínio desligado. Os tempos variam com a carga; a página de status mostra a média de cada dia. Para uma voz sincronizada com os lábios, comece a voz quando a primeira frase chegar.

Vilões podem xingar, ameaçar e mentir?

Podem. Os modelos escrevem personagens sombrios sem nenhum prompt de jailbreak. Só a lista curta de limites rígidos dos termos é recusada, com um 422 que não custa nada.

Dá para chamar a API de dentro do cliente do jogo?

Dá, já que a API aceita qualquer origem, mas qualquer pessoa pode extrair uma chave de um jogo distribuído. Chame a API a partir do seu servidor e mantenha um teto diário na chave.

Funciona com Unity, Godot ou Unreal?

Qualquer engine que consiga enviar um HTTPS POST funciona: a API usa o formato de chat completions da OpenAI, então uma biblioteca cliente da OpenAI para a sua linguagem funciona sem mudanças, apontada para a nossa URL base.