Sdílet prostřednictvím


Jak používat model odůvodnění DeepSeek-R1

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

V tomto článku se dozvíte o DeepSeek-R1 a o tom, jak je používat. DeepSeek-R1 exceluje při odůvodnění úkolů pomocí podrobného trénovacího procesu, jako je jazyk, vědecké uvažování a psaní kódu. Obsahuje celkový počet parametrů 671B s aktivními parametry 37B a délkou kontextu 128 tisíc.

Důležité

Modely, které jsou ve verzi Preview, jsou na kartách modelu v katalogu modelů označené jako náhled .

DeepSeek-R1

DeepSeek-R1 vychází z pokroku modelů zaměřených na dřívější důvody, které zlepšily výkon rozšířením odůvodnění chain-of-thought (CoT). DeepSeek-R1 bere věci dál tím, že kombinuje výztužné učení (RL) s jemně vyladěním pečlivě zvolených datových sad. Vyvinul se z dřívější verze DeepSeek-R1-Zero, která se spoléhala výhradně na RL a ukázala silné rozumové dovednosti, ale měla problémy, jako jsou výstupy s těžko čitelným čtením a nekonzistencí jazyka. Aby bylo možné tato omezení vyřešit, DeepSeek-R1 zahrnuje malé množství dat studeného startu a řídí se zpřesněným trénovacím kanálem, který kombinuje zdůvodnění orientovaného seznamu odvolaných dat s jemně vyladěním pod dohledem na kurátorovaných datových sadách, což vede k modelu, který dosahuje špičkového výkonu na základě srovnávacích testů s odůvodněním.

Další informace omodelch

Požadavky

Pokud chcete použít DeepSeek-R1 s Azure AI Foundry, potřebujete následující požadavky:

Nasazení modelu

Nasazení do bezserverových rozhraní API

DeepSeek-R1 je možné nasadit do koncových bodů bezserverového rozhraní API s průběžnými platbami. Tento druh nasazení poskytuje způsob, jak využívat modely jako rozhraní API bez jejich hostování ve vašem předplatném a současně udržovat podnikové zabezpečení a dodržování předpisů, které organizace potřebují.

Nasazení do koncového bodu bezserverového rozhraní API nevyžaduje kvótu z vašeho předplatného. Pokud váš model ještě není nasazený, nasaďte model jako bezserverové rozhraní API pomocí sady Azure AI Studio, sady Azure Machine Learning SDK pro Python, Azure CLI nebo šablon ARM.

Nainstalovaný balíček odvození

Predikce z tohoto modelu můžete využívat pomocí azure-ai-inference balíčku s Pythonem. K instalaci tohoto balíčku potřebujete následující požadavky:

  • Nainstalovaný Python 3.8 nebo novější, včetně pipu.
  • Adresa URL koncového bodu. Pokud chcete vytvořit klientskou knihovnu, musíte předat adresu URL koncového bodu. Adresa URL koncového bodu má formulář https://your-host-name.your-azure-region.inference.ai.azure.com, kde your-host-name je jedinečný název hostitele nasazení modelu a your-azure-region oblast Azure, ve které je model nasazený (například eastus2).
  • V závislosti na nasazení modelu a předvolbě ověřování potřebujete klíč k ověření ve službě nebo přihlašovací údaje Microsoft Entra ID. Klíč je řetězec s 32 znaky.

Jakmile budete mít tyto požadavky, nainstalujte balíček odvození Azure AI pomocí následujícího příkazu:

pip install azure-ai-inference

Přečtěte si další informace o balíčku a referenci pro odvození AI v Azure.

Práce s dokončováním chatu

V této části použijete rozhraní API pro odvozování modelů Azure AI s modelem dokončování chatu pro chat.

Tip

Rozhraní API pro odvozování modelů Azure AI umožňuje komunikovat s většinou modelů nasazených v Azure AI Foundry se stejným kódem a strukturou, včetně DeepSeek-R1.

Vytvoření klienta pro využívání modelu

Nejprve vytvořte klienta, který bude model využívat. Následující kód používá adresu URL koncového bodu a klíč, které jsou uložené v proměnných prostředí.

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

Získání možností modelu

Trasa /info vrátí informace o modelu, který je nasazený do koncového bodu. Informace o modelu vrátíte voláním následující metody:

model_info = client.get_model_info()

Odpověď je následující:

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

