Freigeben über


Verwendung des DeepSeek-R1-Begründungsmodells

Wichtig

Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

In diesem Artikel erfahren Sie mehr über DeepSeek-R1 und dessen Verwendung. DeepSeek-R1 zeichnet sich durch seine Fähigkeit aus, schrittweise Trainingsprozesse für logische Aufgaben wie Sprache, wissenschaftliches Denken und Programmieraufgaben durchzuführen. Es verfügt über 671 Mrd. Gesamtparameter mit 37 Mrd. aktiven Parametern und 128.000 Kontextlänge.

Wichtig

Modelle, die sich in der Vorschau befinden, werden auf ihren Modellkarten im Modellkatalog als Vorschau gekennzeichnet.

DeepSeek-R1

DeepSeek-R1 baut auf den Fortschritten früherer Modelle mit Fokus auf Begründung auf, die die Leistung durch Erweitern von Chain-of-Thought (CoT)-Begründung verbessert haben. DeepSeek-R1 geht noch weiter, indem vertiefendes Lernen (Reinforcement Learning, RL) mit feiner Optimierung auf sorgfältig ausgewählten Datasets kombiniert wird. Es entwickelte sich aus einer früheren Version, DeepSeek-R1-Zero, die ausschließlich auf RL basiert und starke Begründungskenntnisse zeigte, aber Probleme wie schwer zu lesende Ausgaben und Sprachinkonsistenzen hatte. Um diese Einschränkungen zu beheben, enthält DeepSeek-R1 eine kleine Menge von Kaltstartdaten und folgt einer verfeinerten Trainingspipeline, die das begründungsorientierte RL mit überwachter Feinabstimmung auf kuratierten Datasets kombiniert, was zu einem Modell führt, das eine hochmoderne Leistung bei Begründungsbenchmarks erzielt.

Weitere Informationen zu den Modellen finden Sie auf der jeweiligen Modellkarte:

Voraussetzungen

Um DeepSeek-R1 mit Azure KI Foundry zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung für serverlose APIs

DeepSeek-R1 kann für serverlose API-Endpunkte mit nutzungsbasierter Abrechnung bereitgestellt werden. Diese Art von Bereitstellung bietet eine Möglichkeit, Modelle als API zu nutzen, ohne sie in Ihrem Abonnement zu hosten, während die Unternehmenssicherheit und Compliance beibehalten werden, die Organisationen benötigen.

Zur Bereitstellung für einen serverlosen API-Endpunkt ist kein Kontingent aus Ihrem Abonnement erforderlich. Wenn Ihr Modell noch nicht bereitgestellt wurde, verwenden Sie Azure KI Studio, das Azure Machine Learning SDK für Python, die Azure CLI oder ARM-Vorlagen, um das Modell als serverlose API bereitzustellen.

Installiertes Inferenzpaket

Sie können Vorhersagen aus diesem Modell nutzen, indem Sie das Paket azure-ai-inference mit Python verwenden. Zum Installieren dieses Pakets müssen folgende Voraussetzungen erfüllt sein:

  • Installation von Python 3.8 oder höher (einschließlich pip).
  • Endpunkt-URL. Um die Clientbibliothek zu erstellen, müssen Sie die Endpunkt-URL übergeben. Die Endpunkt-URL hat das Format https://your-host-name.your-azure-region.inference.ai.azure.com, wobei your-host-name Ihr eindeutiger Hostname für die Modellimplementierung und your-azure-region die Azure-Region ist, in der das Modell bereitgestellt wird (z. B. „eastus2“).
  • Je nach Modellimplementierung und bevorzugter Authentifizierungsmethode benötigen Sie einen Schlüssel, um sich bei dem Dienst zu authentifizieren, oder Microsoft Entra ID-Anmeldeinformationen. Der Schlüssel ist eine Zeichenfolge aus 32 Zeichen.

Sobald diese Voraussetzungen erfüllt sind, installieren Sie das Azure KI-Inferenzpaket mit dem folgenden Befehl:

pip install azure-ai-inference

Lesen Sie mehr über das Azure KI-Inferenzpaket und die zugehörige Referenz.

