Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste tutorial, aprende a implementar e usar um modelo de raciocínio DeepSeek no Microsoft Foundry. Este tutorial utiliza o DeepSeek-R1 para ilustração. No entanto, o conteúdo também se aplica ao modelo de raciocínio mais recente DeepSeek-R1-0528 .
O que consegue:
Neste tutorial, implementa o modelo de raciocínio DeepSeek-R1, envia pedidos de inferência programaticamente usando código e analisa a saída do raciocínio para perceber como o modelo chega às suas respostas.
Os passos que segues neste tutorial são:
- Crie e configure os recursos Azure para usar DeepSeek-R1 em Foundry Models.
- Configura a implementação do modelo.
- Use o DeepSeek-R1 com as APIs Azure OpenAI v1, da próxima geração, para consumir o modelo em código.
Pré-requisitos
Para completar este artigo, precisa de:
Uma subscrição do Azure com um método de pagamento válido. Se não tiver uma subscrição do Azure, crie uma conta do Azure paga para começar. Se estiver a usar GitHub Models, pode atualizar de GitHub Models para Microsoft Foundry Models e criar uma subscrição Azure no processo.
Acesso ao Microsoft Foundry com as permissões adequadas para criar e gerir recursos. Normalmente requer o papel de Contribuinte ou Proprietário no grupo de recursos para criar recursos e implementar modelos.
A função Utilizador de Serviços Cognitivos (ou superior) atribuída à sua conta Azure no recurso Foundry. Este papel é obrigatório para fazer chamadas de inferência com o Microsoft Entra ID. Atribui-o no portal Azure em Controlo de Acesso (IAM) no recurso Foundry.
Instale o SDK Azure OpenAI para a sua linguagem de programação:
-
Python:
pip install openai azure-identity -
.NET:
dotnet add package OpenAIedotnet add package Azure.Identity -
JavaScript:
npm install openai @azure/identity -
Java: Adicione os pacotes
com.openai:openai-javaecom.azure:azure-identity
-
Python:
DeepSeek-R1 é um modelo de raciocínio que gera explicações juntamente com respostas. Suporta a conclusão de conversas baseadas em texto, mas não suporta chamadas de ferramentas nem formatos de saída estruturada. Veja Sobre modelos de raciocínio para mais detalhes.
Crie os recursos
Para criar um projeto Foundry que suporte a implementação do DeepSeek-R1, siga estes passos. Também pode criar os recursos usando CLI do Azure ou infraestrutura como código, com Bicep.
- Iniciar sessão no Microsoft Foundry. Certifica-te de que a opção New Foundry está ativada. Estes passos referem-se à Foundry (nova).
- O projeto em que estás a trabalhar aparece no canto superior esquerdo.
- Para criar um novo projeto, selecione o nome do projeto e depois Criar novo projeto.
- Dê um nome ao seu projeto e selecione Criar projeto.
Implementar o modelo
- Adicione um modelo ao seu projeto. Selecione Construir no meio da página, depois Modelar.
- Selecione Implementar modelo base para abrir o catálogo de modelos.
- Encontre e selecione a peça modelo DeepSeek-R1 para abrir a sua placa modelo e selecione Implementar. Pode selecionar Deploy Rápido para usar os predefinidos, ou selecionar Personalizar Deployment para ver e alterar as definições de implementação.
Quando a missão termina, aterras no seu parque de diversões, onde podes começar a interagir com a missão. Confirme que a sua implantação está pronta verificando se o estado da implementação mostra Bem-sucedido. Note o nome da implementação e o URI do endpoint nos detalhes da implementação — precisa de ambos para a secção de código.
Se preferires explorar o modelo de forma interativa primeiro, salta para Usar o modelo no playground.
Usar o modelo em código
Use o endpoint e as credenciais do Foundry Models para se ligar ao modelo.
- Selecione o painel de Detalhes no painel superior dos Playgrounds para ver os detalhes da implementação. Aqui, pode encontrar o URI e a chave API da implementação.
- Obtenha o nome do seu recurso do URI da implementação para usar na inferência do modelo através de código.
Utilize as APIs v1 de próxima geração do Azure OpenAI para usar o modelo no seu código. Estes exemplos de código utilizam uma abordagem de autenticação segura e sem chave, Microsoft Entra ID, através da biblioteca Azure Identity.
Os seguintes exemplos de código demonstram como:
Autenticar com Microsoft Entra ID usando
DefaultAzureCredential, que tenta automaticamente múltiplos métodos de autenticação (variáveis de ambiente, identidade gerida, CLI do Azure, entre outros). A ordem exata depende da versão do SDK do Azure Identity que estás a usar.Dica
Para desenvolvimento local, certifique-se de que está autenticado com CLI do Azure correndo
az login. Para implementações em produção no Azure, configure a identidade gerida para a sua aplicação.Crie um cliente de conclusão de chat ligado à implementação do seu modelo
Envie um prompt básico ao modelo DeepSeek-R1
Receber e mostrar a resposta
Produção esperada: Uma resposta JSON contendo a resposta do modelo, o processo de raciocínio (dentro de tags <think>), estatísticas de utilização de tokens (tokens de prompt, tokens de completação, tokens totais) e informação do modelo.
Instale os pacotes openai e azure-identity use o seu gestor de pacotes, como pip:
pip install --upgrade openai azure-identity
O exemplo seguinte mostra como criar um cliente para consumir conclusões de chat e depois 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, deverá ver uma resposta JSON que inclui choices[0].message.content com a resposta do modelo. Se o modelo gerar raciocínio, a resposta contém conteúdo envolto em <think>...</think> tags, seguido da resposta final.
Referência API:
- OpenAI Python cliente
- Cliente JavaScript OpenAI
- OpenAI .NET cliente
- DefaultAzureCredential class
- Referência da API para Conclusões de Chats
- Visão geral da biblioteca de identidade do Azure
O raciocínio pode gerar respostas mais longas e consumir um número maior de tokens. DeepSeek-R1 suporta até 5.000 pedidos por minuto e 5.000.000 de tokens por minuto. Veja os limites de taxa que se aplicam a DeepSeek-R1 modelos. Considere ter uma estratégia de repetição para lidar com os limites de taxa. Também podes pedir aumentos aos limites padrão.
Sobre modelos de raciocínio
Os modelos de raciocínio podem atingir níveis mais elevados de desempenho em domínios como matemática, programação, ciência, estratégia e logística. A forma como estes modelos produzem resultados é usando explicitamente uma cadeia de pensamento para explorar todos os caminhos possíveis antes de gerar uma resposta. Verificam as respostas à medida que as produzem, o que ajuda a chegar a conclusões mais precisas. Como consequência, os modelos de raciocínio podem precisar de menos prompts de contexto para produzir resultados eficazes.
Os modelos de raciocínio produzem dois tipos de conteúdo como saídas:
- Concluições de raciocínio
- Completações de saída
Ambas estas conclusãos contam para o conteúdo gerado pelo modelo. Por isso, contribuem para os limites e custos dos tokens associados ao modelo. Alguns modelos, como DeepSeek-R1, podem responder com conteúdo de raciocínio. Outras, como o1, produzem apenas as completações.
Conteúdo de raciocínio
Alguns modelos de raciocínio, como o DeepSeek-R1, geram completões e incluem a razão por detrás delas. O raciocínio associado à conclusão está incluído no conteúdo da resposta nas tags <think> e </think>. O modelo pode selecionar os cenários para os quais gerar conteúdo de raciocínio. O exemplo seguinte 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 API:
Modelos de raciocínio prompto
Ao construir prompts para modelos de raciocínio, tenha em consideração o seguinte:
- Use instruções simples e evite técnicas de cadeia de pensamento.
- As capacidades de raciocínio incorporadas tornam prompts zero-shot simples tão eficazes quanto métodos mais complexos.
- Ao fornecer contexto adicional ou documentos, como nos cenários RAG, incluir apenas a informação mais relevante pode ajudar a evitar que o modelo complique demasiado a sua resposta.
- Os modelos de raciocínio podem suportar a utilização de mensagens do sistema. No entanto, podem não segui-los tão rigorosamente como outros modelos sem raciocínio.
- Ao criar aplicações com múltiplas voltas, considere acrescentar apenas a resposta final do modelo, sem o seu conteúdo de raciocínio, como explicado na secção de Conteúdo de Raciocínio .
Note que os modelos de raciocínio podem demorar mais tempo a gerar respostas. Utilizam longas cadeias de raciocínio que permitem uma resolução de problemas mais profunda e estruturada. Também realizam auto-verificação para cruzar as respostas e corrigir os erros, demonstrando assim comportamentos emergentes de autorreflexão.
Parâmetros
Os modelos de raciocínio suportam um subconjunto dos parâmetros padrão de conclusão de chat para manter a integridade do seu processo de raciocínio.
Parâmetros suportados:
-
max_tokens- Número máximo de tokens a gerar na resposta -
stop- Sequências em que a API deixa de gerar tokens -
stream- Permitir respostas em streaming -
n- Número de completações a gerar
Parâmetros não suportados (modelos de raciocínio não os suportam):
-
temperature- Fixo 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 a lista completa de parâmetros suportados, consulte a referência da API Chat completions.
Usa o modelo no parque infantil
Usa o modelo no playground para teres uma ideia das capacidades do modelo.
Assim que a implementação termina, aterras no playground do modelo, onde podes começar a interagir com a implantação. Por exemplo, pode inserir os seus prompts, como "Quantas línguas existem no mundo?" no recreio.
Resolução de problemas
Se encontrar problemas ao seguir este tutorial, utilize as seguintes orientações para resolver problemas comuns.
Erros de autenticação (401/403)
- Garante que tens sessão iniciada no CLI do Azure. Para desenvolvimento local, executa
az loginantes de executar o teu código.DefaultAzureCredentialutiliza as suas credenciais CLI do Azure como alternativa quando não existem outras credenciais disponíveis. - Verifique as atribuições de funções. A sua conta Azure precisa da função Cognitive Services User (ou superior) no recurso Foundry para efetuar chamadas de inferência utilizando o Microsoft Entra ID. Se ainda não atribuíste esta função, vê a secção de Pré-requisitos.
- Verifica o formato do endpoint. A URL do endpoint deve seguir o formato
https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/. Verifica se o nome do recurso corresponde ao teu recurso da Foundry.
Problemas de implantação
- Nome da implementação vs. nome do modelo. O
modelparâmetro nas chamadas API refere-se ao nome da sua implementação, não ao nome do modelo. Se personalizou o nome da implementação durante a criação, use esse nome em vez deDeepSeek-R1. - Implementação não está pronta. Se receber um erro 404, verifique se o estado de implementação mostra Bem-sucedido no portal da Foundry antes de fazer chamadas à API.
Limitação de taxa (429 erros)
- Implementa a lógica de tentativa. Os modelos de raciocínio geram respostas mais longas que consomem mais tokens. Utilize o backoff exponencial para lidar com erros 429 (Demasiados Pedidos).
- Monitorizar o uso do token. DeepSeek-R1 conteúdo de raciocínio (dentro das tags
<think>) conta para o seu limite de tokens. Consulte quotas e limites para os limites atuais das taxas. - Solicitar aumentos de quota. Se atingires consistentemente os limites de taxa, os pedidos aumentam até aos limites padrão.
Problemas de instalação de pacotes
- Python. Instale ambos os pacotes necessários:
pip install openai azure-identity. Oazure-identitypacote é necessário paraDefaultAzureCredential. - JavaScript. Instale ambos os pacotes necessários:
npm install openai @azure/identity. - .NET. Instale o pacote Azure Identity:
dotnet add package Azure.Identity.
O que aprendeste
Neste tutorial, conseguiste o seguinte:
- Criou recursos Foundry para alojar modelos de IA
- Implementou o modelo de raciocínio DeepSeek-R1
- Fiz chamadas API autenticadas usando o Microsoft Entra ID
- Pedidos de inferência enviados e saídas de raciocínio recebidas
- Conteúdo de raciocínio analisado a partir das respostas do modelo para compreender o processo de pensamento do modelo