Comment utiliser le modèle de raisonnement DeepSeek-R1
Important
Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Dans cet article, vous allez découvrir DeepSeek-R1 et comment les utiliser. DeepSeek-R1 excelle dans les tâches de raisonnement à l’aide d’un processus de formation pas à pas, tel que le langage, le raisonnement scientifique et les tâches de codage. Il comprend des paramètres totaux de 671B avec des paramètres actifs de 37B et une longueur de contexte de 128 Ko.
Important
Les modèles qui sont en préversion comportent la mention préversion sur leur carte dans le catalogue de modèles.
DeepSeek-R1
DeepSeek-R1 s’appuie sur la progression des modèles axés sur le raisonnement antérieurs qui ont amélioré les performances en étendant le raisonnement de la chaîne de pensée (CoT). DeepSeek-R1 va plus loin en combinant l’apprentissage par renforcement (RL) avec un réglage précis sur les jeux de données soigneusement choisis. Il a évolué à partir d’une version antérieure, DeepSeek-R1-Zero, qui s’appuyait uniquement sur la liste de révocation de certificats et a montré des compétences de raisonnement fortes, mais avait des problèmes tels que des sorties difficiles à lire et des incohérences linguistiques. Pour répondre à ces limitations, DeepSeek-R1 intègre une petite quantité de données de démarrage à froid et suit un pipeline d’entraînement affiné qui fusionne la liste de révocation orientée raisonnement avec des réglages précis supervisés sur les jeux de données organisés, ce qui entraîne un modèle qui obtient des performances de pointe sur les benchmarks de raisonnement.
Vous pouvez en apprendre davantage sur les modèles dans leur fiche modèle respective :
Prérequis
Pour utiliser DeepSeek-R1 avec Azure AI Foundry, vous avez besoin des prérequis suivants :
Un modèle de déploiement
Déploiement sur des API sans serveur
DeepSeek-R1 peut être déployé sur des points de terminaison d'API sans serveur avec une facturation à l'utilisation. Ce type de déploiement permet de consommer des modèles en tant qu’API sans les héberger sur votre abonnement, tout en conservant la sécurité et la conformité de l’entreprise dont les organisations ont besoin.
Le déploiement vers un point de terminaison API serverless ne nécessite pas de quota de votre abonnement. Si votre modèle n’est pas déjà déployé, utilisez Azure AI Studio, le kit de développement logiciel (SDK) Azure Machine Learning pour Python, l’interface de ligne de commande Azure ou les modèles ARM pour déployer le modèle en tant qu’API serverless.
Le package d’inférence installé
Vous pouvez utiliser des prédictions à partir de ce modèle à l’aide du package azure-ai-inference
avec Python. Pour installer ce package, vous avez besoin des prérequis suivants :
- Python 3.8 ou version ultérieure installée, y compris pip.
- L’URL du point de terminaison. Pour construire la bibliothèque cliente, vous devez passer l’URL du point de terminaison. L’URL du point de terminaison est sous la forme
https://your-host-name.your-azure-region.inference.ai.azure.com
, oùyour-host-name
est le nom d’hôte unique de votre modèle de déploiement etyour-azure-region
est la région Azure où le modèle est déployé (par exemple, eastus2). - En fonction de vos préférences de modèle de déploiement et d’authentification, vous aurez besoin d’une clé pour vous authentifier auprès du service ou des informations d’identification Microsoft Entra ID. La clé est une chaîne de 32 caractères.
Une fois ces conditions préalables remplies, installez le package d’inférence Azure AI avec la commande suivante :
pip install azure-ai-inference
En savoir plus sur le Package d’inférence et les informations de référence Azure AI.
Travailler avec des complétions de conversation
Dans cette section, vous utilisez l’API d’inférence de modèle Azure AI avec un modèle de complétion de conversation pour les conversations.
Conseil
L’API d’inférence de modèle Azure AI vous permet de communiquer avec la plupart des modèles déployés dans Azure AI Foundry avec le même code et la même structure, y compris DeepSeek-R1
Créer un client pour consommer le modèle
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
client = ChatCompletionsClient(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)
Obtenir les fonctionnalités du modèle
L’itinéraire /info
retourne des informations sur le modèle déployé sur le point de terminaison. Renvoyez les informations du modèle en appelant la méthode suivante :
model_info = client.get_model_info()
La réponse est comme suit :
print("Model name:", model_info.model_name)
print("Model type:", model_info.model_type)
print("Model provider name:", model_info.model_provider_name)
Model name: DeepSeek-R1
Model type: chat-completions
Model provider name: DeepSeek
Créer une requête de complétion de conversation
L’exemple suivant vous montre comment créer une requête de complétions de conversation de base sur le modèle.
from azure.ai.inference.models import SystemMessage, UserMessage
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
)
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
print("Response:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: DeepSeek-R1
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Examinez la section usage
dans la réponse pour voir le nombre de jetons utilisés pour l’invite, le nombre total de jetons générés et le nombre de jetons utilisés pour la complétion.
Compréhension du raisonnement
Certains modèles de raisonnement, comme DeepSeek-R1, génèrent des achèvements et incluent le raisonnement derrière lui. Le raisonnement associé à l’achèvement est inclus dans le contenu de la réponse dans les balises <think>
et </think>
. Le modèle peut sélectionner les scénarios à générer du contenu de raisonnement. Par exemple :
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
)
Vous pouvez extraire le contenu du raisonnement de la réponse pour comprendre le processus de pensée du modèle comme suit :
import re
match = re.match(r"<think>(.*?)</think>(.*)", response.choices[0].message.content, re.DOTALL)
print("Response:", )
if match:
print("\tThinking:", match.group(1))
print("\tAnswer:", match.group(2))
else:
print("\tAnswer:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.
Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Diffuser du contenu
Par défaut, l’API de complétion retourne l’intégralité du contenu généré dans une réponse unique. Si vous générez des complétions longues, l’attente de la réponse peut durer plusieurs secondes.
Vous pouvez diffuser en continu le contenu pour l’obtenir à mesure qu’il est généré. Diffuser le contenu en continu vous permet de commencer à traiter la complétion à mesure que le contenu devient disponible. Ce mode renvoie un objet qui diffuse la réponse en tant qu’événements envoyés par le serveur contenant uniquement des données. Extrayez les blocs du champ delta, plutôt que le champ de message.
result = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
temperature=0,
top_p=1,
max_tokens=2048,
stream=True,
)
Pour diffuser en continu des complétions, définissez stream=True
lorsque vous appelez le modèle.
Pour visualiser la sortie, définissez une fonction d’assistance pour imprimer le flux.
def print_stream(result):
"""
Prints the chat completion with streaming.
"""
for update in result:
if update.choices:
print(update.choices[0].delta.content, end="")
Vous pouvez visualiser la façon dont la diffusion en continu génère du contenu :
print_stream(result)
Appliquer la sécurité du contenu
L’API Inférence de modèle Azure AI prend en charge Azure AI Sécurité du Contenu. Lorsque vous utilisez des déploiements avec la sécurité du contenu Azure AI activée, les entrées et les sorties passent par un ensemble de modèles de classification visant à détecter et à empêcher la sortie de contenu dangereux. Le système de filtrage de contenu (préversion) détecte et prend des mesures sur des catégories spécifiques de contenu potentiellement dangereux dans les invites d’entrée et les exécutions de sortie.
L’exemple suivant montre comment gérer les évènements lorsque le modèle détecte du contenu dangereux dans l’invite d’entrée et que la sécurité du contenu est activée.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
try:
response = client.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = ex.response.json()
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise
raise
Conseil
Pour en savoir plus sur la façon dont vous pouvez configurer et contrôler les paramètres de sécurité du contenu Azure AI, consultez la Documentation Azure AI Sécurité du Contenu.
DeepSeek-R1
DeepSeek-R1 s’appuie sur la progression des modèles axés sur le raisonnement antérieurs qui ont amélioré les performances en étendant le raisonnement de la chaîne de pensée (CoT). DeepSeek-R1 va plus loin en combinant l’apprentissage par renforcement (RL) avec un réglage précis sur les jeux de données soigneusement choisis. Il a évolué à partir d’une version antérieure, DeepSeek-R1-Zero, qui s’appuyait uniquement sur la liste de révocation de certificats et a montré des compétences de raisonnement fortes, mais avait des problèmes tels que des sorties difficiles à lire et des incohérences linguistiques. Pour répondre à ces limitations, DeepSeek-R1 intègre une petite quantité de données de démarrage à froid et suit un pipeline d’entraînement affiné qui fusionne la liste de révocation orientée raisonnement avec des réglages précis supervisés sur les jeux de données organisés, ce qui entraîne un modèle qui obtient des performances de pointe sur les benchmarks de raisonnement.
Vous pouvez en apprendre davantage sur les modèles dans leur fiche modèle respective :
Prérequis
Pour utiliser DeepSeek-R1 avec Azure AI Foundry, vous avez besoin des prérequis suivants :
Un modèle de déploiement
Déploiement sur des API sans serveur
DeepSeek-R1 peut être déployé sur des points de terminaison d'API sans serveur avec une facturation à l'utilisation. Ce type de déploiement permet de consommer des modèles en tant qu’API sans les héberger sur votre abonnement, tout en conservant la sécurité et la conformité de l’entreprise dont les organisations ont besoin.
Le déploiement vers un point de terminaison API serverless ne nécessite pas de quota de votre abonnement. Si votre modèle n’est pas déjà déployé, utilisez Azure AI Studio, le kit de développement logiciel (SDK) Azure Machine Learning pour Python, l’interface de ligne de commande Azure ou les modèles ARM pour déployer le modèle en tant qu’API serverless.
Le package d’inférence installé
Vous pouvez consommer des prédictions depuis ce modèle en utilisant le package @azure-rest/ai-inference
de npm
. Pour installer ce package, vous avez besoin des prérequis suivants :
- Versions LTS de
Node.js
avecnpm
. - L’URL du point de terminaison. Pour construire la bibliothèque cliente, vous devez passer l’URL du point de terminaison. L’URL du point de terminaison est sous la forme
https://your-host-name.your-azure-region.inference.ai.azure.com
, oùyour-host-name
est le nom d’hôte unique de votre modèle de déploiement etyour-azure-region
est la région Azure où le modèle est déployé (par exemple, eastus2). - En fonction de vos préférences de modèle de déploiement et d’authentification, vous aurez besoin d’une clé pour vous authentifier auprès du service ou des informations d’identification Microsoft Entra ID. La clé est une chaîne de 32 caractères.
Une fois ces prérequis remplis, installez la bibliothèque Azure Inference pour JavaScript avec la commande suivante :
npm install @azure-rest/ai-inference
Travailler avec des complétions de conversation
Dans cette section, vous utilisez l’API d’inférence de modèle Azure AI avec un modèle de complétion de conversation pour les conversations.
Conseil
L’API d’inférence de modèle Azure AI vous permet de communiquer avec la plupart des modèles déployés dans Azure AI Foundry avec le même code et la même structure, y compris DeepSeek-R1
Créer un client pour consommer le modèle
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";
const client = new ModelClient(
process.env.AZURE_INFERENCE_ENDPOINT,
new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);
Obtenir les fonctionnalités du modèle
L’itinéraire /info
retourne des informations sur le modèle déployé sur le point de terminaison. Renvoyez les informations du modèle en appelant la méthode suivante :
var model_info = await client.path("/info").get()
La réponse est comme suit :
console.log("Model name: ", model_info.body.model_name)
console.log("Model type: ", model_info.body.model_type)
console.log("Model provider name: ", model_info.body.model_provider_name)
Model name: DeepSeek-R1
Model type: chat-completions
Model provider name: DeepSeek
Créer une requête de complétion de conversation
L’exemple suivant vous montre comment créer une requête de complétions de conversation de base sur le modèle.
var messages = [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "How many languages are in the world?" },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
}
});
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
if (isUnexpected(response)) {
throw response.body.error;
}
console.log("Response: ", response.body.choices[0].message.content);
console.log("Model: ", response.body.model);
console.log("Usage:");
console.log("\tPrompt tokens:", response.body.usage.prompt_tokens);
console.log("\tTotal tokens:", response.body.usage.total_tokens);
console.log("\tCompletion tokens:", response.body.usage.completion_tokens);
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: DeepSeek-R1
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Examinez la section usage
dans la réponse pour voir le nombre de jetons utilisés pour l’invite, le nombre total de jetons générés et le nombre de jetons utilisés pour la complétion.
Compréhension du raisonnement
Certains modèles de raisonnement, comme DeepSeek-R1, génèrent des achèvements et incluent le raisonnement derrière lui. Le raisonnement associé à l’achèvement est inclus dans le contenu de la réponse dans les balises <think>
et </think>
. Le modèle peut sélectionner les scénarios à générer du contenu de raisonnement. Par exemple :
var messages = [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "How many languages are in the world?" },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
}
});
Vous pouvez extraire le contenu du raisonnement de la réponse pour comprendre le processus de pensée du modèle comme suit :
var content = response.body.choices[0].message.content
var match = content.match(/<think>(.*?)<\/think>(.*)/s);
console.log("Response:");
if (match) {
console.log("\tThinking:", match[1]);
console.log("\Answer:", match[2]);
}
else {
console.log("Response:", content);
}
console.log("Model: ", response.body.model);
console.log("Usage:");
console.log("\tPrompt tokens:", response.body.usage.prompt_tokens);
console.log("\tTotal tokens:", response.body.usage.total_tokens);
console.log("\tCompletion tokens:", response.body.usage.completion_tokens);
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.
Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Diffuser du contenu
Par défaut, l’API de complétion retourne l’intégralité du contenu généré dans une réponse unique. Si vous générez des complétions longues, l’attente de la réponse peut durer plusieurs secondes.
Vous pouvez diffuser en continu le contenu pour l’obtenir à mesure qu’il est généré. Diffuser le contenu en continu vous permet de commencer à traiter la complétion à mesure que le contenu devient disponible. Ce mode renvoie un objet qui diffuse la réponse en tant qu’événements envoyés par le serveur contenant uniquement des données. Extrayez les blocs du champ delta, plutôt que le champ de message.
var messages = [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "How many languages are in the world?" },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
}
}).asNodeStream();
Pour diffuser les complétions en continu, utilisez .asNodeStream()
lorsque vous appelez le modèle.
Vous pouvez visualiser la façon dont la diffusion en continu génère du contenu :
var stream = response.body;
if (!stream) {
stream.destroy();
throw new Error(`Failed to get chat completions with status: ${response.status}`);
}
if (response.status !== "200") {
throw new Error(`Failed to get chat completions: ${response.body.error}`);
}
var sses = createSseStream(stream);
for await (const event of sses) {
if (event.data === "[DONE]") {
return;
}
for (const choice of (JSON.parse(event.data)).choices) {
console.log(choice.delta?.content ?? "");
}
}
Appliquer la sécurité du contenu
L’API Inférence de modèle Azure AI prend en charge Azure AI Sécurité du Contenu. Lorsque vous utilisez des déploiements avec la sécurité du contenu Azure AI activée, les entrées et les sorties passent par un ensemble de modèles de classification visant à détecter et à empêcher la sortie de contenu dangereux. Le système de filtrage de contenu (préversion) détecte et prend des mesures sur des catégories spécifiques de contenu potentiellement dangereux dans les invites d’entrée et les exécutions de sortie.
L’exemple suivant montre comment gérer les évènements lorsque le modèle détecte du contenu dangereux dans l’invite d’entrée et que la sécurité du contenu est activée.
try {
var messages = [
{ role: "system", content: "You are an AI assistant that helps people find information." },
{ role: "user", content: "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills." },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
}
});
console.log(response.body.choices[0].message.content);
}
catch (error) {
if (error.status_code == 400) {
var response = JSON.parse(error.response._content);
if (response.error) {
console.log(`Your request triggered an ${response.error.code} error:\n\t ${response.error.message}`);
}
else
{
throw error;
}
}
}
Conseil
Pour en savoir plus sur la façon dont vous pouvez configurer et contrôler les paramètres de sécurité du contenu Azure AI, consultez la Documentation Azure AI Sécurité du Contenu.
DeepSeek-R1
DeepSeek-R1 s’appuie sur la progression des modèles axés sur le raisonnement antérieurs qui ont amélioré les performances en étendant le raisonnement de la chaîne de pensée (CoT). DeepSeek-R1 va plus loin en combinant l’apprentissage par renforcement (RL) avec un réglage précis sur les jeux de données soigneusement choisis. Il a évolué à partir d’une version antérieure, DeepSeek-R1-Zero, qui s’appuyait uniquement sur la liste de révocation de certificats et a montré des compétences de raisonnement fortes, mais avait des problèmes tels que des sorties difficiles à lire et des incohérences linguistiques. Pour répondre à ces limitations, DeepSeek-R1 intègre une petite quantité de données de démarrage à froid et suit un pipeline d’entraînement affiné qui fusionne la liste de révocation orientée raisonnement avec des réglages précis supervisés sur les jeux de données organisés, ce qui entraîne un modèle qui obtient des performances de pointe sur les benchmarks de raisonnement.
Vous pouvez en apprendre davantage sur les modèles dans leur fiche modèle respective :
Prérequis
Pour utiliser DeepSeek-R1 avec Azure AI Foundry, vous avez besoin des prérequis suivants :
Un modèle de déploiement
Déploiement sur des API sans serveur
DeepSeek-R1 peut être déployé sur des points de terminaison d'API sans serveur avec une facturation à l'utilisation. Ce type de déploiement permet de consommer des modèles en tant qu’API sans les héberger sur votre abonnement, tout en conservant la sécurité et la conformité de l’entreprise dont les organisations ont besoin.
Le déploiement vers un point de terminaison API serverless ne nécessite pas de quota de votre abonnement. Si votre modèle n’est pas déjà déployé, utilisez Azure AI Studio, le kit de développement logiciel (SDK) Azure Machine Learning pour Python, l’interface de ligne de commande Azure ou les modèles ARM pour déployer le modèle en tant qu’API serverless.
Le package d’inférence installé
Vous pouvez consommer les prédictions de ce modèle en utilisant le package Azure.AI.Inference
de NuGet. Pour installer ce package, vous avez besoin des prérequis suivants :
- L’URL du point de terminaison. Pour construire la bibliothèque cliente, vous devez passer l’URL du point de terminaison. L’URL du point de terminaison est sous la forme
https://your-host-name.your-azure-region.inference.ai.azure.com
, oùyour-host-name
est le nom d’hôte unique de votre modèle de déploiement etyour-azure-region
est la région Azure où le modèle est déployé (par exemple, eastus2). - En fonction de vos préférences de modèle de déploiement et d’authentification, vous aurez besoin d’une clé pour vous authentifier auprès du service ou des informations d’identification Microsoft Entra ID. La clé est une chaîne de 32 caractères.
Une fois ces prérequis remplis, installez la bibliothèque d’inférence Azure AI avec la commande suivante :
dotnet add package Azure.AI.Inference --prerelease
Vous pouvez également vous authentifier avec Microsoft Entra ID (anciennement Azure Active Directory). Pour utiliser les fournisseurs d’informations d’identification fournis avec le kit de développement logiciel (SDK) Azure, installez le package Azure.Identity
:
dotnet add package Azure.Identity
Importez les espaces de noms suivants :
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
Cet exemple utilise également les espaces de noms suivants, mais vous n’en aurez peut-être pas toujours besoin :
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Travailler avec des complétions de conversation
Dans cette section, vous utilisez l’API d’inférence de modèle Azure AI avec un modèle de complétion de conversation pour les conversations.
Conseil
L’API d’inférence de modèle Azure AI vous permet de communiquer avec la plupart des modèles déployés dans Azure AI Foundry avec le même code et la même structure, y compris DeepSeek-R1
Créer un client pour consommer le modèle
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL")),
"DeepSeek-R1"
);
Obtenir les fonctionnalités du modèle
L’itinéraire /info
retourne des informations sur le modèle déployé sur le point de terminaison. Renvoyez les informations du modèle en appelant la méthode suivante :
Response<ModelInfo> modelInfo = client.GetModelInfo();
La réponse est comme suit :
Console.WriteLine($"Model name: {modelInfo.Value.ModelName}");
Console.WriteLine($"Model type: {modelInfo.Value.ModelType}");
Console.WriteLine($"Model provider name: {modelInfo.Value.ModelProviderName}");
Model name: DeepSeek-R1
Model type: chat-completions
Model provider name: DeepSeek
Créer une requête de complétion de conversation
L’exemple suivant vous montre comment créer une requête de complétions de conversation de base sur le modèle.
ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are a helpful assistant."),
new ChatRequestUserMessage("How many languages are in the world?")
},
};
Response<ChatCompletions> response = client.Complete(requestOptions);
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
Console.WriteLine($"Response: {response.Value.Content}");
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens}");
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: DeepSeek-R1
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Examinez la section usage
dans la réponse pour voir le nombre de jetons utilisés pour l’invite, le nombre total de jetons générés et le nombre de jetons utilisés pour la complétion.
Compréhension du raisonnement
Certains modèles de raisonnement, comme DeepSeek-R1, génèrent des achèvements et incluent le raisonnement derrière lui. Le raisonnement associé à l’achèvement est inclus dans le contenu de la réponse dans les balises <think>
et </think>
. Le modèle peut sélectionner les scénarios à générer du contenu de raisonnement. Par exemple :
ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are a helpful assistant."),
new ChatRequestUserMessage("How many languages are in the world?")
},
};
Response<ChatCompletions> response = client.Complete(requestOptions);
Vous pouvez extraire le contenu du raisonnement de la réponse pour comprendre le processus de pensée du modèle comme suit :
Regex regex = new Regex(pattern, RegexOptions.Singleline);
Match match = regex.Match(response.Value.Content);
Console.WriteLine("Response:");
if (match.Success)
{
Console.WriteLine($"\tThinking: {match.Groups[1].Value}");
Console.WriteLine($"\tAnswer: {match.Groups[2].Value}");
else
{
Console.WriteLine($"Response: {response.Value.Content}");
}
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens}");
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.
Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Diffuser du contenu
Par défaut, l’API de complétion retourne l’intégralité du contenu généré dans une réponse unique. Si vous générez des complétions longues, l’attente de la réponse peut durer plusieurs secondes.
Vous pouvez diffuser en continu le contenu pour l’obtenir à mesure qu’il est généré. Diffuser le contenu en continu vous permet de commencer à traiter la complétion à mesure que le contenu devient disponible. Ce mode renvoie un objet qui diffuse la réponse en tant qu’événements envoyés par le serveur contenant uniquement des données. Extrayez les blocs du champ delta, plutôt que le champ de message.
static async Task StreamMessageAsync(ChatCompletionsClient client)
{
ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are a helpful assistant."),
new ChatRequestUserMessage("How many languages are in the world? Write an essay about it.")
},
MaxTokens=4096
};
StreamingResponse<StreamingChatCompletionsUpdate> streamResponse = await client.CompleteStreamingAsync(requestOptions);
await PrintStream(streamResponse);
}
Pour diffuser en continu des complétions, utilisez la méthode CompleteStreamingAsync
lorsque vous appelez le modèle. Notez que dans cet exemple, l’appel est encapsulé dans une méthode asynchrone.
Pour visualiser la sortie, définissez une méthode asynchrone pour imprimer le flux dans la console.
static async Task PrintStream(StreamingResponse<StreamingChatCompletionsUpdate> response)
{
await foreach (StreamingChatCompletionsUpdate chatUpdate in response)
{
if (chatUpdate.Role.HasValue)
{
Console.Write($"{chatUpdate.Role.Value.ToString().ToUpperInvariant()}: ");
}
if (!string.IsNullOrEmpty(chatUpdate.ContentUpdate))
{
Console.Write(chatUpdate.ContentUpdate);
}
}
}
Vous pouvez visualiser la façon dont la diffusion en continu génère du contenu :
StreamMessageAsync(client).GetAwaiter().GetResult();
Appliquer la sécurité du contenu
L’API Inférence de modèle Azure AI prend en charge Azure AI Sécurité du Contenu. Lorsque vous utilisez des déploiements avec la sécurité du contenu Azure AI activée, les entrées et les sorties passent par un ensemble de modèles de classification visant à détecter et à empêcher la sortie de contenu dangereux. Le système de filtrage de contenu (préversion) détecte et prend des mesures sur des catégories spécifiques de contenu potentiellement dangereux dans les invites d’entrée et les exécutions de sortie.
L’exemple suivant montre comment gérer les évènements lorsque le modèle détecte du contenu dangereux dans l’invite d’entrée et que la sécurité du contenu est activée.
try
{
requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are an AI assistant that helps people find information."),
new ChatRequestUserMessage(
"Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
),
},
};
response = client.Complete(requestOptions);
Console.WriteLine(response.Value.Content);
}
catch (RequestFailedException ex)
{
if (ex.ErrorCode == "content_filter")
{
Console.WriteLine($"Your query has trigger Azure Content Safety: {ex.Message}");
}
else
{
throw;
}
}
Conseil
Pour en savoir plus sur la façon dont vous pouvez configurer et contrôler les paramètres de sécurité du contenu Azure AI, consultez la Documentation Azure AI Sécurité du Contenu.
DeepSeek-R1
DeepSeek-R1 s’appuie sur la progression des modèles axés sur le raisonnement antérieurs qui ont amélioré les performances en étendant le raisonnement de la chaîne de pensée (CoT). DeepSeek-R1 va plus loin en combinant l’apprentissage par renforcement (RL) avec un réglage précis sur les jeux de données soigneusement choisis. Il a évolué à partir d’une version antérieure, DeepSeek-R1-Zero, qui s’appuyait uniquement sur la liste de révocation de certificats et a montré des compétences de raisonnement fortes, mais avait des problèmes tels que des sorties difficiles à lire et des incohérences linguistiques. Pour répondre à ces limitations, DeepSeek-R1 intègre une petite quantité de données de démarrage à froid et suit un pipeline d’entraînement affiné qui fusionne la liste de révocation orientée raisonnement avec des réglages précis supervisés sur les jeux de données organisés, ce qui entraîne un modèle qui obtient des performances de pointe sur les benchmarks de raisonnement.
Vous pouvez en apprendre davantage sur les modèles dans leur fiche modèle respective :
Prérequis
Pour utiliser DeepSeek-R1 avec Azure AI Foundry, vous avez besoin des prérequis suivants :
Un modèle de déploiement
Déploiement sur des API sans serveur
DeepSeek-R1 peut être déployé sur des points de terminaison d'API sans serveur avec une facturation à l'utilisation. Ce type de déploiement permet de consommer des modèles en tant qu’API sans les héberger sur votre abonnement, tout en conservant la sécurité et la conformité de l’entreprise dont les organisations ont besoin.
Le déploiement vers un point de terminaison API serverless ne nécessite pas de quota de votre abonnement. Si votre modèle n’est pas déjà déployé, utilisez Azure AI Studio, le kit de développement logiciel (SDK) Azure Machine Learning pour Python, l’interface de ligne de commande Azure ou les modèles ARM pour déployer le modèle en tant qu’API serverless.
Un client REST
Les modèles déployés avec l’API Inférence de modèle Azure AI peuvent être consommés en utilisant tout client REST. Pour utiliser le client REST, vous avez besoin des prérequis suivants :
- Pour construire les requêtes, vous devez transmettre l’URL du point de terminaison. L’URL du point de terminaison a la forme
https://your-host-name.your-azure-region.inference.ai.azure.com
, oùyour-host-name`` is your unique model deployment host name and
votre-région-azure`` est la région Azure où le modèle est déployé (par exemple, eastus2). - En fonction de vos préférences de modèle de déploiement et d’authentification, vous aurez besoin d’une clé pour vous authentifier auprès du service ou des informations d’identification Microsoft Entra ID. La clé est une chaîne de 32 caractères.
Travailler avec des complétions de conversation
Dans cette section, vous utilisez l’API d’inférence de modèle Azure AI avec un modèle de complétion de conversation pour les conversations.
Conseil
L’API d’inférence de modèle Azure AI vous permet de communiquer avec la plupart des modèles déployés dans Azure AI Foundry avec le même code et la même structure, y compris DeepSeek-R1
Créer un client pour consommer le modèle
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
Obtenir les fonctionnalités du modèle
L’itinéraire /info
retourne des informations sur le modèle déployé sur le point de terminaison. Renvoyez les informations du modèle en appelant la méthode suivante :
GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
La réponse est comme suit :
{
"model_name": "DeepSeek-R1",
"model_type": "chat-completions",
"model_provider_name": "DeepSeek"
}
Créer une requête de complétion de conversation
L’exemple suivant vous montre comment créer une requête de complétions de conversation de base sur le modèle.
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
{
"id": "0a1234b5de6789f01gh2i345j6789klm",
"object": "chat.completion",
"created": 1718726686,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.",
"tool_calls": null
},
"finish_reason": "stop",
"logprobs": null
}
],
"usage": {
"prompt_tokens": 19,
"total_tokens": 91,
"completion_tokens": 72
}
}
Examinez la section usage
dans la réponse pour voir le nombre de jetons utilisés pour l’invite, le nombre total de jetons générés et le nombre de jetons utilisés pour la complétion.
Compréhension du raisonnement
Certains modèles de raisonnement, comme DeepSeek-R1, génèrent des achèvements et incluent le raisonnement derrière lui. Le raisonnement associé à l’achèvement est inclus dans le contenu de la réponse dans les balises <think>
et </think>
. Le modèle peut sélectionner les scénarios à générer du contenu de raisonnement. Par exemple :
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
Vous pouvez extraire le contenu du raisonnement de la réponse pour comprendre le processus de pensée du modèle comme suit :
{
"id": "0a1234b5de6789f01gh2i345j6789klm",
"object": "chat.completion",
"created": 1718726686,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "<think>\nOkay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.\n</think>\n\nThe exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.",
"tool_calls": null
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 11,
"total_tokens": 897,
"completion_tokens": 886
}
}
Diffuser du contenu
Par défaut, l’API de complétion retourne l’intégralité du contenu généré dans une réponse unique. Si vous générez des complétions longues, l’attente de la réponse peut durer plusieurs secondes.
Vous pouvez diffuser en continu le contenu pour l’obtenir à mesure qu’il est généré. Diffuser le contenu en continu vous permet de commencer à traiter la complétion à mesure que le contenu devient disponible. Ce mode renvoie un objet qui diffuse la réponse en tant qu’événements envoyés par le serveur contenant uniquement des données. Extrayez les blocs du champ delta, plutôt que le champ de message.
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
],
"stream": true,
"temperature": 0,
"top_p": 1,
"max_tokens": 2048
}
Vous pouvez visualiser la façon dont la diffusion en continu génère du contenu :
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"content": ""
},
"finish_reason": null,
"logprobs": null
}
]
}
Le dernier message dans le flux a finish_reason
défini, indiquant la raison de l’arrêt du processus de génération.
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"delta": {
"content": ""
},
"finish_reason": "stop",
"logprobs": null
}
],
"usage": {
"prompt_tokens": 19,
"total_tokens": 91,
"completion_tokens": 72
}
}
Appliquer la sécurité du contenu
L’API Inférence de modèle Azure AI prend en charge Azure AI Sécurité du Contenu. Lorsque vous utilisez des déploiements avec la sécurité du contenu Azure AI activée, les entrées et les sorties passent par un ensemble de modèles de classification visant à détecter et à empêcher la sortie de contenu dangereux. Le système de filtrage de contenu (préversion) détecte et prend des mesures sur des catégories spécifiques de contenu potentiellement dangereux dans les invites d’entrée et les exécutions de sortie.
L’exemple suivant montre comment gérer les évènements lorsque le modèle détecte du contenu dangereux dans l’invite d’entrée et que la sécurité du contenu est activée.
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "system",
"content": "You are an AI assistant that helps people find information."
},
{
"role": "user",
"content": "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
}
]
}
{
"error": {
"message": "The response was filtered due to the prompt triggering Microsoft's content management policy. Please modify your prompt and retry.",
"type": null,
"param": "prompt",
"code": "content_filter",
"status": 400
}
}
Conseil
Pour en savoir plus sur la façon dont vous pouvez configurer et contrôler les paramètres de sécurité du contenu Azure AI, consultez la Documentation Azure AI Sécurité du Contenu.
Autres exemples d’inférence
Pour obtenir d’autres exemples d’utilisation des modèles DeepSeek, consultez les exemples et tutoriels suivants :
Description | Langage | Exemple |
---|---|---|
Package Azure AI Inference pour Python | Python | Lien |
Package Azure AI Inference pour JavaScript | JavaScript | Lien |
Package Inférence Azure AI pour C# | C# | Lien |
Package d’inférence Azure AI pour Java | Java | Lien |
Considérations relatives aux coûts et aux quotas pour les modèles DeepSeek déployés en tant que points de terminaison d’API serverless
Le quota est géré par déploiement. Chaque déploiement a une limite de débit de 200 000 jetons par minute et 1 000 requêtes d’API par minute. Toutefois, nous limitons actuellement un déploiement par modèle par projet. Contactez le Support Microsoft Azure si les limites de débit actuelles ne suffisent pas pour vos scénarios.
Contenu connexe
- API Inférence de modèle Azure AI
- Déployer des modèles en tant que des API sans serveur
- Consommer des points de terminaison d'API serverless depuis un autre projet ou un autre hub Azure AI Studio
- Disponibilité des régions pour les modèles dans les points de terminaison d’API serverless
- Planifier et gérer les coûts (Place de marché)