Arbeiten mit Chatvervollständigungen

In diesem Abschnitt verwenden Sie die Azure KI-Modellinferenz-API mit einem Chatvervollständigungsmodell für Chats.

Tipp

Über die Azure KI-Modellinferenz-API können Sie mit den meisten in Azure AI Foundry bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich DeepSeek-R1.

Erstellen eines Clients zur Nutzung des Modells

Erstellen Sie als Erstes einen Client zum Nutzen des Modells. Der folgende Code verwendet eine Endpunkt-URL und einen Schlüssel, die in Umgebungsvariablen gespeichert sind.

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"]),
)

Abrufen der Funktionen des Modells

Die /info-Route gibt Informationen zu dem Modell zurück, das für den Endpunkt bereitgestellt wird. Geben Sie die Informationen des Modells zurück, indem Sie die folgende Methode aufrufen:

model_info = client.get_model_info()

Die Antwort lautet wie folgt:

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

Erstellen einer Chatvervollständigungsanforderung

Das folgende Beispiel zeigt, wie Sie eine einfache Chatvervollständigungsanforderung an das Modell erstellen können.

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?"),
    ],
)

Die Antwort lautet wie folgt, wobei Sie die Nutzungsstatistiken des Modells sehen können:

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

Überprüfen Sie den Abschnitt usage in der Antwort, um die Anzahl der Token für den Prompt, die Gesamtzahl der generierten Token und die Anzahl der Token für den Abschluss zu sehen.

Grundlegendes zu Begründung

Einige Begründungsmodelle, z. B. DeepSeek-R1, generieren Fertigstellungen und schließen die Begründung dafür ein. Die dem Abschluss zugeordnete Begründung ist im Inhalt der Antwort in den Tags <think> und </think> enthalten. Das Modell kann auswählen, in welchen Szenarien Begründungen für die Inhaltserstellung generiert werden sollen. Zum Beispiel:

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
)

Sie können den Begründungsinhalt wie folgt aus der Antwort extrahieren, um den Gedankenprozess des Modells zu verstehen:

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

Streamen von Inhalten

Standardmäßig gibt die Vervollständigungs-API den gesamten generierten Inhalt in einer einzigen Antwort zurück. Wenn Sie lange Vervollständigungen generieren, kann das Warten auf die Antwort viele Sekunden dauern.

Sie können die Inhalte Streamen, um sie abzurufen, während sie generiert werden. Durch das Streamen von Inhalten können Sie mit der Verarbeitung der Vervollständigung beginnen, sobald Inhalte verfügbar sind. Dieser Modus gibt ein Objekt zurück, das die Antwort als vom Server gesendete Ereignisse (nur Daten) zurückgibt. Extrahieren Sie Blöcke aus dem Deltafeld und nicht aus dem Nachrichtenfeld.

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,
)

Um Vervollständigungen zu streamen, legen Sie stream=True fest, wenn Sie das Modell aufrufen.

Um die Ausgabe zu visualisieren, definieren Sie eine Hilfsfunktion zum Drucken des Datenstroms.

def print_stream(result):
    """
    Prints the chat completion with streaming.
    """
    for update in result:
        if update.choices:
            print(update.choices[0].delta.content, end="")

Sie können visualisieren, wie beim Streaming Inhalte generiert werden:

print_stream(result)

Anwenden von Inhaltssicherheit

Die Azure KI-Modellinferenz-API unterstützt Azure KI Inhaltssicherheit. Wenn Sie Bereitstellungen mit aktivierter Azure KI Inhaltssicherheit verwenden, durchlaufen Eingaben und Ausgaben eine Gruppe von Klassifizierungsmodellen, die darauf abzielen, die Ausgabe schädlicher Inhalte zu erkennen und zu verhindern. Das System zur Inhaltsfilterung (Vorschau) erkennt bestimmte Kategorien potenziell schädlicher Inhalte sowohl in Eingabeprompts als auch in Ausgabevervollständigungen und ergreift entsprechende Maßnahmen.

Das folgende Beispiel zeigt, wie Ereignisse behandelt werden, wenn das Modell schädliche Inhalte im Prompt erkennt und die Inhaltssicherheit aktiviert ist.

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