Vytvoření žádosti o dokončení chatu

Následující příklad ukazuje, jak můžete vytvořit základní požadavek na dokončení chatu do modelu.

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

Odpověď je následující, kde vidíte statistiku využití modelu:

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

usage Zkontrolujte část v odpovědi a podívejte se na počet tokenů použitých pro výzvu, celkový počet vygenerovaných tokenů a počet tokenů použitých k dokončení.

Principy odůvodnění

Některé modely zdůvodnění, jako je DeepSeek-R1, generují dokončení a zahrnují odůvodnění. Odůvodnění spojené s dokončením je součástí obsahu odpovědi v rámci značek <think> a </think>. Model může vybrat, ve kterých scénářích se má generovat důvod k obsahu. Příklad:

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

Z odpovědi můžete extrahovat odůvodnění, abyste porozuměli myšlenkovým procesům modelu následujícím způsobem:

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

Streamování obsahu

Ve výchozím nastavení rozhraní API pro dokončování vrátí celý vygenerovaný obsah v jedné odpovědi. Pokud generujete dlouhé dokončení, čekání na odpověď může trvat mnoho sekund.

Obsah můžete streamovat , abyste ho získali při generování. Streamování obsahu umožňuje zahájit zpracování dokončení, jakmile bude obsah k dispozici. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z rozdílového pole, nikoli z pole zprávy.

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

Pokud chcete streamovat dokončení, nastavte stream=True při volání modelu.

Pokud chcete vizualizovat výstup, definujte pomocnou funkci pro tisk datového proudu.

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

Můžete vizualizovat, jak streamování generuje obsah:

print_stream(result)

Použití bezpečnosti obsahu

Rozhraní API pro odvozování modelů Azure AI podporuje bezpečnost obsahu Azure AI. Když používáte nasazení se zapnutou bezpečností obsahu Azure AI, vstupy a výstupy procházejí sadou klasifikačních modelů určených k detekci a zabránění výstupu škodlivého obsahu. Systém filtrování obsahu (Preview) detekuje a provádí akce s konkrétními kategoriemi potenciálně škodlivého obsahu ve vstupních výzev i dokončení výstupu.

Následující příklad ukazuje, jak zpracovat události, když model zjistí škodlivý obsah ve vstupní výzvě a bezpečnost obsahu je povolen.

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

Tip

Další informace o tom, jak nakonfigurovat a řídit nastavení zabezpečení obsahu Azure AI, najdete v dokumentaci k zabezpečení obsahu Azure AI.

DeepSeek-R1

DeepSeek-R1 vychází z pokroku modelů zaměřených na dřívější důvody, které zlepšily výkon rozšířením odůvodnění chain-of-thought (CoT). DeepSeek-R1 bere věci dál tím, že kombinuje výztužné učení (RL) s jemně vyladěním pečlivě zvolených datových sad. Vyvinul se z dřívější verze DeepSeek-R1-Zero, která se spoléhala výhradně na RL a ukázala silné rozumové dovednosti, ale měla problémy, jako jsou výstupy s těžko čitelným čtením a nekonzistencí jazyka. Aby bylo možné tato omezení vyřešit, DeepSeek-R1 zahrnuje malé množství dat studeného startu a řídí se zpřesněným trénovacím kanálem, který kombinuje zdůvodnění orientovaného seznamu odvolaných dat s jemně vyladěním pod dohledem na kurátorovaných datových sadách, což vede k modelu, který dosahuje špičkového výkonu na základě srovnávacích testů s odůvodněním.

Další informace omodelch

Požadavky

Pokud chcete použít DeepSeek-R1 s Azure AI Foundry, potřebujete následující požadavky:

Nasazení modelu

Nasazení do bezserverových rozhraní API

DeepSeek-R1 je možné nasadit do koncových bodů bezserverového rozhraní API s průběžnými platbami. Tento druh nasazení poskytuje způsob, jak využívat modely jako rozhraní API bez jejich hostování ve vašem předplatném a současně udržovat podnikové zabezpečení a dodržování předpisů, které organizace potřebují.

Nasazení do koncového bodu bezserverového rozhraní API nevyžaduje kvótu z vašeho předplatného. Pokud váš model ještě není nasazený, nasaďte model jako bezserverové rozhraní API pomocí sady Azure AI Studio, sady Azure Machine Learning SDK pro Python, Azure CLI nebo šablon ARM.

