Tutorial: Introdução ao modelo de raciocínio DeepSeek-R1 no Microsoft Foundry Models (clássico)

Exibição no momento:Versão do portal Foundry (clássico) - Alternar para a versão do novo portal Foundry

Neste tutorial, você aprenderá a implantar e usar um modelo de raciocínio DeepSeek no Microsoft Foundry. Este tutorial usa o DeepSeek-R1 para ilustração. No entanto, o conteúdo também se aplica ao modelo de raciocínio DeepSeek-R1-0528 mais recente.

O que você realiza:

Neste tutorial, você implanta o modelo de raciocínio DeepSeek-R1, envia solicitações de inferência programaticamente usando código e analisa a saída de raciocínio para entender como o modelo chega às suas respostas.

As etapas executadas neste tutorial são:

  • Crie e configure os recursos Azure para usar DeepSeek-R1 em Foundry Models.
  • Configure a implantação do modelo.
  • Use DeepSeek-R1 com a próxima geração das APIs OpenAI do Azure v1 para consumir o modelo em código.

Pré-requisitos

Para concluir este artigo, você precisa:

  • Uma assinatura Azure com uma forma de pagamento válida. Se você não tiver uma assinatura Azure, crie uma conta de Azure paga para começar. Se você estiver usando modelos do GitHub, poderá atualizar de Modelos do GitHub para Modelos do Microsoft Foundry e criar uma assinatura do Azure durante o processo.

  • Acesso ao Microsoft Foundry com permissões apropriadas para criar e gerenciar recursos. Normalmente, requer a função Colaborador ou Proprietário no grupo de recursos para criar recursos e implantar modelos.

  • A função Cognitive Services User (ou superior) atribuída à sua conta Azure no recurso Foundry. Essa função é necessária para fazer chamadas de inferência com Microsoft Entra ID. Atribua-o no portal do Azure em Controle de Acesso (IAM) no recurso Foundry.

  • Instale o SDK do Azure OpenAI para sua linguagem de programação:

    • Python: pip install openai azure-identity
    • .NET: dotnet add package OpenAI, dotnet add package Azure.Identity
    • JavaScript: npm install openai @azure/identity
    • Java: adicionar os pacotes com.openai:openai-java e com.azure:azure-identity

DeepSeek-R1 é um modelo de raciocínio que gera explicações junto com respostas. Ele dá suporte a conclusões de chat baseadas em texto, mas não dá suporte a chamadas de ferramentas ou formatos de saída estruturados. Consulte sobre modelos de raciocínio para obter detalhes.

Criar os recursos

Para criar um projeto do Foundry que dê suporte à implantação do DeepSeek-R1, siga estas etapas. Você também pode criar os recursos usando CLI do Azure ou infraestrutura como código, com o Bicep.

Dica

