Como usar o modelo de raciocínio do DeepSeek-R1
Importante
Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.
Neste artigo, você aprenderá sobre o DeepSeek-R1 e como usá-lo. O DeepSeek-R1 se destaca em tarefas de raciocínio usando um processo de treinamento passo a passo, como tarefas de linguagem, raciocínio científico e codificação. Possui 671B de parâmetros totais com 37B de parâmetros ativos e 128k de comprimento de contexto.
Importante
Os modelos que estão em versão prévia são marcados como versão prévia em seus 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 estendendo o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas adiante, combinando aprendizado 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 exclusivamente de RL e mostrava fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para resolver essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de inicialização a frio e segue um pipeline de treinamento refinado que combina RL orientado ao raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que atinge desempenho de última geração em benchmarks de raciocínio.
Saiba mais sobre os modelos nos respectivos cartões de modelo:
Pré-requisitos
Para usar o DeepSeek-R1 com a Fábrica de IA do Azure, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em endpoints de API sem servidor com faturamento pago conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se ainda não estiver implantado, use o Estúdio de IA do Azure, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos do 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 pacote azure-ai-inference
com Python. Para instalar esse pacote, você precisa atender aos seguintes pré-requisitos:
- Python 3.8 ou posterior instalado, incluindo o pip.
- O URL do ponto de extremidade. Para criar a biblioteca de clientes, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name
é o nome de host exclusivo da implantação do modelo eyour-azure-region
é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de atender aos pré-requisitos, instale o pacote de inferência da IA do Azure com o seguinte comando:
pip install azure-ai-inference
Saiba mais sobre o Pacote de inferência da IA do Azure e referências.
Trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados na Fábrica de IA do Azure 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 um URL de ponto de extremidade e uma chave que são armazenados 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"]),
)
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar 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 seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Entendendo 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 ao preenchimento é incluído no conteúdo da resposta nas 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 do 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
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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 conclusões, defina stream=True
ao chamar o modelo.
Para exibir a saída, defina uma função auxiliar a fim de imprimir a transmissão.
def print_stream(result):
"""
Prints the chat completion with streaming.
"""
for update in result:
if update.choices:
print(update.choices[0].delta.content, end="")
É possível observar como o streaming gera conteúdos:
print_stream(result)
Aplicar segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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
Dica
Para saber como definir e controlar as configurações da Segurança de Conteúdo de IA do Azure, consulte a Documentação da Segurança de Conteúdo de IA do Azure.
DeepSeek-R1
O DeepSeek-R1 baseia-se no progresso de modelos anteriores focados no raciocínio que melhoraram o desempenho estendendo o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas adiante, combinando aprendizado 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 exclusivamente de RL e mostrava fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para resolver essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de inicialização a frio e segue um pipeline de treinamento refinado que combina RL orientado ao raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que atinge desempenho de última geração em benchmarks de raciocínio.
Saiba mais sobre os modelos nos respectivos cartões de modelo:
Pré-requisitos
Para usar o DeepSeek-R1 com a Fábrica de IA do Azure, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em endpoints de API sem servidor com faturamento pago conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se ainda não estiver implantado, use o Estúdio de IA do Azure, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos do 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 pacote @azure-rest/ai-inference
de npm
. Para instalar esse pacote, você precisa atender aos seguintes pré-requisitos:
- Versões LTS de
Node.js
comnpm
. - O URL do ponto de extremidade. Para criar a biblioteca de clientes, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name
é o nome de host exclusivo da implantação do modelo eyour-azure-region
é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de atender a esses pré-requisitos, instale a biblioteca de inferência do Azure para JavaScript com o seguinte comando:
npm install @azure-rest/ai-inference
Como trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados na Fábrica de IA do Azure 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 um URL de ponto de extremidade e uma chave que são armazenados 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)
);
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar 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 seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Entendendo 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 ao preenchimento é incluído no conteúdo da resposta nas 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 do 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
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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 conclusões, use .asNodeStream()
ao chamar o modelo.
É possível observar como o streaming gera conteúdos:
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 segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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;
}
}
}
Dica
Para saber como definir e controlar as configurações da Segurança de Conteúdo de IA do Azure, consulte a Documentação da Segurança de Conteúdo de IA do Azure.
DeepSeek-R1
O DeepSeek-R1 baseia-se no progresso de modelos anteriores focados no raciocínio que melhoraram o desempenho estendendo o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas adiante, combinando aprendizado 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 exclusivamente de RL e mostrava fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para resolver essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de inicialização a frio e segue um pipeline de treinamento refinado que combina RL orientado ao raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que atinge desempenho de última geração em benchmarks de raciocínio.
Saiba mais sobre os modelos nos respectivos cartões de modelo:
Pré-requisitos
Para usar o DeepSeek-R1 com a Fábrica de IA do Azure, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em endpoints de API sem servidor com faturamento pago conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se ainda não estiver implantado, use o Estúdio de IA do Azure, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos do ARM para implantar o modelo como uma API sem servidor.
O pacote de inferência instalado
Você pode consumir as previsões desse modelo usando o pacote Azure.AI.Inference
do NuGet. Para instalar esse pacote, você precisa atender aos seguintes pré-requisitos:
- O URL do ponto de extremidade. Para criar a biblioteca de clientes, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name
é o nome de host exclusivo da implantação do modelo eyour-azure-region
é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de atender a esses pré-requisitos, instale a biblioteca de inferência da IA do Azure com o seguinte comando:
dotnet add package Azure.AI.Inference --prerelease
Também é possível realizar a autenticação com o Microsoft Entra ID (antigo Azure Active Directory). Para usar os provedores de credenciais fornecidos com o SDK do Azure, instale o pacote Azure.Identity
:
dotnet add package Azure.Identity
Importe os seguintes namespaces:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
Esse exemplo também usa os seguintes namespaces, mas você nem sempre precisará deles:
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Como trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados na Fábrica de IA do Azure 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 um URL de ponto de extremidade e uma chave que são armazenados 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"
);
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar 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 seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Entendendo 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 ao preenchimento é incluído no conteúdo da resposta nas 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 do 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
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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ões, use o método CompleteStreamingAsync
ao chamar o modelo. Observe que, neste exemplo, a chamada é encapsulada em um método assíncrono.
Para exibir a saída, defina um método assíncrono a fim de 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);
}
}
}
É possível observar como o streaming gera conteúdos:
StreamMessageAsync(client).GetAwaiter().GetResult();
Aplicar segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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;
}
}
Dica
Para saber como definir e controlar as configurações da Segurança de Conteúdo de IA do Azure, consulte a Documentação da Segurança de Conteúdo de IA do Azure.
DeepSeek-R1
O DeepSeek-R1 baseia-se no progresso de modelos anteriores focados no raciocínio que melhoraram o desempenho estendendo o raciocínio da Cadeia de Pensamento (CoT). O DeepSeek-R1 leva as coisas adiante, combinando aprendizado 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 exclusivamente de RL e mostrava fortes habilidades de raciocínio, mas tinha problemas como saídas difíceis de ler e inconsistências de linguagem. Para resolver essas limitações, o DeepSeek-R1 incorpora uma pequena quantidade de dados de inicialização a frio e segue um pipeline de treinamento refinado que combina RL orientado ao raciocínio com ajuste fino supervisionado em conjuntos de dados selecionados, resultando em um modelo que atinge desempenho de última geração em benchmarks de raciocínio.
Saiba mais sobre os modelos nos respectivos cartões de modelo:
Pré-requisitos
Para usar o DeepSeek-R1 com a Fábrica de IA do Azure, você precisa dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação em APIs sem servidor
O DeepSeek-R1 pode ser implantado em endpoints de API sem servidor com faturamento pago conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se ainda não estiver implantado, use o Estúdio de IA do Azure, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos do ARM para implantar o modelo como uma API sem servidor.
Um cliente REST
Os modelos implantados com a API de inferência de modelo da IA do Azure podem ser consumidos com qualquer cliente REST. Para usar o cliente REST, você precisa atender a estes pré-requisitos:
- Para criar as solicitações, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name`` is your unique model deployment host name and
your-azure-region é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Como trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados na Fábrica de IA do Azure 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 um URL de ponto de extremidade e uma chave que são armazenados em variáveis de ambiente.
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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"
}
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar 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 seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Entendendo 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 ao preenchimento é incluído no conteúdo da resposta nas 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 do 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
}
}
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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
}
É possível observar como o streaming gera conteúdos:
{
"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 tem finish_reason
definido, o que indica o motivo da interrupção do processo de geração.
{
"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 segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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
}
}
Dica
Para saber como definir e controlar as configurações da Segurança de Conteúdo de IA do Azure, consulte a Documentação da Segurança de Conteúdo de IA do Azure.
Mais exemplos de inferência
Para obter mais exemplos de como usar modelos do DeepSeek, consulte os seguintes exemplos e tutoriais:
Descrição | Idioma | Amostra |
---|---|---|
Pacote de inferência da IA do Azure para Python | Python | Link |
Pacote de inferência de IA do Azure para JavaScript | JavaScript | Link |
Pacote de inferência da IA do Azure para C# | C# | Link |
Pacote de inferência de IA do Azure para Java | Java | Link |
Considerações de custo e cota para modelos do DeepSeek implantados como endpoints de API sem servidor
A cota é gerenciada por implantação. Cada implantação tem um limite de taxa de 200.000 tokens por minuto e 1.000 solicitações de API por minuto. No entanto, atualmente, limitamos uma implantação por modelo e projeto. Entre em contato com o Suporte do Microsoft Azure se os limites de taxa atuais não forem suficientes para seus cenários.
Conteúdo relacionado
- API de Inferência do Modelo de IA do Azure
- Como implantar modelos como APIs sem servidor
- Como consumir pontos de extremidade de API sem servidor de um projeto ou hub diferente do Estúdio de IA do Azure
- Disponibilidade de região para modelos em pontos de extremidade de API sem servidor
- Como planejar e gerenciar custos (marketplace)