Tipp

Weitere Informationen zum Konfigurieren und Steuern von Einstellungen der Azure KI Inhaltssicherheit finden Sie in der Dokumentation zu Azure KI Inhaltssicherheit.

DeepSeek-R1

DeepSeek-R1 baut auf den Fortschritten früherer Modelle mit Fokus auf Begründung auf, die die Leistung durch Erweitern von Chain-of-Thought (CoT)-Begründung verbessert haben. DeepSeek-R1 geht noch weiter, indem vertiefendes Lernen (Reinforcement Learning, RL) mit feiner Optimierung auf sorgfältig ausgewählten Datasets kombiniert wird. Es entwickelte sich aus einer früheren Version, DeepSeek-R1-Zero, die ausschließlich auf RL basiert und starke Begründungskenntnisse zeigte, aber Probleme wie schwer zu lesende Ausgaben und Sprachinkonsistenzen hatte. Um diese Einschränkungen zu beheben, enthält DeepSeek-R1 eine kleine Menge von Kaltstartdaten und folgt einer verfeinerten Trainingspipeline, die das begründungsorientierte RL mit überwachter Feinabstimmung auf kuratierten Datasets kombiniert, was zu einem Modell führt, das eine hochmoderne Leistung bei Begründungsbenchmarks erzielt.

Weitere Informationen zu den Modellen finden Sie auf der jeweiligen Modellkarte:

Voraussetzungen

Um DeepSeek-R1 mit Azure KI Foundry zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung für serverlose APIs

DeepSeek-R1 kann für serverlose API-Endpunkte mit nutzungsbasierter Abrechnung bereitgestellt werden. Diese Art von Bereitstellung bietet eine Möglichkeit, Modelle als API zu nutzen, ohne sie in Ihrem Abonnement zu hosten, während die Unternehmenssicherheit und Compliance beibehalten werden, die Organisationen benötigen.

Zur Bereitstellung für einen serverlosen API-Endpunkt ist kein Kontingent aus Ihrem Abonnement erforderlich. Wenn Ihr Modell noch nicht bereitgestellt wurde, verwenden Sie Azure KI Studio, das Azure Machine Learning SDK für Python, die Azure CLI oder ARM-Vorlagen, um das Modell als serverlose API bereitzustellen.

Installiertes Inferenzpaket

Sie können Vorhersagen aus diesem Modell nutzen, indem Sie das Paket @azure-rest/ai-inference von npm verwenden. Zum Installieren dieses Pakets müssen folgende Voraussetzungen erfüllt sein:

  • LTS-Versionen von Node.js mit npm.
  • Endpunkt-URL. Um die Clientbibliothek zu erstellen, müssen Sie die Endpunkt-URL übergeben. Die Endpunkt-URL hat das Format https://your-host-name.your-azure-region.inference.ai.azure.com, wobei your-host-name Ihr eindeutiger Hostname für die Modellimplementierung und your-azure-region die Azure-Region ist, in der das Modell bereitgestellt wird (z. B. „eastus2“).
  • Je nach Modellimplementierung und bevorzugter Authentifizierungsmethode benötigen Sie einen Schlüssel, um sich bei dem Dienst zu authentifizieren, oder Microsoft Entra ID-Anmeldeinformationen. Der Schlüssel ist eine Zeichenfolge aus 32 Zeichen.

Sobald diese Voraussetzungen erfüllt sind, installieren Sie die Azure-Inferenzbibliothek für JavaScript mit dem folgenden Befehl:

npm install @azure-rest/ai-inference

Arbeiten mit Chatvervollständigungen

In diesem Abschnitt verwenden Sie die Azure KI-Modellinferenz-API mit einem Chatvervollständigungsmodell für Chats.

Tipp

Über die Azure KI-Modellinferenz-API können Sie mit den meisten in Azure AI Foundry bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich DeepSeek-R1.

Erstellen eines Clients zur Nutzung des Modells

Erstellen Sie als Erstes einen Client zum Nutzen des Modells. Der folgende Code verwendet eine Endpunkt-URL und einen Schlüssel, die in Umgebungsvariablen gespeichert sind.

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)
);