Nainstalovaný balíček odvození

Predikce z tohoto modelu můžete využívat pomocí @azure-rest/ai-inference balíčku z npm. K instalaci tohoto balíčku potřebujete následující požadavky:

  • VERZE LTS s Node.jsnpm.
  • Adresa URL koncového bodu. Pokud chcete vytvořit klientskou knihovnu, musíte předat adresu URL koncového bodu. Adresa URL koncového bodu má formulář https://your-host-name.your-azure-region.inference.ai.azure.com, kde your-host-name je jedinečný název hostitele nasazení modelu a your-azure-region oblast Azure, ve které je model nasazený (například eastus2).
  • V závislosti na nasazení modelu a předvolbě ověřování potřebujete klíč k ověření ve službě nebo přihlašovací údaje Microsoft Entra ID. Klíč je řetězec s 32 znaky.

Jakmile budete mít tyto požadavky, nainstalujte knihovnu Azure Inference pro JavaScript pomocí následujícího příkazu:

npm install @azure-rest/ai-inference

Práce s dokončováním chatu

V této části použijete rozhraní API pro odvozování modelů Azure AI s modelem dokončování chatu pro chat.

Tip

Rozhraní API pro odvozování modelů Azure AI umožňuje komunikovat s většinou modelů nasazených v Azure AI Foundry se stejným kódem a strukturou, včetně DeepSeek-R1.

Vytvoření klienta pro využívání modelu

Nejprve vytvořte klienta, který bude model využívat. Následující kód používá adresu URL koncového bodu a klíč, které jsou uložené v proměnných prostředí.

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

Získání možností modelu

Trasa /info vrátí informace o modelu, který je nasazený do koncového bodu. Informace o modelu vrátíte voláním následující metody:

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

Odpověď je následující:

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

Vytvoření žádosti o dokončení chatu

Následující příklad ukazuje, jak můžete vytvořit základní požadavek na dokončení chatu do modelu.

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

Odpověď je následující, kde vidíte statistiku využití modelu:

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

usage Zkontrolujte část v odpovědi a podívejte se na počet tokenů použitých pro výzvu, celkový počet vygenerovaných tokenů a počet tokenů použitých k dokončení.

Principy odůvodnění

Některé modely zdůvodnění, jako je DeepSeek-R1, generují dokončení a zahrnují odůvodnění. Odůvodnění spojené s dokončením je součástí obsahu odpovědi v rámci značek <think> a </think>. Model může vybrat, ve kterých scénářích se má generovat důvod k obsahu. Příklad:

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

Z odpovědi můžete extrahovat odůvodnění, abyste porozuměli myšlenkovým procesům modelu následujícím způsobem:

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

Streamování obsahu

Ve výchozím nastavení rozhraní API pro dokončování vrátí celý vygenerovaný obsah v jedné odpovědi. Pokud generujete dlouhé dokončení, čekání na odpověď může trvat mnoho sekund.

Obsah můžete streamovat , abyste ho získali při generování. Streamování obsahu umožňuje zahájit zpracování dokončení, jakmile bude obsah k dispozici. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z rozdílového pole, nikoli z pole zprávy.

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

K dokončení datových proudů použijte .asNodeStream() při volání modelu.

Můžete vizualizovat, jak streamování generuje obsah:

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

Použití bezpečnosti obsahu

Rozhraní API pro odvozování modelů Azure AI podporuje bezpečnost obsahu Azure AI. Když používáte nasazení se zapnutou bezpečností obsahu Azure AI, vstupy a výstupy procházejí sadou klasifikačních modelů určených k detekci a zabránění výstupu škodlivého obsahu. Systém filtrování obsahu (Preview) detekuje a provádí akce s konkrétními kategoriemi potenciálně škodlivého obsahu ve vstupních výzev i dokončení výstupu.

Následující příklad ukazuje, jak zpracovat události, když model zjistí škodlivý obsah ve vstupní výzvě a bezpečnost obsahu je povolen.

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

Tip

Další informace o tom, jak nakonfigurovat a řídit nastavení zabezpečení obsahu Azure AI, najdete v dokumentaci k zabezpečení obsahu Azure AI.

DeepSeek-R1

