FR ▾
Obtenir une clé API

SDK API DeepSeek : utilisez le SDK OpenAI et changez d'endpoint

Vous n’avez pas besoin d’installer de client spécifique pour une configuration SDK API DeepSeek : les APIs de style DeepSeek suivent le format OpenAI, donc le SDK OpenAI fonctionne avec une URL de base différente. Ce même fait vous permet de passer à un autre endpoint en modifiant trois valeurs.

Mis à jour le

Un bloc de connexion alimentant plusieurs tours de serveur, illustrant le changement d'endpoint avec un seul SDK

Points clés

  • Les SDK Python et Node.js OpenAI fonctionnent avec n'importe quel endpoint compatible OpenAI ; vous modifiez l'URL de base, la clé et le nom du modèle.
  • Conservez ces trois valeurs dans des variables d'environnement afin que le changement d'endpoint ne nécessite aucune modification de code.
  • Le changement est sûr pour le chat simple, le streaming et les appels de fonctions, mais testez les fonctionnalités spécifiques au modèle avant de vous y fier.
  • Pour cet endpoint, utilisez https://api.deepseekapi.top/v1 et l'ID de modèle uncensored.

Pourquoi le SDK OpenAI est le SDK API DeepSeek

Lorsque les gens recherchent un SDK API DeepSeek, ils s'attendent à un package portant le nom du fournisseur. En pratique, la documentation officielle de DeepSeek décrit l'appel de son API via le SDK OpenAI avec une URL de base différente, car l'API suit le format de requête et de réponse OpenAI. Consultez leur documentation actuelle pour l'URL de base exacte et les noms de modèles ; ils sont la référence pour leur service.

La conséquence est utile. Tout code écrit pour la bibliothèque cliente OpenAI peut communiquer avec n'importe quel serveur implémentant les mêmes endpoints, qui sont ici POST /v1/chat/completions, POST /v1/responses et GET /v1/models. Passer d'un fournisseur à un autre devient un changement de configuration plutôt qu'une réécriture. La suite de cet article présente le modèle en Python, Node et curl, puis une structure qui rend le changement trivial.

Configuration Python

Installez le package officiel et pointez-le vers l'endpoint :

pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://api.deepseekapi.top/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise technical assistant."},
        {"role": "user", "content": "Explain idempotency in two sentences."},
    ],
)
print(resp.choices[0].message.content)
print(resp.usage)

Obtenez une clé sur la page Clé API. Les nouveaux utilisateurs peuvent réclamer 0,50 $ de crédit d'essai en un clic, sans carte. L'article API DeepSeek en Python approfondit ce langage, y compris la gestion des erreurs.

Configuration Node.js

npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.deepseekapi.top/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  stream: true,
  messages: [{ role: "user", content: "List four uses of a message queue." }],
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Le motif est identique : URL de base, clé, modèle. Le streaming renvoie des Server-Sent Events, et la bibliothèque les transforme en itérateur asynchrone. L’appel d'outils suit le même schéma que les autres APIs compatibles OpenAI : passez tools, lisez les tool_calls en streaming, et renvoyez les résultats sous forme de messages role: "tool".

Rendre l'endpoint interchangeable

Ne mettez pas les trois valeurs en dur. Lisez-les depuis l'environnement et enveloppez la création du client dans une seule fonction. Ainsi, passer d'un endpoint à un autre signifie modifier un fichier .env, et non le code source.

import os
from openai import OpenAI

def make_client():
    return OpenAI(
        base_url=os.environ.get("LLM_BASE_URL", "https://api.deepseekapi.top/v1"),
        api_key=os.environ["LLM_API_KEY"],
    )

MODEL = os.environ.get("LLM_MODEL", "uncensored")

def ask(prompt: str) -> str:
    r = make_client().chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": prompt}],
        temperature=0.7,
    )
    return r.choices[0].message.content

Un autre fournisseur n'a besoin que de trois variables d'environnement. Les SDK officiels lisent également OPENAI_API_BASE et OPENAI_API_KEY dans certaines versions, mais des variables explicites sont plus claires et évitent les surprises lorsque vous exécutez plusieurs fournisseurs simultanément.

Si vous utilisez TypeScript ou un autre langage, l'idée est la même : une fonction d'usine, trois variables, aucun nom de fournisseur dispersé dans la base de code. Une erreur courante est de laisser le nom du fournisseur s'infiltrer dans les noms de fonctions, les messages de journal et les noms de variables, ce qui rend un échange ultérieur plus difficile que nécessaire. Nommez les choses selon la tâche (ask, summarise) plutôt que selon le fournisseur.

Conservez un petit test qui envoie un prompt fixe unique via ask() et vérifie qu’il y a une réponse non vide. Exécutez-le après chaque changement d’endpoint ; il détecte les URL et clés incorrectes en quelques secondes.

Ce qui reste identique et ce qui change lors du changement

ÉlémentReste identiquePeut changer
Forme de la requêtemessages, rôles, temperature, top_p, stopParamètres optionnels non pris en charge par un fournisseur
Diffusion en continuSSE avec des blocs de donnéesL'apparition de l'utilisation dans le flux
Appel de fonctionstools, tool_choice, tool_callsLa précision avec laquelle le modèle suit un schéma
Nom du modèleChamp obligatoireLa valeur elle-même : ici, c'est uncensored
Fenêtre de contextePrompt plus complétionTaille : 100 000 tokens ici
ComportementFormat de chatStyle, points forts, comportement de refus