Abrufen der Funktionen des Modells

Die /info-Route gibt Informationen zu dem Modell zurück, das für den Endpunkt bereitgestellt wird. Geben Sie die Informationen des Modells zurück, indem Sie die folgende Methode aufrufen:

var model_info = await client.path("/info").get()

Die Antwort lautet wie folgt:

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

Erstellen einer Chatvervollständigungsanforderung

Das folgende Beispiel zeigt, wie Sie eine einfache Chatvervollständigungsanforderung an das Modell erstellen können.

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,
    }
});

Die Antwort lautet wie folgt, wobei Sie die Nutzungsstatistiken des Modells sehen können:

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

Überprüfen Sie den Abschnitt usage in der Antwort, um die Anzahl der Token für den Prompt, die Gesamtzahl der generierten Token und die Anzahl der Token für den Abschluss zu sehen.

Grundlegendes zu Begründung

Einige Begründungsmodelle, z. B. DeepSeek-R1, generieren Fertigstellungen und schließen die Begründung dafür ein. Die dem Abschluss zugeordnete Begründung ist im Inhalt der Antwort in den Tags <think> und </think> enthalten. Das Modell kann auswählen, in welchen Szenarien Begründungen für die Inhaltserstellung generiert werden sollen. Zum Beispiel:

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,
    }
});

Sie können den Begründungsinhalt wie folgt aus der Antwort extrahieren, um den Gedankenprozess des Modells zu verstehen:

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

Streamen von Inhalten

Standardmäßig gibt die Vervollständigungs-API den gesamten generierten Inhalt in einer einzigen Antwort zurück. Wenn Sie lange Vervollständigungen generieren, kann das Warten auf die Antwort viele Sekunden dauern.

Sie können die Inhalte Streamen, um sie abzurufen, während sie generiert werden. Durch das Streamen von Inhalten können Sie mit der Verarbeitung der Vervollständigung beginnen, sobald Inhalte verfügbar sind. Dieser Modus gibt ein Objekt zurück, das die Antwort als vom Server gesendete Ereignisse (nur Daten) zurückgibt. Extrahieren Sie Blöcke aus dem Deltafeld und nicht aus dem Nachrichtenfeld.

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();

Um Vervollständigungen zu streamen, verwenden Sie .asNodeStream(), wenn Sie das Modell aufrufen.

Sie können visualisieren, wie beim Streaming Inhalte generiert werden:

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 ?? "");
    }
}

Anwenden von Inhaltssicherheit

Die Azure KI-Modellinferenz-API unterstützt Azure KI Inhaltssicherheit. Wenn Sie Bereitstellungen mit aktivierter Azure KI Inhaltssicherheit verwenden, durchlaufen Eingaben und Ausgaben eine Gruppe von Klassifizierungsmodellen, die darauf abzielen, die Ausgabe schädlicher Inhalte zu erkennen und zu verhindern. Das System zur Inhaltsfilterung (Vorschau) erkennt bestimmte Kategorien potenziell schädlicher Inhalte sowohl in Eingabeprompts als auch in Ausgabevervollständigungen und ergreift entsprechende Maßnahmen.

Das folgende Beispiel zeigt, wie Ereignisse behandelt werden, wenn das Modell schädliche Inhalte im Prompt erkennt und die Inhaltssicherheit aktiviert ist.

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;
        }
    }
}

Tipp

Weitere Informationen zum Konfigurieren und Steuern von Einstellungen der Azure KI Inhaltssicherheit finden Sie in der Dokumentation zu Azure KI Inhaltssicherheit.

DeepSeek-R1