Como você pode customize o painel esquerdo no portal do Microsoft Foundry, você pode ver itens diferentes dos mostrados nestas etapas. Se você não vir o que está procurando, selecione ... Mais na parte inferior do painel esquerdo.

  1. Entre no Microsoft Foundry. Certifique-se de que o alternador New Foundry está desativado. Essas etapas se referem ao Foundry (clássico).

  2. Na página inicial, vá para a seção "Explorar modelos e funcionalidades".

    Uma captura de tela da home page do portal do Foundry mostrando a seção de catálogo de modelos.

  3. Use a caixa de pesquisa na tela para pesquisar o modelo DeepSeek-R1 e abrir seu cartão de modelo.

    Selecione Usar este modelo. Esta ação abre um assistente para criar um projeto do Foundry e os recursos necessários para você trabalhar. Você pode manter o nome padrão do projeto ou alterá-lo.

    Dica

    Você está usando Azure OpenAI em Modelos de Fundiário? Quando você estiver conectado ao portal do Foundry usando um recurso Azure OpenAI, somente modelos Azure OpenAI aparecem no catálogo. Para exibir a lista completa de modelos, incluindo o DeepSeek-R1, use a seção Comunicados superior e localize o cartão com a opção Explorar mais modelos.

    Captura de tela mostrando o cartão com a opção de explorar todos os modelos do catálogo.

    Uma nova janela é aberta com a lista completa de modelos. Selecione DeepSeek-R1 na lista e selecione Implantar. O assistente pede para criar um novo projeto.

  4. Selecione o menu suspenso na seção "Opções avançadas" do assistente para ver detalhes sobre as configurações e outros padrões criados junto com o projeto. Esses padrões são selecionados para a funcionalidade ideal e incluem:

    Propriedade Descrição
    Grupo de recursos O contêiner principal para todos os recursos em Azure. Esse contêiner ajuda você a organizar recursos que funcionam juntos. Ele também ajuda você a ter um escopo para os custos associados a todo o projeto.
    Região A região dos recursos que você está criando.
    Recurso de fundimento O recurso que habilita o acesso aos modelos principais no catálogo de modelos do Foundry. Neste tutorial, uma nova conta é criada, mas os recursos do Foundry (anteriormente conhecidos como Azure recurso dos Serviços de IA) podem ser compartilhados entre vários hubs e projetos. Os hubs usam uma conexão com o recurso para ter acesso às implantações de modelo disponíveis lá. Para saber como você pode criar conexões com recursos do Foundry para consumir modelos, confira Conectar seu projeto de IA.
  5. Selecione Criar para criar o projeto Foundry junto com os outros padrões. Aguarde até que a criação do projeto seja concluída. Esse processo leva alguns minutos.

Implantar o modelo

  1. Quando você cria o projeto e os recursos, um assistente de implantação é aberto. DeepSeek-R1 está disponível como um Modelo de Foundry comercializado diretamente pela Azure. Você pode examinar os detalhes de preços do modelo selecionando a guia DeepSeek na página de preços de Modelos Foundry.

  2. Defina as configurações de implantação. Por padrão, a implantação recebe o nome do modelo que você está implantando. O nome da implantação model é usado no parâmetro para rotear solicitações para essa implantação específica de modelo. Essa configuração permite que você configure nomes específicos para seus modelos ao anexar configurações específicas.

    1. A Foundry seleciona automaticamente o recurso Foundry que você criou anteriormente com seu projeto. Use a opção Personalizar para alterar a conexão com base em suas necessidades. DeepSeek-R1 está disponível nos tipos de implantação Global Standard e Global Provisioned, os quais oferecem maior taxa de transferência e desempenho.

    Captura de tela mostrando como implantar o modelo.

  3. Selecione Implantar.

  4. Quando a implantação for concluída, a página Detalhes da implantação será aberta. Agora o novo modelo está pronto para uso.

Se você preferir explorar o modelo interativamente primeiro, pule para Usar o modelo no playground.

Usar o modelo no código

Use o endpoint e as credenciais do Foundry Models para se conectar ao modelo.

Captura de tela mostrando como obter a URL e a chave associadas à implantação.

Use a próxima geração v1 Azure APIs OpenAI para consumir o modelo em seu código. Esses exemplos de código usam uma abordagem de autenticação segura e sem chave, Microsoft Entra ID, por meio da biblioteca de identidades Azure.

Os exemplos de código a seguir demonstram como:

  1. Autentique com Microsoft Entra ID usando DefaultAzureCredential, que tenta automaticamente vários métodos de autenticação (variáveis de ambiente, identidade gerenciada, CLI do Azure e outros). A ordem exata depende da versão do SDK de Identidade Azure que você está usando.

    Dica

    Para desenvolvimento local, verifique se você está autenticado com CLI do Azure executando az login. Para implantações de produção em Azure, configure a identidade gerenciada para seu aplicativo.

  2. Crie um cliente de conclusão de chat conectado ao modelo implantado

  3. Enviar um prompt básico para o modelo de DeepSeek-R1

  4. Receber e exibir a resposta

Saída esperada: Uma resposta JSON que contém a resposta do modelo, o processo de raciocínio (dentro de tags <think>), as estatísticas de uso de tokens (tokens de prompt, tokens de conclusão, tokens totais) e informações do modelo.

Instale os pacotes openai e azure-identity use o gerenciador de pacotes, como pip:

