Article original : How to Create a DeepSeek R1 API in R with Plumber
Pour créer un chatbot IA et l'intégrer avec une autre plateforme, vous devez communiquer avec un grand modèle de langage en utilisant une API. Cette API reçoit des prompts du client et les envoie au modèle pour générer des réponses.
Dans ce tutoriel, vous apprendrez à créer une telle API en utilisant le grand modèle de langage DeepSeek R1 afin que des applications externes puissent l'appeler. Nous utiliserons le modèle DeepSeek R1, disponible sur HuggingFace, et le package R Plumber pour le déployer en tant qu'API.
HuggingFace est une plateforme open source pour construire, entraîner et déployer des modèles de machine learning, tandis que Plumber est un package R qui expose le code R en tant qu'API RESTful accessibles à d'autres applications via des requêtes HTTP.
Avec cette API, vous pouvez :
Construire des applications IA
Vous connecter à des données externes et extraire des informations significatives
Vous intégrer dans des applications existantes pour fournir un support client, créer des documentations, etc.
Qu'est-ce que le modèle DeepSeek R1 ?
DeepSeek R1 est le dernier grand modèle de langage de l'entreprise chinoise DeepSeek. Il a été conçu pour améliorer les capacités de résolution de problèmes et d'analyse des systèmes IA.
DeepSeek-R1 utilise l'apprentissage par renforcement et le fine-tuning supervisé pour gérer des tâches de raisonnement complexes. Contrairement aux modèles propriétaires, DeepSeek R1 est open-source et gratuit à utiliser.
Prérequis
Inscrivez-vous pour un compte HuggingFace si vous n'en avez pas déjà un
Installez R et R Studio.
Installez le package R
plumberpour construire le point de terminaison de l'APIInstallez le package R
httr2pour travailler avec les requêtes HTTP et interagir avec l'API Hugging Face
Étape 1 : Créez votre dépôt de projet
Vous devez créer un projet R pour créer une application API en R. Cela garantit que tous les fichiers nécessaires pour maintenir votre API en fonctionnement sont conservés ensemble sous le même répertoire. R Studio dispose déjà d'un modèle fourni pour les projets API, vous pouvez donc suivre les étapes ci-dessous pour créer le vôtre.
Dans votre IDE R Studio, cliquez sur le menu Fichier et allez dans Nouveau Projet pour ouvrir l'Assistant Nouveau Projet. Une fois dans l'assistant, sélectionnez Nouveau Répertoire, puis cliquez sur Nouveau Projet API Plumber. Dans le champ nom du répertoire, donnez-lui un nom (par exemple DeepSeek-R1 API), puis cliquez sur Créer le Projet.
Vous verrez un fichier appelé plumber.R avec un modèle d'API d'exemple. C'est là que vous écrirez le code pour vous connecter au modèle DeepSeek R1 sur HuggingFace. Assurez-vous de vider ce modèle avant de continuer.

Ensuite, allez dans votre terminal et créez un fichier .env. C'est là que vous stockerez la clé API Hugging Face.
touch .env

Créez un fichier .gitignore et ajoutez le fichier .env à celui-ci. Cela garantit que les informations sensibles comme les jetons d'accès et les clés API ne sont pas poussées vers votre dépôt Git.

Étape 2 : Créez un jeton d'accès Hugging Face
Nous devons créer un jeton d'accès pour nous connecter aux modèles Hugging Face. Allez dans votre profil, cliquez sur Paramètres, puis cliquez sur Créer un nouveau jeton pour créer votre jeton d'accès pour le dépôt Hugging Face.