DeepSeek-R1 baut auf den Fortschritten früherer Modelle mit Fokus auf Begründung auf, die die Leistung durch Erweitern von Chain-of-Thought (CoT)-Begründung verbessert haben. DeepSeek-R1 geht noch weiter, indem vertiefendes Lernen (Reinforcement Learning, RL) mit feiner Optimierung auf sorgfältig ausgewählten Datasets kombiniert wird. Es entwickelte sich aus einer früheren Version, DeepSeek-R1-Zero, die ausschließlich auf RL basiert und starke Begründungskenntnisse zeigte, aber Probleme wie schwer zu lesende Ausgaben und Sprachinkonsistenzen hatte. Um diese Einschränkungen zu beheben, enthält DeepSeek-R1 eine kleine Menge von Kaltstartdaten und folgt einer verfeinerten Trainingspipeline, die das begründungsorientierte RL mit überwachter Feinabstimmung auf kuratierten Datasets kombiniert, was zu einem Modell führt, das eine hochmoderne Leistung bei Begründungsbenchmarks erzielt.

Weitere Informationen zu den Modellen finden Sie auf der jeweiligen Modellkarte:

Voraussetzungen

Um DeepSeek-R1 mit Azure KI Foundry zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung für serverlose APIs

DeepSeek-R1 kann für serverlose API-Endpunkte mit nutzungsbasierter Abrechnung bereitgestellt werden. Diese Art von Bereitstellung bietet eine Möglichkeit, Modelle als API zu nutzen, ohne sie in Ihrem Abonnement zu hosten, während die Unternehmenssicherheit und Compliance beibehalten werden, die Organisationen benötigen.

Zur Bereitstellung für einen serverlosen API-Endpunkt ist kein Kontingent aus Ihrem Abonnement erforderlich. Wenn Ihr Modell noch nicht bereitgestellt wurde, verwenden Sie Azure KI Studio, das Azure Machine Learning SDK für Python, die Azure CLI oder ARM-Vorlagen, um das Modell als serverlose API bereitzustellen.

Installiertes Inferenzpaket

Sie können Vorhersagen aus diesem Modell nutzen, indem Sie das Paket Azure.AI.Inference von NuGet verwenden. Zum Installieren dieses Pakets müssen folgende Voraussetzungen erfüllt sein:

  • Endpunkt-URL. Um die Clientbibliothek zu erstellen, müssen Sie die Endpunkt-URL übergeben. Die Endpunkt-URL hat das Format https://your-host-name.your-azure-region.inference.ai.azure.com, wobei your-host-name Ihr eindeutiger Hostname für die Modellimplementierung und your-azure-region die Azure-Region ist, in der das Modell bereitgestellt wird (z. B. „eastus2“).
  • Je nach Modellimplementierung und bevorzugter Authentifizierungsmethode benötigen Sie einen Schlüssel, um sich bei dem Dienst zu authentifizieren, oder Microsoft Entra ID-Anmeldeinformationen. Der Schlüssel ist eine Zeichenfolge aus 32 Zeichen.

Sobald diese Voraussetzungen erfüllt sind, installieren Sie die Azure KI-Inferenzbibliothek mit dem folgenden Befehl:

dotnet add package Azure.AI.Inference --prerelease

Sie können Sie auch mit Microsoft Entra ID (ehemals Azure Active Directory) authentifizieren. Um Anmeldeinformationsanbieter zu verwenden, die mit dem Azure SDK bereitgestellt werden, installieren Sie das Paket Azure.Identity:

dotnet add package Azure.Identity

Importieren Sie die folgenden Namespaces:

using Azure;
using Azure.Identity;
using Azure.AI.Inference;

In diesem Beispiel werden auch die folgenden Namespaces verwendet, allerdings kann es sein, dass Sie diese nicht immer benötigen:

using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;

Arbeiten mit Chatvervollständigungen

In diesem Abschnitt verwenden Sie die Azure KI-Modellinferenz-API mit einem Chatvervollständigungsmodell für Chats.

Tipp

Über die Azure KI-Modellinferenz-API können Sie mit den meisten in Azure AI Foundry bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich DeepSeek-R1.

Erstellen eines Clients zur Nutzung des Modells

Erstellen Sie als Erstes einen Client zum Nutzen des Modells. Der folgende Code verwendet eine Endpunkt-URL und einen Schlüssel, die in Umgebungsvariablen gespeichert sind.

ChatCompletionsClient client = new ChatCompletionsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL")),
    "DeepSeek-R1"
);

Abrufen der Funktionen des Modells