pip install --upgrade openai azure-identity

O exemplo a seguir mostra como criar um cliente para consumir conclusões de chat e, em seguida, gerar e imprimir a resposta:


from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://ai.azure.com/.default"
)

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  api_key=token_provider,
)
response = client.chat.completions.create(
  model="DeepSeek-R1", # Replace with your model deployment name.
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "How many languages are in the world?"}
  ]
)

#print(response.choices[0].message)
print(response.model_dump_json(indent=2))

Dica

Depois de executar o código, você deverá ver uma resposta JSON que inclua choices[0].message.content a resposta do modelo. Se o modelo gerar raciocínio, a resposta conterá conteúdo encapsulado em <think>...</think> marcas seguidas pela resposta final.

Referência de API:

O raciocínio pode gerar respostas mais longas e consumir um número maior de tokens. DeepSeek-R1 dá suporte a até 5.000 solicitações por minuto e 5.000.000 tokens por minuto. Consulte os limites de taxa que se aplicam a modelos de DeepSeek-R1. Considere ter uma estratégia de repetição para lidar com os limites de taxa. Você também pode solicitar aumentos para os limites padrão.

Sobre modelos de raciocínio

Os modelos de raciocínio podem atingir níveis mais altos de desempenho em domínios como matemática, codificação, ciência, estratégia e logística. A maneira como esses modelos produzem saídas é usando explicitamente a cadeia de pensamento para explorar todos os caminhos possíveis antes de gerar uma resposta. Eles verificam suas respostas à medida que as produzem, o que ajuda a chegar a conclusões mais precisas. Como resultado, os modelos de raciocínio lógico podem exigir menos indicações de contexto para produzir resultados eficazes.

Os modelos de raciocínio produzem dois tipos de conteúdo como saídas:

  • Conclusões de raciocínio
  • Conclusões de saída

Ambas as conclusões contam para o conteúdo gerado a partir do modelo. Portanto, eles contribuem para os limites de token e os custos associados ao modelo. Alguns modelos, como DeepSeek-R1, podem responder com o conteúdo do raciocínio. Outros, como o1, geram apenas as conclusões.

Conteúdo de raciocínio

Alguns modelos de raciocínio, como o DeepSeek-R1, geram conclusões e incluem o raciocínio por trás deles. O raciocínio associado à conclusão é incluído no conteúdo da resposta dentro das marcas <think> e </think>. O modelo pode selecionar os cenários para os quais gerar conteúdo de raciocínio. O exemplo a seguir mostra como gerar o conteúdo de raciocínio usando Python:

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 or regions 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/region. \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

Referência de API:

Modelos de raciocínio de prompt

Ao criar solicitações para modelos de raciocínio, leve o seguinte em consideração:

  • Use instruções simples e evite usar técnicas de cadeia de pensamento.
  • Os recursos internos de raciocínio tornam os prompts de zero-shot simples tão eficazes quanto métodos mais complexos.
  • Ao fornecer contexto ou documentos adicionais, como em cenários RAG, incluindo apenas as informações mais relevantes pode ajudar a impedir que o modelo complique excessivamente sua resposta.
  • Modelos de raciocínio podem dar suporte ao uso de mensagens do sistema. No entanto, eles podem não segui-los tão estritamente quanto outros modelos não-racionais.
  • Ao criar aplicativos de várias rodadas, considere acrescentar apenas a resposta final do modelo, sem o conteúdo de raciocínio, conforme explicado na seção de conteúdo de raciocínio.

Observe que os modelos de raciocínio podem levar mais tempo para gerar respostas. Eles usam cadeias de raciocínio longas de pensamento que permitem uma solução de problemas mais profunda e estruturada. Eles também executam a auto-verificação para verificar suas respostas e corrigir seus erros, mostrando assim comportamentos auto-reflexivos emergentes.

Parâmetros

Os modelos de raciocínio dão suporte a um subconjunto dos parâmetros de conclusão de chat padrão para manter a integridade de seu processo de raciocínio.

