Como usar o modelo de raciocínio DeepSeek-R1
Importante
Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
Neste artigo, você aprenderá sobre o DeepSeek-R1 e como usá-los. O DeepSeek-R1 se destaca em tarefas de raciocínio usando um processo de treinamento passo-a-passo, como linguagem, raciocínio científico e tarefas de codificação. Possui parâmetros totais de 671B com parâmetros ativos de 37B e comprimento de contexto de 128k.
Importante
Os modelos que estão em pré-visualização são marcados como pré-visualização nos respetivos cartões de modelo no catálogo de modelos.
DeepSeek-R1
O DeepSeek-R1 baseia-se no progresso de modelos anteriores focados no raciocínio que melhoraram o desempenho ao estender o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas mais longe, combinando aprendizagem por reforço (RL) com ajuste fino em conjuntos de dados cuidadosamente escolhidos. Ele evoluiu de uma versão anterior, DeepSeek-R1-Zero, que dependia apenas de RL e mostrou fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para lidar com essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de arranque a frio e segue um pipeline de treinamento refinado que combina RL orientada para raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que alcança desempenho de última geração em benchmarks de raciocínio.
Você pode saber mais sobre os modelos em seus respetivos modelos de cartão:
Pré-requisitos
Para usar o DeepSeek-R1 com o Azure AI Foundry, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em pontos de extremidade de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.
O pacote de inferência instalado
Você pode consumir previsões desse modelo usando o azure-ai-inference
pacote com Python. Para instalar este pacote, você precisa dos seguintes pré-requisitos:
- Python 3.8 ou posterior instalado, incluindo pip.
- O URL do ponto de extremidade. Para construir a biblioteca do cliente, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato
https://your-host-name.your-azure-region.inference.ai.azure.com
, ondeyour-host-name
é o nome exclusivo do host de implantação do modelo eyour-azure-region
é a região do Azure onde o modelo é implantado (por exemplo, eastus2). - Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de ter esses pré-requisitos, instale o pacote de inferência do Azure AI com o seguinte comando:
pip install azure-ai-inference
Leia mais sobre o pacote de inferência e a referência da IA do Azure.
Trabalhar com finalizações de chat
Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.
Gorjeta
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Foundry com o mesmo código e estrutura, incluindo o DeepSeek-R1.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.
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"]),
)
Obtenha as capacidades do modelo
A /info
rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:
model_info = client.get_model_info()
A resposta é a seguinte:
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
Criar uma solicitação de conclusão de bate-papo
O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o modelo.
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?"),
],
)
A resposta é a seguinte, onde você pode ver as estatísticas de uso do modelo:
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
Inspecione a usage
seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.
Compreender o raciocínio
Alguns modelos de raciocínio, como o DeepSeek-R1, geram conclusões e incluem o raciocínio por trás disso. O raciocínio associado à conclusão está incluído no conteúdo da resposta dentro das tags <think>
e </think>
. O modelo pode selecionar em quais cenários gerar conteúdo de raciocínio. Por exemplo:
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
)
Você pode extrair o conteúdo de raciocínio da resposta para entender o processo de pensamento do modelo da seguinte maneira:
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
Transmitir conteúdo
Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.
Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.
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,
)
Para transmitir finalizações, defina stream=True
quando você chamar o modelo.
Para visualizar a saída, defina uma função auxiliar para imprimir o fluxo.
def print_stream(result):
"""
Prints the chat completion with streaming.
"""
for update in result:
if update.choices:
print(update.choices[0].delta.content, end="")
Você pode visualizar como o streaming gera conteúdo:
print_stream(result)
Aplicar a segurança do conteúdo
A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.
O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.
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
Gorjeta
Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.
DeepSeek-R1
O DeepSeek-R1 baseia-se no progresso de modelos anteriores focados no raciocínio que melhoraram o desempenho ao estender o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas mais longe, combinando aprendizagem por reforço (RL) com ajuste fino em conjuntos de dados cuidadosamente escolhidos. Ele evoluiu de uma versão anterior, DeepSeek-R1-Zero, que dependia apenas de RL e mostrou fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para lidar com essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de arranque a frio e segue um pipeline de treinamento refinado que combina RL orientada para raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que alcança desempenho de última geração em benchmarks de raciocínio.
Você pode saber mais sobre os modelos em seus respetivos modelos de cartão:
Pré-requisitos
Para usar o DeepSeek-R1 com o Azure AI Foundry, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em pontos de extremidade de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.
O pacote de inferência instalado
Você pode consumir previsões desse modelo usando o @azure-rest/ai-inference
pacote de npm
. Para instalar este pacote, você precisa dos seguintes pré-requisitos:
- Versões LTS do
Node.js
comnpm
. - O URL do ponto de extremidade. Para construir a biblioteca do cliente, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato
https://your-host-name.your-azure-region.inference.ai.azure.com
, ondeyour-host-name
é o nome exclusivo do host de implantação do modelo eyour-azure-region
é a região do Azure onde o modelo é implantado (por exemplo, eastus2). - Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de ter esses pré-requisitos, instale a biblioteca de inferência do Azure para JavaScript com o seguinte comando:
npm install @azure-rest/ai-inference
Trabalhar com finalizações de chat
Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.
Gorjeta
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Foundry com o mesmo código e estrutura, incluindo o DeepSeek-R1.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.
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)
);
Obtenha as capacidades do modelo
A /info
rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:
var model_info = await client.path("/info").get()
A resposta é a seguinte:
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
Criar uma solicitação de conclusão de bate-papo
O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o modelo.
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,
}
});
A resposta é a seguinte, onde você pode ver as estatísticas de uso do modelo:
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
Inspecione a usage
seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.
Compreender o raciocínio
Alguns modelos de raciocínio, como o DeepSeek-R1, geram conclusões e incluem o raciocínio por trás disso. O raciocínio associado à conclusão está incluído no conteúdo da resposta dentro das tags <think>
e </think>
. O modelo pode selecionar em quais cenários gerar conteúdo de raciocínio. Por exemplo:
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,
}
});
Você pode extrair o conteúdo de raciocínio da resposta para entender o processo de pensamento do modelo da seguinte maneira:
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
Transmitir conteúdo
Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.
Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.
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();
Para transmitir finalizações, use .asNodeStream()
quando chamar o modelo.
Você pode visualizar como o streaming gera conteúdo:
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 ?? "");
}
}
Aplicar a segurança do conteúdo
A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.
O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.
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;
}
}
}
Gorjeta
Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.
DeepSeek-R1
O DeepSeek-R1 baseia-se no progresso de modelos anteriores focados no raciocínio que melhoraram o desempenho ao estender o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas mais longe, combinando aprendizagem por reforço (RL) com ajuste fino em conjuntos de dados cuidadosamente escolhidos. Ele evoluiu de uma versão anterior, DeepSeek-R1-Zero, que dependia apenas de RL e mostrou fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para lidar com essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de arranque a frio e segue um pipeline de treinamento refinado que combina RL orientada para raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que alcança desempenho de última geração em benchmarks de raciocínio.
Você pode saber mais sobre os modelos em seus respetivos modelos de cartão:
Pré-requisitos
Para usar o DeepSeek-R1 com o Azure AI Foundry, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em pontos de extremidade de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.
O pacote de inferência instalado
Você pode consumir previsões desse modelo usando o Azure.AI.Inference
pacote do NuGet. Para instalar este pacote, você precisa dos seguintes pré-requisitos:
- O URL do ponto de extremidade. Para construir a biblioteca do cliente, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato
https://your-host-name.your-azure-region.inference.ai.azure.com
, ondeyour-host-name
é o nome exclusivo do host de implantação do modelo eyour-azure-region
é a região do Azure onde o modelo é implantado (por exemplo, eastus2). - Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de ter esses pré-requisitos, instale a biblioteca de inferência do Azure AI com o seguinte comando:
dotnet add package Azure.AI.Inference --prerelease
Você também pode autenticar com o Microsoft Entra ID (anteriormente Azure Ative Directory). Para usar provedores de credenciais fornecidos com o SDK do Azure, instale o Azure.Identity
pacote:
dotnet add package Azure.Identity
Importe os seguintes namespaces:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
Este exemplo também usa os seguintes namespaces, mas nem sempre você pode precisar deles:
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Trabalhar com finalizações de chat
Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.
Gorjeta
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Foundry com o mesmo código e estrutura, incluindo o DeepSeek-R1.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL")),
"DeepSeek-R1"
);
Obtenha as capacidades do modelo
A /info
rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:
Response<ModelInfo> modelInfo = client.GetModelInfo();
A resposta é a seguinte:
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
Criar uma solicitação de conclusão de bate-papo
O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o modelo.
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);
A resposta é a seguinte, onde você pode ver as estatísticas de uso do modelo:
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
Inspecione a usage
seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.
Compreender o raciocínio
Alguns modelos de raciocínio, como o DeepSeek-R1, geram conclusões e incluem o raciocínio por trás disso. O raciocínio associado à conclusão está incluído no conteúdo da resposta dentro das tags <think>
e </think>
. O modelo pode selecionar em quais cenários gerar conteúdo de raciocínio. Por exemplo:
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);
Você pode extrair o conteúdo de raciocínio da resposta para entender o processo de pensamento do modelo da seguinte maneira:
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
Transmitir conteúdo
Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.
Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.
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);
}
Para transmitir conclusão, use CompleteStreamingAsync
o método quando você chamar o modelo. Observe que, neste exemplo, a chamada é encapsulada em um método assíncrono.
Para visualizar a saída, defina um método assíncrono para imprimir o fluxo no 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);
}
}
}
Você pode visualizar como o streaming gera conteúdo:
StreamMessageAsync(client).GetAwaiter().GetResult();
Aplicar a segurança do conteúdo
A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.
O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.
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;
}
}
Gorjeta
Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.
DeepSeek-R1
O DeepSeek-R1 baseia-se no progresso de modelos anteriores focados no raciocínio que melhoraram o desempenho ao estender o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas mais longe, combinando aprendizagem por reforço (RL) com ajuste fino em conjuntos de dados cuidadosamente escolhidos. Ele evoluiu de uma versão anterior, DeepSeek-R1-Zero, que dependia apenas de RL e mostrou fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para lidar com essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de arranque a frio e segue um pipeline de treinamento refinado que combina RL orientada para raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que alcança desempenho de última geração em benchmarks de raciocínio.
Você pode saber mais sobre os modelos em seus respetivos modelos de cartão:
Pré-requisitos
Para usar o DeepSeek-R1 com o Azure AI Foundry, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em pontos de extremidade de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.
Um cliente REST
Os modelos implantados com a API de inferência de modelo de IA do Azure podem ser consumidos usando qualquer cliente REST. Para usar o cliente REST, você precisa dos seguintes pré-requisitos:
- Para construir as solicitações, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato
https://your-host-name.your-azure-region.inference.ai.azure.com
, ondeyour-host-name`` is your unique model deployment host name and
your-azure-region'' é a região do Azure onde o modelo é implantado (por exemplo, eastus2). - Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.
Trabalhar com finalizações de chat
Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.
Gorjeta
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Foundry com o mesmo código e estrutura, incluindo o DeepSeek-R1.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.
Obtenha as capacidades do modelo
A /info
rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:
GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
A resposta é a seguinte:
{
"model_name": "DeepSeek-R1",
"model_type": "chat-completions",
"model_provider_name": "DeepSeek"
}
Criar uma solicitação de conclusão de bate-papo
O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o modelo.
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
A resposta é a seguinte, onde você pode ver as estatísticas de uso do modelo:
{
"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
}
}
Inspecione a usage
seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.
Compreender o raciocínio
Alguns modelos de raciocínio, como o DeepSeek-R1, geram conclusões e incluem o raciocínio por trás disso. O raciocínio associado à conclusão está incluído no conteúdo da resposta dentro das tags <think>
e </think>
. O modelo pode selecionar em quais cenários gerar conteúdo de raciocínio. Por exemplo:
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
Você pode extrair o conteúdo de raciocínio da resposta para entender o processo de pensamento do modelo da seguinte maneira:
{
"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
}
}
Transmitir conteúdo
Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.
Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.
{
"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
}
Você pode visualizar como o streaming gera conteúdo:
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"content": ""
},
"finish_reason": null,
"logprobs": null
}
]
}
A última mensagem no fluxo foi finish_reason
definida, indicando o motivo para o processo de geração parar.
{
"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
}
}
Aplicar a segurança do conteúdo
A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.
O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.
{
"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
}
}
Gorjeta
Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.
Mais exemplos de inferência
Para obter mais exemplos de como usar modelos DeepSeek, consulte os seguintes exemplos e tutoriais:
Description | Linguagem | Exemplo |
---|---|---|
Pacote de inferência do Azure AI para Python | Python | Ligação |
Pacote Azure AI Inference para JavaScript | JavaScript | Ligação |
Pacote de inferência do Azure AI para C# | C# | Ligação |
Pacote Azure AI Inference para Java | Java | Ligação |
Considerações sobre custo e cota para modelos DeepSeek implantados como pontos de extremidade de API sem servidor
A quota é gerida por implementação. Cada implementação tem um limite de taxa de 200 000 tokens por minuto e 1000 pedidos de API por minuto. No entanto, atualmente, limitamos uma implementação por modelo por projeto. Contacte o Suporte do Microsoft Azure se os limites de taxa atuais não forem suficientes para os seus cenários.
Conteúdos relacionados
- API de Inferência de Modelos do Azure AI
- Implantar modelos como APIs sem servidor
- Consumir pontos de extremidade de API sem servidor de um projeto ou hub diferente do Azure AI Studio
- Disponibilidade de região para modelos em pontos de extremidade de API sem servidor
- Planear e gerir custos (marketplace)