Die /info-Route gibt Informationen zu dem Modell zurück, das für den Endpunkt bereitgestellt wird. Geben Sie die Informationen des Modells zurück, indem Sie die folgende Methode aufrufen:

Response<ModelInfo> modelInfo = client.GetModelInfo();

Die Antwort lautet wie folgt:

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

Erstellen einer Chatvervollständigungsanforderung

Das folgende Beispiel zeigt, wie Sie eine einfache Chatvervollständigungsanforderung an das Modell erstellen können.

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);

Die Antwort lautet wie folgt, wobei Sie die Nutzungsstatistiken des Modells sehen können:

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

Überprüfen Sie den Abschnitt usage in der Antwort, um die Anzahl der Token für den Prompt, die Gesamtzahl der generierten Token und die Anzahl der Token für den Abschluss zu sehen.

Grundlegendes zu Begründung

Einige Begründungsmodelle, z. B. DeepSeek-R1, generieren Fertigstellungen und schließen die Begründung dafür ein. Die dem Abschluss zugeordnete Begründung ist im Inhalt der Antwort in den Tags <think> und </think> enthalten. Das Modell kann auswählen, in welchen Szenarien Begründungen für die Inhaltserstellung generiert werden sollen. Zum Beispiel:

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);

Sie können den Begründungsinhalt wie folgt aus der Antwort extrahieren, um den Gedankenprozess des Modells zu verstehen:

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

Streamen von Inhalten

Standardmäßig gibt die Vervollständigungs-API den gesamten generierten Inhalt in einer einzigen Antwort zurück. Wenn Sie lange Vervollständigungen generieren, kann das Warten auf die Antwort viele Sekunden dauern.

Sie können die Inhalte Streamen, um sie abzurufen, während sie generiert werden. Durch das Streamen von Inhalten können Sie mit der Verarbeitung der Vervollständigung beginnen, sobald Inhalte verfügbar sind. Dieser Modus gibt ein Objekt zurück, das die Antwort als vom Server gesendete Ereignisse (nur Daten) zurückgibt. Extrahieren Sie Blöcke aus dem Deltafeld und nicht aus dem Nachrichtenfeld.

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);
}

Um Vervollständigungen zu streamen, verwenden Sie die CompleteStreamingAsync-Methode, wenn Sie das Modell aufrufen. Beachten Sie, dass in diesem Beispiel der Aufruf in eine asynchrone Methode eingeschlossen wird.

Um die Ausgabe zu visualisieren, definieren Sie eine asynchrone Methode zum Drucken des Datenstroms in der Konsole.

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);
        }
    }
}

Sie können visualisieren, wie beim Streaming Inhalte generiert werden:

StreamMessageAsync(client).GetAwaiter().GetResult();

Anwenden von Inhaltssicherheit

Die Azure KI-Modellinferenz-API unterstützt Azure KI Inhaltssicherheit. Wenn Sie Bereitstellungen mit aktivierter Azure KI Inhaltssicherheit verwenden, durchlaufen Eingaben und Ausgaben eine Gruppe von Klassifizierungsmodellen, die darauf abzielen, die Ausgabe schädlicher Inhalte zu erkennen und zu verhindern. Das System zur Inhaltsfilterung (Vorschau) erkennt bestimmte Kategorien potenziell schädlicher Inhalte sowohl in Eingabeprompts als auch in Ausgabevervollständigungen und ergreift entsprechende Maßnahmen.

Das folgende Beispiel zeigt, wie Ereignisse behandelt werden, wenn das Modell schädliche Inhalte im Prompt erkennt und die Inhaltssicherheit aktiviert ist.

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;
    }
}

Tipp

Weitere Informationen zum Konfigurieren und Steuern von Einstellungen der Azure KI Inhaltssicherheit finden Sie in der Dokumentation zu Azure KI Inhaltssicherheit.

DeepSeek-R1