DeepSeek-R1 vychází z pokroku modelů zaměřených na dřívější důvody, které zlepšily výkon rozšířením odůvodnění chain-of-thought (CoT). DeepSeek-R1 bere věci dál tím, že kombinuje výztužné učení (RL) s jemně vyladěním pečlivě zvolených datových sad. Vyvinul se z dřívější verze DeepSeek-R1-Zero, která se spoléhala výhradně na RL a ukázala silné rozumové dovednosti, ale měla problémy, jako jsou výstupy s těžko čitelným čtením a nekonzistencí jazyka. Aby bylo možné tato omezení vyřešit, DeepSeek-R1 zahrnuje malé množství dat studeného startu a řídí se zpřesněným trénovacím kanálem, který kombinuje zdůvodnění orientovaného seznamu odvolaných dat s jemně vyladěním pod dohledem na kurátorovaných datových sadách, což vede k modelu, který dosahuje špičkového výkonu na základě srovnávacích testů s odůvodněním.

Další informace omodelch

Požadavky

Pokud chcete použít DeepSeek-R1 s Azure AI Foundry, potřebujete následující požadavky:

Nasazení modelu

Nasazení do bezserverových rozhraní API

DeepSeek-R1 je možné nasadit do koncových bodů bezserverového rozhraní API s průběžnými platbami. Tento druh nasazení poskytuje způsob, jak využívat modely jako rozhraní API bez jejich hostování ve vašem předplatném a současně udržovat podnikové zabezpečení a dodržování předpisů, které organizace potřebují.

Nasazení do koncového bodu bezserverového rozhraní API nevyžaduje kvótu z vašeho předplatného. Pokud váš model ještě není nasazený, nasaďte model jako bezserverové rozhraní API pomocí sady Azure AI Studio, sady Azure Machine Learning SDK pro Python, Azure CLI nebo šablon ARM.

Nainstalovaný balíček odvození

Predikce z tohoto modelu můžete využívat pomocí Azure.AI.Inference balíčku z NuGetu. K instalaci tohoto balíčku potřebujete následující požadavky:

  • Adresa URL koncového bodu. Pokud chcete vytvořit klientskou knihovnu, musíte předat adresu URL koncového bodu. Adresa URL koncového bodu má formulář https://your-host-name.your-azure-region.inference.ai.azure.com, kde your-host-name je jedinečný název hostitele nasazení modelu a your-azure-region oblast Azure, ve které je model nasazený (například eastus2).
  • V závislosti na nasazení modelu a předvolbě ověřování potřebujete klíč k ověření ve službě nebo přihlašovací údaje Microsoft Entra ID. Klíč je řetězec s 32 znaky.

Jakmile budete mít tyto požadavky, nainstalujte knihovnu odvození Azure AI pomocí následujícího příkazu:

dotnet add package Azure.AI.Inference --prerelease

Můžete se také ověřit pomocí Microsoft Entra ID (dříve Azure Active Directory). Pokud chcete používat zprostředkovatele přihlašovacích údajů poskytované sadou Azure SDK, nainstalujte Azure.Identity balíček:

dotnet add package Azure.Identity

Naimportujte následující obory názvů:

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

Tento příklad také používá následující obory názvů, ale nemusí je vždy potřebovat:

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

Práce s dokončováním chatu

V této části použijete rozhraní API pro odvozování modelů Azure AI s modelem dokončování chatu pro chat.

Tip

Rozhraní API pro odvozování modelů Azure AI umožňuje komunikovat s většinou modelů nasazených v Azure AI Foundry se stejným kódem a strukturou, včetně DeepSeek-R1.

Vytvoření klienta pro využívání modelu

Nejprve vytvořte klienta, který bude model využívat. Následující kód používá adresu URL koncového bodu a klíč, které jsou uložené v proměnných prostředí.

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

Získání možností modelu

Trasa /info vrátí informace o modelu, který je nasazený do koncového bodu. Informace o modelu vrátíte voláním následující metody:

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

Odpověď je následující:

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

Vytvoření žádosti o dokončení chatu

Následující příklad ukazuje, jak můžete vytvořit základní požadavek na dokončení chatu do modelu.

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

Odpověď je následující, kde vidíte statistiku využití modelu:

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

usage Zkontrolujte část v odpovědi a podívejte se na počet tokenů použitých pro výzvu, celkový počet vygenerovaných tokenů a počet tokenů použitých k dokončení.

Principy odůvodnění

