Caso de uso
Una API de diálogo para NPC de juegos
Envía la personalidad de cada NPC y el estado de la misión como mensaje de sistema, y recibe de vuelta una frase corta en streaming. DeepSeek V4.1 Flash Uncensored responde al instante, se mantiene en personaje para villanos y pícaros, y puede devolver JSON que tu juego lee. Mil diálogos de ocho frases cuestan unos $2.76.
Revisado el 29 de octubre de 2026
Lo que necesita un diálogo de NPC y lo que obtienes
| Lo que necesita el diálogo de NPC | En nokeep |
|---|---|
| Frases que empiezan rápido | Usa streaming, mantén max_tokens bajo y deja el razonamiento apagado, que es el valor por defecto de DeepSeek. La comprobación de estado por hora, una pregunta corta respondida completa, promedió entre medio segundo y 1.7 segundos al día para DeepSeek del 26 al 29 de octubre de 2026; una sola llamada puede tardar mucho más en un momento de mucha carga. Estado en vivo. |
| Personajes capaces de ser crueles | Un bandido puede amenazar y un líder de culto puede predicar: las negativas se quitaron de los pesos. Solo se rechazan los límites estrictos, con un 422 y sin cobro. |
| Datos que tu juego puede usar | DeepSeek acepta response_format, incluido json_schema, así que una frase puede llegar con un estado de ánimo y una acción. Salida JSON. |
| Memoria del jugador | La API no guarda nada entre llamadas. Pon en el mensaje de sistema lo que el NPC debe recordar (la etapa de la misión, un insulto anterior); tu archivo de partida lo guarda. |
| Un costo por jugador que puedes planear | Créditos prepagados, facturados hasta una millonésima de crédito. Un tope diario por clave detiene un bucle descontrolado. |
Lo que cuestan mil diálogos
| Modelo | Por 1,000 diálogos, sin caché | Por 1,000 diálogos, con inicio repetido en caché |
|---|---|---|
| DeepSeek V4.1 Flash Uncensored | $4.88 | $2.76 |
| GLM 5.3 Flash Uncensored | $2.11 | $1.34 |
Calculado con los precios de hoy: un inicio de 800 tokens, 8 turnos de 25 tokens de entrada y 60 de salida, y la llamada más larga de 1,420 tokens. El razonamiento breve de GLM antes de cada respuesta suma tokens de salida que esta tabla no incluye.
En GLM, los mismos mil diálogos cuestan unos $1.34 antes de su razonamiento breve, pero ese razonamiento ocurre antes de cada frase, lo que cuesta tiempo que un NPC no puede permitirse. Las personalidades cortas son baratas de cualquier modo; lo que suma es una hoja de lore larga en cada llamada.
Una frase de diálogo, en streaming
Ejecútalo en tu servidor de juego, no en el cliente: una clave incluida dentro de un juego puede extraerse. Muestra cada fragmento a medida que llega, para que la burbuja de diálogo se llene mientras el jugador mira.
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)Una frase que tu juego puede usar
Cuando la respuesta del NPC debe cambiar el juego, pide JSON en lugar de prosa en streaming: la frase a mostrar, un estado de ánimo para la animación y una acción para tu código. Describe también esa forma en el prompt.
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"])Muchos jugadores a la vez
- Cada clave admite 120 solicitudes por minuto, y una cuenta puede tener 10 claves. Después de un 429, el encabezado
Retry-Afterindica cuánto esperar. Límites de frecuencia. - Da a cada entorno su propia clave con tope diario: un error que haga un bucle en los diálogos se detiene en el tope, no en tu saldo. Claves y topes.
- Mantén las personalidades cortas y fijas. Una personalidad de unos 1,000 tokens o más que se repite de una llamada a otra se lee de la caché a una fracción del precio.
- Escribe una frase de respaldo para cuando una llamada falle, para que un momento de carga nunca congele una escena. Un
503 busyno cuesta nada.
Qué modelo usar
Usa deepseek-v4.1-flash-uncensored para las frases habladas: responde sin razonar primero, acepta los muestreadores y devuelve JSON. glm-5.3-flash-uncensored es más barato por token ($0.20 de entrada y $0.65 de salida por millón, frente a $0.45 y $1.75), pero razona brevemente antes de cada respuesta, así que sirve para trabajo por el que el jugador no está esperando, como escribir los chismes del pueblo de mañana. Compáralos.
Lo que guardamos de las palabras de los jugadores
Una fila por llamada: la hora, la clave, el modelo, los conteos de tokens, los créditos y el estado, guardada 30 días. Nunca lo que escribió el jugador, nunca la frase del NPC. No se añade nada a tu prompt de personalidad. Lo que guardamos.
Preguntas
¿Es lo bastante rápida para un diálogo en tiempo real?
Para burbujas de diálogo y cuadros de texto, sí: transmite la frase en streaming, mantén max_tokens cerca de 120 y deja el razonamiento apagado. Los tiempos varían con la carga; la página de estado muestra el promedio de cada día. Para una voz con sincronización labial, empieza la voz cuando llegue la primera oración.
¿Pueden los villanos insultar, amenazar y mentir?
Sí. Los modelos escriben personajes oscuros sin un prompt de jailbreak. Solo se rechaza la lista corta de límites estrictos de los términos, con un 422 que no cuesta nada.
¿Puedo llamarla desde dentro del cliente del juego?
Puedes, porque la API admite cualquier origen, pero cualquiera puede extraer una clave de un juego distribuido. Llámala desde tu servidor y mantén un tope diario en la clave.
¿Funciona con Unity, Godot o Unreal?
Cualquier motor que pueda enviar un POST por HTTPS funciona: la API usa el formato de chat completions de OpenAI, así que una biblioteca cliente de OpenAI para tu lenguaje funciona tal cual, apuntada a nuestra URL base.