DeepSeek-R1 baut auf den Fortschritten früherer Modelle mit Fokus auf Begründung auf, die die Leistung durch Erweitern von Chain-of-Thought (CoT)-Begründung verbessert haben. DeepSeek-R1 geht noch weiter, indem vertiefendes Lernen (Reinforcement Learning, RL) mit feiner Optimierung auf sorgfältig ausgewählten Datasets kombiniert wird. Es entwickelte sich aus einer früheren Version, DeepSeek-R1-Zero, die ausschließlich auf RL basiert und starke Begründungskenntnisse zeigte, aber Probleme wie schwer zu lesende Ausgaben und Sprachinkonsistenzen hatte. Um diese Einschränkungen zu beheben, enthält DeepSeek-R1 eine kleine Menge von Kaltstartdaten und folgt einer verfeinerten Trainingspipeline, die das begründungsorientierte RL mit überwachter Feinabstimmung auf kuratierten Datasets kombiniert, was zu einem Modell führt, das eine hochmoderne Leistung bei Begründungsbenchmarks erzielt.

Weitere Informationen zu den Modellen finden Sie auf der jeweiligen Modellkarte:

Voraussetzungen

Um DeepSeek-R1 mit Azure KI Foundry zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung für serverlose APIs

DeepSeek-R1 kann für serverlose API-Endpunkte mit nutzungsbasierter Abrechnung bereitgestellt werden. Diese Art von Bereitstellung bietet eine Möglichkeit, Modelle als API zu nutzen, ohne sie in Ihrem Abonnement zu hosten, während die Unternehmenssicherheit und Compliance beibehalten werden, die Organisationen benötigen.

Zur Bereitstellung für einen serverlosen API-Endpunkt ist kein Kontingent aus Ihrem Abonnement erforderlich. Wenn Ihr Modell noch nicht bereitgestellt wurde, verwenden Sie Azure KI Studio, das Azure Machine Learning SDK für Python, die Azure CLI oder ARM-Vorlagen, um das Modell als serverlose API bereitzustellen.

REST-Client

Modelle, die mit der Azure KI-Modellinferenz-API bereitgestellt werden, können mit jedem REST-Client genutzt werden. Zur Verwendung des REST-Clients müssen folgende Voraussetzungen erfüllt sein:

  • Um die Anforderungen zu erstellen, müssen Sie die Endpunkt-URL übergeben. Die Endpunkt-URL hat das Format https://your-host-name.your-azure-region.inference.ai.azure.com, wobei your-host-name`` is your unique model deployment host name and your-azure-region`` die Azure-Region ist, in der das Modell bereitgestellt wird (z. B. „eastus2“).
  • Je nach Modellimplementierung und bevorzugter Authentifizierungsmethode benötigen Sie einen Schlüssel, um sich bei dem Dienst zu authentifizieren, oder Microsoft Entra ID-Anmeldeinformationen. Der Schlüssel ist eine Zeichenfolge aus 32 Zeichen.

Arbeiten mit Chatvervollständigungen

In diesem Abschnitt verwenden Sie die Azure KI-Modellinferenz-API mit einem Chatvervollständigungsmodell für Chats.

Tipp

Über die Azure KI-Modellinferenz-API können Sie mit den meisten in Azure AI Foundry bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich DeepSeek-R1.

Erstellen eines Clients zur Nutzung des Modells

Erstellen Sie als Erstes einen Client zum Nutzen des Modells. Der folgende Code verwendet eine Endpunkt-URL und einen Schlüssel, die in Umgebungsvariablen gespeichert sind.

Abrufen der Funktionen des Modells

Die /info-Route gibt Informationen zu dem Modell zurück, das für den Endpunkt bereitgestellt wird. Geben Sie die Informationen des Modells zurück, indem Sie die folgende Methode aufrufen:

GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json

Die Antwort lautet wie folgt:

{
    "model_name": "DeepSeek-R1",
    "model_type": "chat-completions",
    "model_provider_name": "DeepSeek"
}

Erstellen einer Chatvervollständigungsanforderung

Das folgende Beispiel zeigt, wie Sie eine einfache Chatvervollständigungsanforderung an das Modell erstellen können.

{
    "model": "DeepSeek-R1",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ]
}

Die Antwort lautet wie folgt, wobei Sie die Nutzungsstatistiken des Modells sehen können:

{
    "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
    }
}