Některé modely zdůvodnění, jako je DeepSeek-R1, generují dokončení a zahrnují odůvodnění. Odůvodnění spojené s dokončením je součástí obsahu odpovědi v rámci značek <think> a </think>. Model může vybrat, ve kterých scénářích se má generovat důvod k obsahu. Příklad:

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

Z odpovědi můžete extrahovat odůvodnění, abyste porozuměli myšlenkovým procesům modelu následujícím způsobem:

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

Streamování obsahu

Ve výchozím nastavení rozhraní API pro dokončování vrátí celý vygenerovaný obsah v jedné odpovědi. Pokud generujete dlouhé dokončení, čekání na odpověď může trvat mnoho sekund.

Obsah můžete streamovat , abyste ho získali při generování. Streamování obsahu umožňuje zahájit zpracování dokončení, jakmile bude obsah k dispozici. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z rozdílového pole, nikoli z pole zprávy.

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

K dokončení streamu použijte CompleteStreamingAsync metodu při volání modelu. Všimněte si, že v tomto příkladu je volání zabaleno do asynchronní metody.

Pokud chcete vizualizovat výstup, definujte asynchronní metodu pro tisk datového proudu v konzole.

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

Můžete vizualizovat, jak streamování generuje obsah:

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

Použití bezpečnosti obsahu

Rozhraní API pro odvozování modelů Azure AI podporuje bezpečnost obsahu Azure AI. Když používáte nasazení se zapnutou bezpečností obsahu Azure AI, vstupy a výstupy procházejí sadou klasifikačních modelů určených k detekci a zabránění výstupu škodlivého obsahu. Systém filtrování obsahu (Preview) detekuje a provádí akce s konkrétními kategoriemi potenciálně škodlivého obsahu ve vstupních výzev i dokončení výstupu.

Následující příklad ukazuje, jak zpracovat události, když model zjistí škodlivý obsah ve vstupní výzvě a bezpečnost obsahu je povolen.

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

Tip

Další informace o tom, jak nakonfigurovat a řídit nastavení zabezpečení obsahu Azure AI, najdete v dokumentaci k zabezpečení obsahu Azure AI.

DeepSeek-R1

DeepSeek-R1 vychází z pokroku modelů zaměřených na dřívější důvody, které zlepšily výkon rozšířením odůvodnění chain-of-thought (CoT). DeepSeek-R1 bere věci dál tím, že kombinuje výztužné učení (RL) s jemně vyladěním pečlivě zvolených datových sad. Vyvinul se z dřívější verze DeepSeek-R1-Zero, která se spoléhala výhradně na RL a ukázala silné rozumové dovednosti, ale měla problémy, jako jsou výstupy s těžko čitelným čtením a nekonzistencí jazyka. Aby bylo možné tato omezení vyřešit, DeepSeek-R1 zahrnuje malé množství dat studeného startu a řídí se zpřesněným trénovacím kanálem, který kombinuje zdůvodnění orientovaného seznamu odvolaných dat s jemně vyladěním pod dohledem na kurátorovaných datových sadách, což vede k modelu, který dosahuje špičkového výkonu na základě srovnávacích testů s odůvodněním.

Další informace omodelch

Požadavky

Pokud chcete použít DeepSeek-R1 s Azure AI Foundry, potřebujete následující požadavky:

Nasazení modelu

Nasazení do bezserverových rozhraní API

DeepSeek-R1 je možné nasadit do koncových bodů bezserverového rozhraní API s průběžnými platbami. Tento druh nasazení poskytuje způsob, jak využívat modely jako rozhraní API bez jejich hostování ve vašem předplatném a současně udržovat podnikové zabezpečení a dodržování předpisů, které organizace potřebují.

Nasazení do koncového bodu bezserverového rozhraní API nevyžaduje kvótu z vašeho předplatného. Pokud váš model ještě není nasazený, nasaďte model jako bezserverové rozhraní API pomocí sady Azure AI Studio, sady Azure Machine Learning SDK pro Python, Azure CLI nebo šablon ARM.

Klient REST

Modely nasazené s rozhraním API pro odvozování modelů Azure AI je možné využívat pomocí libovolného klienta REST. Pokud chcete použít klienta REST, potřebujete následující požadavky:

  • K vytvoření požadavků je potřeba předat adresu URL koncového bodu. Adresa URL koncového bodu má formulář https://your-host-name.your-azure-region.inference.ai.azure.com, ve kterém your-host-name`` is your unique model deployment host name and je oblast Azure, ve které je model nasazený (například eastus2).
  • V závislosti na nasazení modelu a předvolbě ověřování potřebujete klíč k ověření ve službě nebo přihlašovací údaje Microsoft Entra ID. Klíč je řetězec s 32 znaky.

