Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa esercitazione si apprenderà come distribuire e usare un modello di ragionamento DeepSeek in Microsoft Foundry. Questa esercitazione usa DeepSeek-R1 per l'illustrazione. Tuttavia, il contenuto si applica anche al modello di ragionamento DeepSeek-R1-0528 più recente.
Cosa si ottiene:
In questa esercitazione si distribuisce il modello di ragionamento DeepSeek-R1, si inviano richieste di inferenza a livello di codice usando il codice e si analizza l'output di ragionamento per comprendere come il modello arriva alle relative risposte.
I passaggi eseguiti in questa esercitazione sono:
- Creare e configurare le risorse di Azure per l'uso di DeepSeek-R1 nei modelli Foundry.
- Configurare la distribuzione del modello.
- Usare DeepSeek-R1 con le API OpenAI di Azure v1 di nuova generazione per usare il modello nel codice.
Prerequisiti
Per completare questo articolo, devi avere quanto segue:
Una sottoscrizione di Azure con un metodo di pagamento valido. Se non si dispone di una sottoscrizione di Azure, è possibile creare un account Azure gratuito per iniziare. Se si usano i modelli GitHub, è possibile eseguire l'aggiornamento da Modelli GitHub ai modelli di Microsoft Foundry e creare una sottoscrizione di Azure nel processo.
Accesso a Microsoft Foundry con le autorizzazioni appropriate per creare e gestire le risorse. In genere è necessario il ruolo di Collaboratore o di Proprietario nel gruppo di risorse per creare risorse e distribuire modelli.
Ruolo utente servizi cognitivi (o superiore) assegnato all'account Azure nella risorsa Foundry. Questo ruolo è necessario per effettuare chiamate di inferenza con Microsoft Entra ID. Assegna l'accesso nel portale di Azure sotto Controllo di accesso (IAM) alla risorsa Foundry.
Installare Azure OpenAI SDK per il linguaggio di programmazione:
-
Python:
pip install openai azure-identity -
.NET:
dotnet add package OpenAIedotnet add package Azure.Identity -
JavaScript:
npm install openai @azure/identity -
Java: aggiungere i pacchetti
com.openai:openai-javaecom.azure:azure-identity
-
Python:
DeepSeek-R1 è un modello di ragionamento che genera spiegazioni insieme alle risposte. Supporta i completamenti di chat basati su testo, ma non supporta i formati di output strutturati o chiamate di strumenti. Per informazioni dettagliate, vedere Informazioni sui modelli di ragionamento .
Creare le risorse
Per creare un progetto Foundry che supporta la distribuzione per DeepSeek-R1, seguire questa procedura. Puoi anche generare le risorse usando Azure CLI o l'infrastruttura come codice, con Bicep.
- Accedere a Microsoft Foundry. Assicurarsi che l'interruttore New Foundry sia attivato. Questi passaggi fanno riferimento a Foundry (nuovo).These steps refer to Foundry (new).
- Il progetto su cui si sta lavorando viene visualizzato nell'angolo superiore sinistro.
- Per creare un nuovo progetto, selezionare il nome del progetto e quindi Crea nuovo progetto.
- Assegnare un nome al progetto e selezionare Crea progetto.
Distribuire il modello
- Aggiungere un modello al progetto. Selezionare Compila al centro della pagina e quindi Modello.
- Selezionare Distribuisci modello di base per aprire il catalogo dei modelli.
- Trovare e selezionare il riquadro del modello DeepSeek-R1 per aprire la scheda del modello e selezionare Distribuisci. È possibile selezionare Distribuzione rapida per usare le impostazioni predefinite oppure selezionare Personalizza distribuzione per visualizzare e modificare le impostazioni di distribuzione.
Al termine della distribuzione, si accede alla relativa area di lavoro, dove è possibile iniziare a interagire con la distribuzione. Verificare che la distribuzione sia pronta verificando che lo stato della distribuzione sia Completato. Prendere nota del nome della distribuzione e dell'URI dell'endpoint dai dettagli della distribuzione, entrambi necessari per la sezione del codice.
Se si preferisce esplorare prima il modello in modo interattivo, passa a Usare il modello nell'area di prova.
Usare il modello nel codice
Usare l'endpoint e le credenziali dei Modelli Foundry per connettersi al modello.
- Selezionare il riquadro Dettagli nel riquadro superiore di Playgrounds per visualizzare i dettagli della distribuzione. Qui è possibile trovare l'URI e la chiave API della distribuzione.
- Recuperare il nome della risorsa dall'URI della distribuzione per usarlo nell'inferenza del modello tramite codice.
Usare le API OpenAI di Azure v1 di nuova generazione per usare il modello nel codice. Questi esempi di codice usano un approccio di autenticazione sicuro e senza chiave, Microsoft Entra ID, tramite la libreria di identità di Azure.
Gli esempi di codice seguenti illustrano come:
Eseguire l'autenticazione con l'ID Microsoft Entra usando
DefaultAzureCredential, che tenta automaticamente più metodi di autenticazione (variabili di ambiente, identità gestita, interfaccia della riga di comando di Azure e altri). L'ordine esatto dipende dalla versione di Azure Identity SDK in uso.Suggerimento
Per lo sviluppo locale, assicurarsi di essere autenticati con l'interfaccia della riga di comando di Azure eseguendo
az login. Per le distribuzioni di produzione in Azure, configurare l'identità gestita per l'applicazione.Creare un client di completamento della chat connesso alla distribuzione del modello
Inviare un prompt di base al modello di DeepSeek-R1
Ricevere e visualizzare la risposta
Output previsto: Risposta JSON contenente la risposta del modello, il processo di ragionamento (all'interno <think> di tag), le statistiche di utilizzo dei token (token di richiesta, token di completamento, token totali) e informazioni sul modello.
Installare i pacchetti openai e azure-identity usare la gestione pacchetti, ad esempio pip:
pip install --upgrade openai azure-identity
L'esempio seguente illustra come creare un client per utilizzare i completamenti della chat e quindi generare e stampare la risposta:
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.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))
Suggerimento
Dopo aver eseguito il codice, dovrebbe essere visualizzata una risposta JSON che include choices[0].message.content con la risposta del modello. Se il modello genera un ragionamento, la risposta contiene contenuto racchiuso in <think>...</think> tag seguiti dalla risposta finale.
Informazioni di riferimento sulle API:
- Client Python OpenAI
- Client JavaScript OpenAI
- OpenAI client .NET
- Classe DefaultAzureCredential
- Informazioni di riferimento sulle API di completamento della chat
- Panoramica della libreria di identità di Azure
Il ragionamento potrebbe generare risposte più lunghe e utilizzare un numero maggiore di token. DeepSeek-R1 supporta fino a 5.000 richieste al minuto e 5.000.000 token al minuto. Vedere i limiti di frequenza applicabili ai modelli di DeepSeek-R1. Considerare l'adozione di una strategia di retry per gestire i limiti di frequenza. È anche possibile richiedere aumenti ai limiti predefiniti.
Informazioni sui modelli di ragionamento
I modelli di ragionamento possono raggiungere livelli più elevati di prestazioni in domini come matematica, codifica, scienza, strategia e logistica. Il modo in cui questi modelli producono output consiste nell'usare in modo esplicito la catena di pensiero per esplorare tutti i possibili percorsi prima di generare una risposta. Verificano le loro risposte man mano che li producono, che aiutano ad arrivare a conclusioni più accurate. Di conseguenza, i modelli di ragionamento potrebbero richiedere meno richieste di contesto per produrre risultati effettivi.
I modelli di ragionamento producono due tipi di contenuto come output:
- Completamenti di ragionamenti
- Completamenti dell'output
Entrambi questi completamenti vengono conteggiati per il contenuto generato dal modello. Di conseguenza, contribuiscono ai limiti e ai costi dei token associati al modello. Alcuni modelli, ad esempio DeepSeek-R1, potrebbero rispondere con il contenuto di ragionamento. Altri, ad esempio o1, generano solo i completamenti.
Ragionamento del contenuto
Alcuni modelli di ragionamento, ad esempio DeepSeek-R1, generano completamenti e includono il motivo sottostante. Il ragionamento associato al completamento è incluso nel contenuto della risposta all'interno dei tag <think> e </think>. Il modello può selezionare gli scenari per cui generare contenuto di ragionamento. L'esempio seguente illustra come generare il contenuto di ragionamento 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
Informazioni di riferimento sulle API:
Modelli di ragionamento rapido
Quando si creano istruzioni per modelli di ragionamento, prendere in considerazione quanto segue:
- Usare istruzioni semplici ed evitare l'uso delle tecniche di concatenazione di pensieri.
- Le funzionalità di ragionamento predefinite rendono efficaci semplici richieste zero-shot come i metodi più complessi.
- Quando si forniscono contesto o documenti aggiuntivi, ad esempio negli scenari RAG, includere solo le informazioni più rilevanti può impedire al modello di complicare la risposta in modo eccessivo.
- I modelli di ragionamento possono supportare l'uso dei messaggi di sistema. Tuttavia, potrebbero non seguirli rigorosamente come altri modelli privi di ragionamento.
- Quando si creano applicazioni a più turni, è consigliabile aggiungere solo la risposta finale dal modello, senza il suo contenuto di ragionamento, come illustrato nella sezione Contenuto di ragionamento.
Si noti che i modelli di ragionamento possono richiedere più tempo per generare risposte. Usano lunghe catene di ragionamento di pensiero che consentono una risoluzione dei problemi più profonda e più strutturata. Eseguono anche la verifica automatica per un controllo incrociato delle proprie risposte e per correggere i propri errori, mostrando comportamenti emergenti autoriflessivi.
Parametri
I modelli di ragionamento supportano un sottoinsieme dei parametri di completamento della chat standard per mantenere l'integrità del processo di ragionamento.
Parametri supportati:
-
max_tokens- Numero massimo di token da generare nella risposta -
stop- Sequenze in cui l'API smette di generare token -
stream- Abilitare le risposte in streaming -
n- Numero di completamenti da generare
Parametri non supportati (i modelli di ragionamento non supportano):
-
temperature- Correzione per ottimizzare la qualità del ragionamento -
top_p- Non configurabile per i modelli di ragionamento -
presence_penalty- Non disponibile -
repetition_penalty- Non disponibile per i modelli di ragionamento
Esempio con max_tokens:
response = client.chat.completions.create(
model="DeepSeek-R1",
messages=[
{"role": "user", "content": "Explain quantum computing"}
],
max_tokens=1000 # Limit response length
)
Per l'elenco completo dei parametri supportati, vedere le informazioni di riferimento sull'API di completamento della chat.
Usare il modello nel playground
Usare il modello nel playground per ottenere un'idea delle funzionalità del modello.
Al termine della distribuzione, si arriva all'area di test del modello, in cui è possibile iniziare a interagire con il modello. Ad esempio, è possibile immettere le richieste, come "Quante lingue ci sono nel mondo?" nel playground.
Risoluzione dei problemi
Se si verificano problemi durante l'esecuzione di questa esercitazione, usare le indicazioni seguenti per risolvere i problemi comuni.
Errori di autenticazione (401/403)
- Assicurati di aver eseguito l'accesso ad Azure CLI. Per lo sviluppo locale, eseguire
az loginprima di eseguire il codice.DefaultAzureCredentialusa le credenziali dell'interfaccia della riga di comando di Azure come fallback quando non sono disponibili altre credenziali. - Verificare le assegnazioni di ruolo. L'account Azure richiede il ruolo Utente dei servizi cognitivi (o superiore) nella risorsa Foundry per effettuare chiamate di inferenza con Microsoft Entra ID. Se questo ruolo non è ancora stato assegnato, vedere la sezione Prerequisiti.
- Controllare il formato dell'endpoint. L'URL dell'endpoint deve seguire il formato
https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/. Verificare che il nome della risorsa corrisponda alla risorsa Foundry.
Problemi di distribuzione
- Nome della distribuzione e nome del modello. Il
modelparametro nelle chiamate API fa riferimento al nome della distribuzione, non al nome del modello. Se il nome della distribuzione è stato personalizzato durante la creazione, usare tale nome anzichéDeepSeek-R1. - Implementazione non pronta. Se viene visualizzato un errore 404, verificare che lo stato della distribuzione sia Completato nel portale foundry prima di effettuare chiamate API.
Limitazione della frequenza (errori 429)
- Implementare la logica di ripetizione dei tentativi. I modelli di ragionamento generano risposte più lunghe che utilizzano più token. Usare il backoff esponenziale per gestire gli errori 429 (troppe richieste).
- Monitorare l'utilizzo dei token. DeepSeek-R1 il contenuto di ragionamento (all'interno dei tag
<think>) è incluso nel conteggio del limite di token. Consultare quote e limiti per i limiti di velocità correnti. - Aumento della quota richiesta. Se si raggiunge costantemente i limiti di frequenza, la richiesta aumenta ai limiti predefiniti.
Problemi di installazione dei pacchetti
- Pitone. Installare entrambi i pacchetti necessari:
pip install openai azure-identity. Ilazure-identitypacchetto è obbligatorio perDefaultAzureCredential. - JavaScript. Installare entrambi i pacchetti necessari:
npm install openai @azure/identity. - .NET. Installare il pacchetto Azure Identity:
dotnet add package Azure.Identity.
Che cosa si è appreso
In questa esercitazione sono state eseguite le operazioni seguenti:
- Risorse della Fonderia create per l'hosting di modelli di intelligenza artificiale
- Implementazione del modello di ragionamento DeepSeek-R1
- Effettuate chiamate API autenticate con l'ID Microsoft Entra
- Richieste di inferenza inviate e output di ragionamento ricevuti
- Analisi del contenuto di ragionamento dalle risposte del modello per comprendere il processo di pensiero del modello