Überprüfen Sie den Abschnitt usage in der Antwort, um die Anzahl der Token für den Prompt, die Gesamtzahl der generierten Token und die Anzahl der Token für den Abschluss zu sehen.

Grundlegendes zu Begründung

Einige Begründungsmodelle, z. B. DeepSeek-R1, generieren Fertigstellungen und schließen die Begründung dafür ein. Die dem Abschluss zugeordnete Begründung ist im Inhalt der Antwort in den Tags <think> und </think> enthalten. Das Modell kann auswählen, in welchen Szenarien Begründungen für die Inhaltserstellung generiert werden sollen. Zum Beispiel:

{
    "model": "DeepSeek-R1",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ]
}

Sie können den Begründungsinhalt wie folgt aus der Antwort extrahieren, um den Gedankenprozess des Modells zu verstehen:

{
    "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
    }
}

Streamen von Inhalten

Standardmäßig gibt die Vervollständigungs-API den gesamten generierten Inhalt in einer einzigen Antwort zurück. Wenn Sie lange Vervollständigungen generieren, kann das Warten auf die Antwort viele Sekunden dauern.

Sie können die Inhalte Streamen, um sie abzurufen, während sie generiert werden. Durch das Streamen von Inhalten können Sie mit der Verarbeitung der Vervollständigung beginnen, sobald Inhalte verfügbar sind. Dieser Modus gibt ein Objekt zurück, das die Antwort als vom Server gesendete Ereignisse (nur Daten) zurückgibt. Extrahieren Sie Blöcke aus dem Deltafeld und nicht aus dem Nachrichtenfeld.

{
    "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
}

Sie können visualisieren, wie beim Streaming Inhalte generiert werden:

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "DeepSeek-R1",
    "choices": [
        {
            "index": 0,
            "delta": {
                "role": "assistant",
                "content": ""
            },
            "finish_reason": null,
            "logprobs": null
        }
    ]
}

In der letzten Nachricht im Stream ist finish_reason festgelegt, was auf den Grund für das Beenden des Generierungsprozesses hinweist.

{
    "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
    }
}

Anwenden von Inhaltssicherheit

Die Azure KI-Modellinferenz-API unterstützt Azure KI Inhaltssicherheit. Wenn Sie Bereitstellungen mit aktivierter Azure KI Inhaltssicherheit verwenden, durchlaufen Eingaben und Ausgaben eine Gruppe von Klassifizierungsmodellen, die darauf abzielen, die Ausgabe schädlicher Inhalte zu erkennen und zu verhindern. Das System zur Inhaltsfilterung (Vorschau) erkennt bestimmte Kategorien potenziell schädlicher Inhalte sowohl in Eingabeprompts als auch in Ausgabevervollständigungen und ergreift entsprechende Maßnahmen.

Das folgende Beispiel zeigt, wie Ereignisse behandelt werden, wenn das Modell schädliche Inhalte im Prompt erkennt und die Inhaltssicherheit aktiviert ist.

{
    "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
    }
}

Tipp

Weitere Informationen zum Konfigurieren und Steuern von Einstellungen der Azure KI Inhaltssicherheit finden Sie in der Dokumentation zu Azure KI Inhaltssicherheit.

Modellrückschluss: Beispiele

Weitere Beispiele für die Verwendung von DeepSeek-Modellen finden Sie in den folgenden Beispielen und Tutorials:

Beschreibung Sprache Beispiel
Azure KI-Inferenzpaket für Python Python Link
Azure KI-Rückschlusspaket für JavaScript JavaScript Link
Azure KI-Rückschlusspaket für C# C# Link
Azure KI-Rückschlusspaket für Java Java Link

Überlegungen zu Kosten und Kontingenten für DeepSeek-Modelle, die als serverlose API-Endpunkte bereitgestellt werden

Das Kontingent wird pro Bereitstellung verwaltet. Jede Bereitstellung hat eine Rate von 200.000 Token pro Minute und 1.000 API-Anforderungen pro Minute. Derzeit wird jedoch eine Bereitstellung pro Modell und Projekt beschränkt. Wenden Sie sich an den Microsoft Azure-Support, wenn die aktuellen Ratenbegrenzungen für Ihre Szenarien nicht ausreichen.