La dernière ligne est celle qui surprend les gens. Un endpoint est compatible au niveau du protocole, pas au niveau du comportement. Deux fournisseurs peuvent accepter des requêtes identiques et donner des réponses très différentes. Le modèle ici est un modèle à poids ouverts unique d'un fournisseur indépendant, ajusté pour répondre sans refus de contenu pour un usage adulte légal, et ce n'est pas l'API officielle de DeepSeek ou d'un autre laboratoire. Retestez les prompts que vous avez ajustés pour un autre modèle.

Fonctionnalités disponibles et non disponibles sur cet endpoint

  • Pris en charge : les complétions de chat, le format Responses, la liste des modèles, le streaming, l’appel de fonctions, le mode JSON (response_format avec json_object), et le transit transparent de la température, top_p, stop, seed et des pénalités.
  • Non proposé : génération d'images, d'audio ou de vidéo, embeddings, fine-tuning.
  • Limites : une fenêtre de 100 000 tokens, un corps maximum de 8 MB, 8 requêtes simultanées et 300 par minute sur une clé complète (2 et 60 sur une clé d'essai).
  • Erreurs : HTTP 429 avec le code rate_limited ou concurrency, et un en-tête Retry-After: 5 en cas de surcharge temporaire.

Si votre code appelle un endpoint d’embeddings, vous aurez besoin d’un autre fournisseur pour cette partie et pourrez conserver le chat ici. La séparation par tâche est une raison courante du modèle de variables d’environnement ci-dessus.

Liste de vérification de migration

Lorsque vous remplacez un endpoint par un autre dans un projet existant, parcourez une courte liste au lieu de tout modifier à la fois.

  1. Prouver l’endpoint. Envoyez une requête avec curl et confirmez que vous recevez du texte. Appelez GET /v1/models et vérifiez que l’id uncensored est répertorié.
  2. Modifier les trois valeurs. URL de base, clé, nom du modèle, rien d'autre. Ne touchez pas encore aux prompts.
  3. Exécuter vos tests existants. Si vous avez des tests de régression de prompt, exécutez-les et notez ceux qui échouent. Les échecs sont généralement comportementaux, comme un format de sortie différent, et non des erreurs de protocole.
  4. Vérifiez les paramètres. Supprimez les options inutiles pour l’endpoint. Conservez temperature, top_p, stop et seed si vous les utilisez.
  5. Testez le streaming et les outils séparément. Les bugs de streaming se cachent souvent dans le code client qui suppose une disposition spécifique des fragments. Les appels d’outils nécessitent un schéma que le modèle suit bien, donc testez avec vos vraies fonctions.
  6. Mesurez le coût et la latence sur un trafic réel. Comparez une journée de requêtes, pas un seul prompt.

Faites cela dans une branche ou avec un indicateur de fonctionnalité qui dirige une petite partie du trafic vers le nouvel endpoint. Comme le code client est partagé, revenir en arrière consiste à modifier une variable d’environnement.

Gérez les nouvelles tentatives et suivez l’utilisation

Les SDK tentent automatiquement certaines erreurs par défaut, mais vous devez tout de même gérer les 429 vous-même, car les limites de concurrence sont réelles en production. Capturez l’exception de limite de débit, attendez le nombre de secondes indiqué dans Retry-After (5 en cas de surcharge), et réessayez quelques fois. Les requêtes échouées ne sont pas facturées, donc les tentatives sont sûres pour votre solde.

Journalisez usage.prompt_tokens et usage.completion_tokens à chaque appel. La tarification est de 0,15 $ par 1 M de tokens d'entrée et de 0,50 $ par 1 M de tokens de sortie, donc un appel avec 2 000 tokens d'entrée et 600 tokens de sortie coûte 2 000 × 0,15 $ / 1 M + 600 × 0,50 $ / 1 M = 0,0003 $ + 0,0003 $ = 0,0006 $. Les en-têtes de réponse incluent également X-Balance-USD pour le crédit restant. Consultez la page tarification pour les recharges et les bonus, ainsi que la documentation pour la liste complète des paramètres.

Éditeurs et autres outils

Les trois valeurs se répercutent sur tout outil avec un paramètre de fournisseur compatible OpenAI. L’article sur l’utilisation d’une API de style DeepSeek dans Cursor explique un tel éditeur. Dans chaque outil, les champs sont légèrement différemment libellés, mais vous saisissez toujours l’URL de base se terminant par /v1, la clé et le nom du modèle.

Questions et réponses

Existe-t-il un SDK officiel DeepSeek à installer ?

Vous n'avez pas besoin d'un package spécifique au fournisseur. DeepSeek documente l'utilisation du SDK OpenAI avec une URL de base différente ; consultez leur documentation pour les détails actuels.

Quelles sont les trois valeurs à modifier pour utiliser cet endpoint ?

L’URL de base (https://api.deepseekapi.top/v1), votre clé API et l’id de modèle uncensored.

Mon code OpenAI existant fonctionnera-t-il sans modification ?

Le chat, le streaming, le mode JSON et l’appel d’outils suivent le même format, donc dans l’ensemble oui. Les embeddings, les images et l’audio ne sont pas proposés, et les réponses diffèrent car le modèle est différent.

Le SDK envoie-t-il correctement la clé ?

Oui, il envoie automatiquement Authorization: Bearer avec votre clé.

Votre clé n'est qu'à un formulaire d'ici

Créez un compte, copiez la clé, modifiez l'URL de base. C'est toute la configuration.

Obtenir une clé API