Copiez le jeton d'accès et collez-le dans votre fichier .env, et donnez-lui le nom HUGGINGFACE_ACCESS_TOKEN.
HUGGINGFACE_ACCESS_TOKEN="<votre-jeton-d-acces>"
Ensuite, installez le package dotenv, et collez le code suivant en haut de votre fichier plumber.R :
# Charge les variables d'environnement depuis .env
dotenv::load_dot_env()
dotenv::load_dot_env() charge toutes les variables d'environnement dans le fichier .env, les rendant disponibles pour le script plumber.R.
Étape 3 : Construisez le point de terminaison de l'API DeepSeek
Maintenant que nous avons notre environnement de projet configuré et notre jeton API prêt, nous allons écrire le code pour construire l'application API en nous connectant au modèle DeepSeek R1 sur HuggingFace.
Allez dans le fichier plumber.R et chargez les bibliothèques suivantes :
library(plumber)
library(httr2)
Copiez et collez le code suivant dans plumber.R :
api_key <- Sys.getenv("HUGGINGFACE_ACCESS_TOKEN")
#* @post /deepseek_chat
function(prompt) {
url <- "https://huggingface.co/api/inference-proxy/together/v1/chat/completions"
# Crée un objet de requête
req <- request(url) |>
req_auth_bearer_token(api_key) |>
req_body_json(list(
model = "deepseek-ai/DeepSeek-R1",
messages = list(
list(role = "user", content = prompt)
),
max_tokens = 500,
stream = FALSE
))
# Exécute la requête et capture la réponse
res <- req_perform(req)
# Analyse la réponse JSON
parsed_data <- res |>
resp_body_json()
# Extrait le contenu de la réponse
content <- parsed_data$choices
return(content)
}
Voici ce qui se passe dans le code ci-dessus :
Sys.getenvobtient le jeton d'accès HuggingFace et le stocke dans la variableaccess_token.La variable
urlcontient le lien API pour accéder au modèle DeepSeek sur HuggingFace. Vous pouvez obtenir cela en recherchant le nom du modèledeepseek-ai/DeepSeek-R1sur HuggingFace. Allez sur le bouton View Code, et sous l'onglet cURL, copiez l'URL de l'API

#* @post /deepseek_chatsignifie que le point de terminaison fait une requête POST via le chemin/deepseek_chat.Ce point de terminaison prend un argument
prompt, un texte, ou une question qu'un utilisateur est censé donner.L'objet
reqest une chaîne de diverses opérations, qui fait unerequest()à l'url, puis prend laapi_keyà l'intérieur de la fonctionreq_auth_bearer_token(). Les propriétés du modèle telles que le nom dumodel,role,prompt, etmax_tokenssont passées à l'objetreqvia la fonctionreq_body_json.La variable
headerscontient l'autorisation requise pour faire une requête à l'API HuggingFace.La requête est exécutée et capturée dans un objet de réponse
resen utilisant la fonctionreq_perform().L'objet
resretourne un objet JSON, qui est maintenant analysé en R en utilisant la fonctionresp_body_json().Le
contentdeparsed_dataest maintenant retourné afin que vous puissiez extraire les informations dont vous avez besoin de l'application pour laquelle vous souhaitez utiliser l'API.
Étape 4 : Testez le point de terminaison de l'API
Exécutons le point de terminaison de l'API pour voir comment l'application se comporte. Cliquez sur Run API. Cela ouvrira automatiquement le point de terminaison de l'API dans votre navigateur à l'URL http://127.0.0.1:8634/docs/.

Cliquez sur le menu déroulant du point de terminaison de l'API, fournissez un prompt, et cliquez sur le bouton Execute. Vous devriez recevoir une réponse en quelques minutes.

Conclusion
Avec votre API, vous pouvez faire des inférences vers le modèle Hugging Face et construire des applications IA en R ou dans d'autres langages de programmation. Vous devez héberger votre API pour la rendre accessible aux clients en ligne. Il existe diverses façons d'héberger une application R Plumber : vous pouvez utiliser Docker ou l'héberger sur DigitalOcean en utilisant le package R plumberDeploy. Cependant, la manière la plus simple et la plus facile est d'utiliser Posit Connect.
Vous pouvez utiliser la même approche utilisée dans ce tutoriel pour essayer d'autres modèles HuggingFace, construire une API pour générer des images ou traduire différentes langues. R Plumber est facile à utiliser, et la documentation fournit de nombreuses ressources.
Si vous êtes intéressé par le déploiement de modèles en utilisant R Plumber, vous pouvez consulter cet article sur la façon de déployer un modèle de séries temporelles construit sur Prophet en utilisant R Plumber.
Si vous trouvez cet article intéressant, veuillez consulter mes autres articles sur learndata.xyz.