Parâmetros com suporte:

  • max_tokens - Número máximo de tokens a serem gerados na resposta
  • stop - Sequências em que a API para de gerar tokens
  • stream - Habilitar respostas de fluxo contínuo
  • n - Número de finalizações a serem geradas

Parâmetros sem suporte (modelos de raciocínio não dão suporte a estes):

  • temperature - Corrigido para otimizar a qualidade do raciocínio
  • top_p - Não configurável para modelos de raciocínio
  • presence_penalty - Não disponível
  • repetition_penalty - Não disponível para modelos de raciocínio

Exemplo usando max_tokens:

response = client.chat.completions.create(
    model="DeepSeek-R1",
    messages=[
        {"role": "user", "content": "Explain quantum computing"}
    ],
    max_tokens=1000  # Limit response length
)

Para obter a lista completa de parâmetros com suporte, consulte a referência da API de conclusões de chat.

Utilizar o modelo no ambiente de testes

Use o modelo no playground para ter uma ideia das funcionalidades do modelo.

  1. Na página de detalhes da implantação, selecione Abrir no playground na barra superior. Essa ação abre o playground de chat.

  2. No menu suspenso Implantação do playground de chat, a implantação que você criou já está selecionada automaticamente.

  3. Configure o prompt do sistema conforme necessário.

    Captura de tela mostrando como selecionar uma implantação de modelo a ser usada no playground, configurar a mensagem do sistema e testá-la.

  4. Insira seu prompt e veja os resultados.

  5. Selecione Exibir código para ver detalhes sobre como acessar a implantação do modelo programaticamente.

Solucionando problemas

Se você encontrar problemas ao seguir este tutorial, use as diretrizes a seguir para resolver problemas comuns.

Erros de autenticação (401/403)

  • Verifique se você está conectado ao CLI do Azure. Para desenvolvimento local, execute az login antes de executar seu código. DefaultAzureCredential usa suas credenciais de CLI do Azure como um fallback quando nenhuma outra credencial está disponível.
  • Verifique as atribuições de função. Sua conta de Azure precisa da função Cognitive Services User (ou superior) no recurso Foundry para fazer chamadas de inferência com Microsoft Entra ID. Se você ainda não atribuiu essa função, consulte a seção Pré-requisitos.
  • Verifique o formato do endpoint. A URL do endpoint deve seguir o formato https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/. Verifique se o nome do recurso corresponde ao recurso Foundry.

Problemas de implantação

  • Nome da implantação versus nome do modelo. O model parâmetro em chamadas à API refere-se ao nome da implantação, não ao nome do modelo. Se você personalizou o nome da implantação durante a criação, use esse nome em vez de DeepSeek-R1.
  • A implantação não está pronta. Se você receber um erro 404, verifique se o status da implantação é exibido com êxito no portal do Foundry antes de fazer chamadas à API.

Limitação de taxa (429 erros)

  • Implementar lógica de repetição. Os modelos de raciocínio geram respostas mais longas que consomem mais tokens. Use a retirada exponencial para lidar com erros de 429 (muitas solicitações).
  • Monitorar o uso do token. DeepSeek-R1 conteúdo de raciocínio (dentro das tags <think>) conta para o limite de token. Consulte cotas e limites para os limites de taxa atuais.
  • Solicitar aumento de cota. Se você atingir consistentemente os limites de taxa, a solicitação aumentará para os limites padrão.

Problemas de instalação do pacote

  • Python. Instale os dois pacotes necessários: pip install openai azure-identity. O azure-identity pacote é necessário para DefaultAzureCredential.
  • Javascript. Instale os dois pacotes necessários: npm install openai @azure/identity.
  • .NET. Instale o pacote Azure Identity: dotnet add package Azure.Identity.

O que você aprendeu

Neste tutorial, você realizou o seguinte:

  • Recursos do Foundry criados para hospedar modelos de IA
  • Implantado o modelo de raciocínio DeepSeek-R1
  • Fez chamadas de API autenticadas usando Microsoft Entra ID
  • Solicitações de inferência enviadas e saídas de raciocínio recebidas
  • Analisou-se o conteúdo de raciocínio das respostas do modelo para entender o processo de pensamento do modelo