Práce s dokončováním chatu

V této části použijete rozhraní API pro odvozování modelů Azure AI s modelem dokončování chatu pro chat.

Tip

Rozhraní API pro odvozování modelů Azure AI umožňuje komunikovat s většinou modelů nasazených v Azure AI Foundry se stejným kódem a strukturou, včetně DeepSeek-R1.

Vytvoření klienta pro využívání modelu

Nejprve vytvořte klienta, který bude model využívat. Následující kód používá adresu URL koncového bodu a klíč, které jsou uložené v proměnných prostředí.

Získání možností modelu

Trasa /info vrátí informace o modelu, který je nasazený do koncového bodu. Informace o modelu vrátíte voláním následující metody:

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

Odpověď je následující:

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

Vytvoření žádosti o dokončení chatu

Následující příklad ukazuje, jak můžete vytvořit základní požadavek na dokončení chatu do modelu.

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

Odpověď je následující, kde vidíte statistiku využití modelu:

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

usage Zkontrolujte část v odpovědi a podívejte se na počet tokenů použitých pro výzvu, celkový počet vygenerovaných tokenů a počet tokenů použitých k dokončení.

Principy odůvodnění

Některé modely zdůvodnění, jako je DeepSeek-R1, generují dokončení a zahrnují odůvodnění. Odůvodnění spojené s dokončením je součástí obsahu odpovědi v rámci značek <think> a </think>. Model může vybrat, ve kterých scénářích se má generovat důvod k obsahu. Příklad:

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

Z odpovědi můžete extrahovat odůvodnění, abyste porozuměli myšlenkovým procesům modelu následujícím způsobem:

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

Streamování obsahu

Ve výchozím nastavení rozhraní API pro dokončování vrátí celý vygenerovaný obsah v jedné odpovědi. Pokud generujete dlouhé dokončení, čekání na odpověď může trvat mnoho sekund.

Obsah můžete streamovat , abyste ho získali při generování. Streamování obsahu umožňuje zahájit zpracování dokončení, jakmile bude obsah k dispozici. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z rozdílového pole, nikoli z pole zprávy.

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

Můžete vizualizovat, jak streamování generuje obsah:

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

Poslední zpráva ve streamu je nastavená finish_reason , což označuje důvod zastavení procesu generování.

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

Použití bezpečnosti obsahu

Rozhraní API pro odvozování modelů Azure AI podporuje bezpečnost obsahu Azure AI. Když používáte nasazení se zapnutou bezpečností obsahu Azure AI, vstupy a výstupy procházejí sadou klasifikačních modelů určených k detekci a zabránění výstupu škodlivého obsahu. Systém filtrování obsahu (Preview) detekuje a provádí akce s konkrétními kategoriemi potenciálně škodlivého obsahu ve vstupních výzev i dokončení výstupu.

Následující příklad ukazuje, jak zpracovat události, když model zjistí škodlivý obsah ve vstupní výzvě a bezpečnost obsahu je povolen.

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

Tip

Další informace o tom, jak nakonfigurovat a řídit nastavení zabezpečení obsahu Azure AI, najdete v dokumentaci k zabezpečení obsahu Azure AI.

Další příklady odvození

Další příklady použití modelů DeepSeek najdete v následujících příkladech a kurzech:

Popis Jazyk Vzorek
Balíček odvozování Azure AI pro Python Python Odkaz
Balíček odvozování Azure AI pro JavaScript JavaScript Odkaz
Balíček odvozování Azure AI pro jazyk C# C# Odkaz
Balíček odvozování Azure AI pro Javu Java Odkaz

Důležité informace o nákladech a kvótách pro modely DeepSeek nasazené jako koncové body bezserverového rozhraní API

Kvóta se spravuje podle nasazení. Každé nasazení má limit rychlosti 200 000 tokenů za minutu a 1 000 požadavků rozhraní API za minutu. V současné době ale omezujeme jedno nasazení na model na jeden projekt. Pokud aktuální limity sazeb pro vaše scénáře nestačí, obraťte se na podporu Microsoft Azure.