Aller au contenu

Compatible OpenAI

Une API compatible OpenAI, prête à l'emploi

Gardez le SDK OpenAI et le code que vous avez. Changez trois valeurs, l'URL de base, la clé et le modèle, et vos chat completions tournent sur deux modèles sans censure qui ne gardent rien. Plus bas : le changement en Python, JavaScript et curl, et la liste exacte de ce qui est pris en charge.

Vérifié le 29 octobre 2026

valeurs à changer dans votre code
3
champs de requête optionnels transmis
15
routes, chat completions incluses
4
pour tester avec sk-nokeep-test
$0

Les trois valeurs

URL de base
https://nokeep.ai/v1
Clé API
sk-nokeep-test (free) or your sk-nokeep-… key
Modèle
deepseek-v4.1-flash-uncensored

Les SDK OpenAI officiels lisent l'URL de base et la clé depuis l'environnement ; pour beaucoup de projets, le changement ne demande donc aucune modification de code :

Shell
export OPENAI_BASE_URL="https://nokeep.ai/v1"
export OPENAI_API_KEY="sk-nokeep-…"

Changez ensuite le nom du modèle là où vous l'appelez. Le reste ne change pas.

En Python, JavaScript et curl

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)

reply = client.chat.completions.create(
    model="deepseek-v4.1-flash-uncensored",
    messages=[{"role": "user", "content": "Write a haiku about moving house."}],
)
print(reply.choices[0].message.content)

Le streaming, les outils, la sortie JSON et les images fonctionnent comme dans le format OpenAI. Les bibliothèques et frameworks construits sur le SDK OpenAI prennent la même URL de base et la même clé. Essayez d'abord l'appel directement ici :

Essayez-le ici, gratuitement

Ceci envoie une vraie requête à l’API avec la clé de test. Elle répond une ligne fixe et ne coûte rien.

Ce qui est pris en charge

FonctionnalitéPris en charge
POST /v1/chat/completions, en entier ou en fluxOui, les deux modèles
GET /v1/models et GET /v1/models/{id}Oui, avec la longueur de contexte, la réponse la plus longue et le prix par token
Rôles : system, developer, user, assistant, toolOui
Appels d'outils : tools, tool_choiceOui. Sur GLM, tool_choice n'accepte que auto ou none.
reasoning_effortDeepSeek : none, low, high, max. GLM : low, high.
Images en parties image_url, liens ou URL de donnéesdeepseek-v4.1-flash-uncensored, jusqu'à 10 par requête
response_format, temperature, top_p, stop, seed, pénalitésdeepseek-v4.1-flash-uncensored
stream_options.include_usage, max_tokens, max_completion_tokensOui
Entrée en cache dans usage.prompt_tokens_details.cached_tokensOui, facturée au prix du cache

Chaque champ, modèle par modèle : Chat completions.

Ce qui ne l'est pas

Non pris en chargeCe que vous obtenez
Autres routes : embeddings, images, audio, fichiers, batch, modérations, les API Responses et Assistants, les completions historiques404 not_found, qui nomme les quatre routes disponibles
n différent de 1400 unsupported_n
Un reasoning_effort que le modèle n'accepte pas400 invalid_reasoning_effort, qui nomme ceux qu'il accepte
Une fonction nommée ou required comme tool_choice sur glm-5.3-flash-uncensored400 unsupported_tool_choice
Images vers glm-5.3-flash-uncensored ; parties audio ou vidéo vers l'un ou l'autre modèle400 unsupported_input, qui nomme le modèle qui lit les images
Plus de 10 images, ou plus de 2 000 messages400 too_many_images, 400 invalid_messages
Champs qu'aucun des deux modèles n'accepte, comme logprobs, logit_bias, user ou storeRetirés, et nommés dans l'en-tête x-nokeep-ignored

Rien de non pris en charge n'est deviné ni modifié en silence : une requête est soit refusée avec un code, soit ses champs inutilisés sont nommés dans un en-tête. Chaque code et sa solution : Erreurs.

Petites différences à connaître

  • usage.nokeep_credits indique le coût de l'appel ; les en-têtes x-nokeep-credits et x-nokeep-balance le disent sur une réponse complète.
  • La facturation se fait par crédits prépayés : 1,000 valent $1, à partir de $5, et n'expirent jamais. Un appel refusé ne coûte rien.
  • Limite de débit : 120 requêtes par minute et par clé. Un 429 porte Retry-After.
  • L'hôte de GLM peut être chargé aux heures de pointe ; un appel occupé répond 503 busy avec Retry-After: 5 et ne coûte rien.

Questions

Dois-je changer mon code pour basculer ?

Seulement l'URL de base, la clé et le nom du modèle. Avec les SDK officiels, les deux premières peuvent venir de OPENAI_BASE_URL et OPENAI_API_KEY dans l'environnement.

Cela fonctionne-t-il avec les applications qui acceptent un point d'accès OpenAI personnalisé ?

Oui. Toute application dotée d'un réglage de point d'accès compatible OpenAI ou personnalisé fonctionne. Guides : SillyTavern, Open WebUI, et les agents de code sur la page des agents de code.

Quels modèles OpenAI puis-je appeler ?

Aucun : le format est celui d'OpenAI, mais les modèles sont deepseek-v4.1-flash-uncensored et glm-5.3-flash-uncensored. GET /v1/models liste chaque identifiant.

Existe-t-il un point d'accès pour les embeddings ?

Pas encore. L'API sert les chat completions, la liste des modèles et une route de statut. Les nouvelles routes apparaîtront dans le journal des modifications.

Que devient un champ non pris en charge ?

Il est retiré et nommé dans l'en-tête x-nokeep-ignored, pour voir exactement ce qui n'a pas été utilisé. Les valeurs qui changeraient le sens d'une requête, comme n au-dessus de 1, sont refusées avec un 400 à la place.