Freigeben über


Verwenden von Mistral-7B- und Mixtral-Chatmodellen

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 Mistral-7B- und Mixtral-Chatmodelle und ihre Verwendung. Mistral AI bietet zwei Modellkategorien. Premiummodelle, einschließlich Mistral Large und Mistral Small, verfügbar als serverlose APIs mit tokenbasierter Abrechnung und nutzungsbasierter Bezahlung. Offene Modelle wie Mistral Nemo, Mixtral-8x7B-Instruct-v01, Mixtral-8x7B-v01, Mistral-7B-Instruct-v01 und Mistral-7B-v01, verfügbar auch für den Download und die Ausführung auf selbst gehosteten verwalteten Endpunkten.

Wichtig

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

Mistral-7B und Mixtral-Chatmodelle

Zu den Mistral-7B- und Mixtral-Chatmodellen gehören die folgenden Modelle:

Das Mistral-7B-Instruct Large Language Model (LLM) ist eine fein abgestimmte Instruct-Version von Mistral-7B, ein Transformatormodell mit den folgenden Architekturoptionen:

  • GQA (Grouped Query Attention, Aufmerksamkeit für gruppierte Abfragen)
  • SWA (Sliding Window Attention, Aufmerksamkeit für gleitendes Fenster)
  • Byte-Fallback-BPE-Tokenizer

Die folgenden Modelle sind verfügbar:

Tipp

Darüber hinaus unterstützt MistralAI die Verwendung einer maßgeschneiderten API für die Nutzung mit bestimmten Funktionen des Modells. Wenn Sie die modellanbieterspezifische API verwenden möchten, lesen Sie die MistralAI-Dokumentation, oder sehen Sie sich die Codebeispiele im Abschnitt zu Rückschlussbeispielen an.

Voraussetzungen

Um Mistral-7B- und Mixtral-Chatmodelle mit Azure KI Studio zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung auf selbst gehostetem verwaltetem Compute

Mistral-7B- und Mixtral-Chatmodelle können in unserer selbst gehosteten verwalteten Rückschlusslösung bereitgestellt werden, mit der Sie alle Details zur Bereitstellung des Modells anpassen und steuern können.

Für die Bereitstellung auf selbst gehostetem verwaltetem Compute müssen Sie über ein ausreichendes Kontingent in Ihrem Abonnement verfügen. Wenn kein ausreichendes Kontingent verfügbar ist, können Sie unseren temporären Kontingentzugriff nutzen, indem Sie die Option Ich möchte das freigegebene Kontingent verwenden und bestätige, dass dieser Endpunkt in 168 Stunden gelöscht wird auswählen.

Installiertes Rückschlusspaket

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-Modellrückschluss-API können Sie mit den meisten in Azure KI Studio bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich Mistral-7B- und Mixtral-Chatmodellen.

Erstellen eines Clients zum Nutzen 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"]),
)

Wenn Sie das Modell auf einem selbst gehosteten Onlineendpunkt mit Microsoft Entra ID-Unterstützung bereitstellen, können Sie den folgenden Codeschnipsel verwenden, um einen Client zu erstellen.

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
)

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: mistralai-Mistral-7B-Instruct-v01
Model type: chat-completions
Model provider name: MistralAI

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

Hinweis

mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 und mistralai-Mixtral-8x22B-Instruct-v0-1 unterstützen keine Systemnachrichten (role="system"). Wenn Sie die Azure KI-Modellrückschluss-API verwenden, werden Systemnachrichten in Benutzernachrichten übersetzt, die am weitesten übereinstimmende verfügbare Funktion. Diese Übersetzung wird zur Vereinfachung angeboten, aber es ist wichtig, zu überprüfen, ob das Modell den Anweisungen in der Systemnachricht mit dem richtigen Konfidenzgrad folgt.

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: mistralai-Mistral-7B-Instruct-v01
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.

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.
    """
    import time
    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)

Erkunden weiterer Parameter, die vom Inferenzclient unterstützt werden

Erkunden Sie weitere Parameter, die Sie im Inferenzclient angeben können. Eine vollständige Liste aller unterstützten Parameter und der entsprechenden Dokumentation finden Sie unter Referenz zur Azure KI-Modellinferenz-API.

from azure.ai.inference.models import ChatCompletionsResponseFormatText

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    presence_penalty=0.1,
    frequency_penalty=0.8,
    max_tokens=2048,
    stop=["<|endoftext|>"],
    temperature=0,
    top_p=1,
    response_format={ "type": ChatCompletionsResponseFormatText() },
)

Warnung

Mistral-Modelle unterstützen keine JSON-Ausgabeformatierung (response_format = { "type": "json_object" }). Sie können jederzeit einen Prompt an das Modell richten, um JSON-Ausgaben zu generieren. Solche Ausgaben sind jedoch nicht garantiert gültiger JSON-Code.

Wenn Sie einen Parameter übergeben möchten, der nicht in der Liste der unterstützten Parameter enthalten ist, können Sie ihn mithilfe zusätzlicher Parameter an das zugrunde liegende Modell übergeben. Weitere Informationen finden Sie unter Übergeben zusätzlicher Parameter an das Modell.

Übergeben zusätzlicher Parameter an das Modell

Mit der Azure KI-Modellinferenz-API können Sie zusätzliche Parameter an das Modell übergeben. Das folgende Codebeispiel zeigt, wie der zusätzliche Parameter logprobs an das Modell übergeben wird.

Bevor Sie zusätzliche Parameter an die Azure KI-Modellinferenz-API übergeben, stellen Sie sicher, dass Ihr Modell diese zusätzlichen Parameter unterstützt. Wenn die Anforderung an das zugrunde liegende Modell gestellt wird, wird der Header extra-parameters mit dem Wert pass-through an das Modell übergeben. Dieser Wert weist den Endpunkt an, die zusätzlichen Parameter an das Modell zu übergeben. Bei der Verwendung zusätzlicher Parameter mit dem Modell ist nicht garantiert, dass das Modell sie tatsächlich verarbeiten kann. Lesen Sie die Dokumentation des Modells, um zu verstehen, welche zusätzlichen Parameter unterstützt werden.

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

Die folgenden zusätzlichen Parameter können an Mistral-7B- und Mixtral-Chatmodelle übergeben werden:

Name Description type
logit_bias Ein JSON-Objekt, das Token (angegeben durch die Token-ID im Tokenizer) einem zugehörigen Verzerrungswert von –100 bis 100 zuordnet. Mathematisch gesehen wird die Verzerrung zu den Logits addiert, die das Modell vor der Stichprobenentnahme generiert. Die genaue Auswirkung ist von Modell zu Modell unterschiedlich, aber Werte zwischen -1 und 1 sollten die Wahrscheinlichkeit der Auswahl verringern oder erhöhen; Werte wie -100 oder 100 sollten zu einem Verbot oder einer ausschließlichen Auswahl des betreffenden Tokens führen. float
logprobs Gibt an, ob Protokollwahrscheinlichkeiten der Ausgabetoken zurückgegeben werden sollen. Wenn wahr, gibt die Protokollwahrscheinlichkeiten jedes Ausgabetokens zurück, das in der content von message zurückgegeben wird. int
top_logprobs Eine ganze Zahl zwischen 0 und 20, die die Anzahl der höchstwahrscheinlichen Token an jeder Tokenposition angibt, jeweils mit einer zugeordneten Protokollwahrscheinlichkeit. logprobs muss auf true festgelegt werden, wenn dieser Parameter verwendet wird. float
n Wie viele Optionen für die Chatvervollständigung für jede Eingabenachricht generiert werden sollen. Beachten Sie, dass Ihnen die Anzahl der generierten Tokens für alle Auswahlmöglichkeiten in Rechnung gestellt wird. int

Mistral-7B und Mixtral-Chatmodelle

Zu den Mistral-7B- und Mixtral-Chatmodellen gehören die folgenden Modelle:

Das Mistral-7B-Instruct Large Language Model (LLM) ist eine fein abgestimmte Instruct-Version von Mistral-7B, ein Transformatormodell mit den folgenden Architekturoptionen:

  • GQA (Grouped Query Attention, Aufmerksamkeit für gruppierte Abfragen)
  • SWA (Sliding Window Attention, Aufmerksamkeit für gleitendes Fenster)
  • Byte-Fallback-BPE-Tokenizer

Die folgenden Modelle sind verfügbar:

Tipp

Darüber hinaus unterstützt MistralAI die Verwendung einer maßgeschneiderten API für die Nutzung mit bestimmten Funktionen des Modells. Wenn Sie die modellanbieterspezifische API verwenden möchten, lesen Sie die MistralAI-Dokumentation, oder sehen Sie sich die Codebeispiele im Abschnitt zu Rückschlussbeispielen an.

Voraussetzungen

Um Mistral-7B- und Mixtral-Chatmodelle mit Azure KI Studio zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung auf selbst gehostetem verwaltetem Compute

Mistral-7B- und Mixtral-Chatmodelle können in unserer selbst gehosteten verwalteten Rückschlusslösung bereitgestellt werden, mit der Sie alle Details zur Bereitstellung des Modells anpassen und steuern können.

Für die Bereitstellung auf selbst gehostetem verwaltetem Compute müssen Sie über ein ausreichendes Kontingent in Ihrem Abonnement verfügen. Wenn kein ausreichendes Kontingent verfügbar ist, können Sie unseren temporären Kontingentzugriff nutzen, indem Sie die Option Ich möchte das freigegebene Kontingent verwenden und bestätige, dass dieser Endpunkt in 168 Stunden gelöscht wird auswählen.

Installiertes Rückschlusspaket

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-Modellrückschluss-API können Sie mit den meisten in Azure KI Studio bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich Mistral-7B- und Mixtral-Chatmodellen.

Erstellen eines Clients zum Nutzen 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)
);

Wenn Sie das Modell auf einem selbst gehosteten Onlineendpunkt mit Microsoft Entra ID-Unterstützung bereitstellen, können Sie den folgenden Codeschnipsel verwenden, um einen Client zu erstellen.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { DefaultAzureCredential }  from "@azure/identity";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT, 
    new DefaultAzureCredential()
);

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: mistralai-Mistral-7B-Instruct-v01
Model type: chat-completions
Model provider name: MistralAI

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

Hinweis

mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 und mistralai-Mixtral-8x22B-Instruct-v0-1 unterstützen keine Systemnachrichten (role="system"). Wenn Sie die Azure KI-Modellrückschluss-API verwenden, werden Systemnachrichten in Benutzernachrichten übersetzt, die am weitesten übereinstimmende verfügbare Funktion. Diese Übersetzung wird zur Vereinfachung angeboten, aber es ist wichtig, zu überprüfen, ob das Modell den Anweisungen in der Systemnachricht mit dem richtigen Konfidenzgrad folgt.

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: mistralai-Mistral-7B-Instruct-v01
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.

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

Erkunden weiterer Parameter, die vom Inferenzclient unterstützt werden

Erkunden Sie weitere Parameter, die Sie im Inferenzclient angeben können. Eine vollständige Liste aller unterstützten Parameter und der entsprechenden Dokumentation finden Sie unter Referenz zur Azure KI-Modellinferenz-API.

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,
        presence_penalty: "0.1",
        frequency_penalty: "0.8",
        max_tokens: 2048,
        stop: ["<|endoftext|>"],
        temperature: 0,
        top_p: 1,
        response_format: { type: "text" },
    }
});

Warnung

Mistral-Modelle unterstützen keine JSON-Ausgabeformatierung (response_format = { "type": "json_object" }). Sie können jederzeit einen Prompt an das Modell richten, um JSON-Ausgaben zu generieren. Solche Ausgaben sind jedoch nicht garantiert gültiger JSON-Code.

Wenn Sie einen Parameter übergeben möchten, der nicht in der Liste der unterstützten Parameter enthalten ist, können Sie ihn mithilfe zusätzlicher Parameter an das zugrunde liegende Modell übergeben. Weitere Informationen finden Sie unter Übergeben zusätzlicher Parameter an das Modell.

Übergeben zusätzlicher Parameter an das Modell

Mit der Azure KI-Modellinferenz-API können Sie zusätzliche Parameter an das Modell übergeben. Das folgende Codebeispiel zeigt, wie der zusätzliche Parameter logprobs an das Modell übergeben wird.

Bevor Sie zusätzliche Parameter an die Azure KI-Modellinferenz-API übergeben, stellen Sie sicher, dass Ihr Modell diese zusätzlichen Parameter unterstützt. Wenn die Anforderung an das zugrunde liegende Modell gestellt wird, wird der Header extra-parameters mit dem Wert pass-through an das Modell übergeben. Dieser Wert weist den Endpunkt an, die zusätzlichen Parameter an das Modell zu übergeben. Bei der Verwendung zusätzlicher Parameter mit dem Modell ist nicht garantiert, dass das Modell sie tatsächlich verarbeiten kann. Lesen Sie die Dokumentation des Modells, um zu verstehen, welche zusätzlichen Parameter unterstützt werden.

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({
    headers: {
        "extra-params": "pass-through"
    },
    body: {
        messages: messages,
        logprobs: true
    }
});

Die folgenden zusätzlichen Parameter können an Mistral-7B- und Mixtral-Chatmodelle übergeben werden:

Name Description type
logit_bias Ein JSON-Objekt, das Token (angegeben durch die Token-ID im Tokenizer) einem zugehörigen Verzerrungswert von –100 bis 100 zuordnet. Mathematisch gesehen wird die Verzerrung zu den Logits addiert, die das Modell vor der Stichprobenentnahme generiert. Die genaue Auswirkung ist von Modell zu Modell unterschiedlich, aber Werte zwischen -1 und 1 sollten die Wahrscheinlichkeit der Auswahl verringern oder erhöhen; Werte wie -100 oder 100 sollten zu einem Verbot oder einer ausschließlichen Auswahl des betreffenden Tokens führen. float
logprobs Gibt an, ob Protokollwahrscheinlichkeiten der Ausgabetoken zurückgegeben werden sollen. Wenn wahr, gibt die Protokollwahrscheinlichkeiten jedes Ausgabetokens zurück, das in der content von message zurückgegeben wird. int
top_logprobs Eine ganze Zahl zwischen 0 und 20, die die Anzahl der höchstwahrscheinlichen Token an jeder Tokenposition angibt, jeweils mit einer zugeordneten Protokollwahrscheinlichkeit. logprobs muss auf true festgelegt werden, wenn dieser Parameter verwendet wird. float
n Wie viele Optionen für die Chatvervollständigung für jede Eingabenachricht generiert werden sollen. Beachten Sie, dass Ihnen die Anzahl der generierten Tokens für alle Auswahlmöglichkeiten in Rechnung gestellt wird. int

Mistral-7B und Mixtral-Chatmodelle

Zu den Mistral-7B- und Mixtral-Chatmodellen gehören die folgenden Modelle:

Das Mistral-7B-Instruct Large Language Model (LLM) ist eine fein abgestimmte Instruct-Version von Mistral-7B, ein Transformatormodell mit den folgenden Architekturoptionen:

  • GQA (Grouped Query Attention, Aufmerksamkeit für gruppierte Abfragen)
  • SWA (Sliding Window Attention, Aufmerksamkeit für gleitendes Fenster)
  • Byte-Fallback-BPE-Tokenizer

Die folgenden Modelle sind verfügbar:

Tipp

Darüber hinaus unterstützt MistralAI die Verwendung einer maßgeschneiderten API für die Nutzung mit bestimmten Funktionen des Modells. Wenn Sie die modellanbieterspezifische API verwenden möchten, lesen Sie die MistralAI-Dokumentation, oder sehen Sie sich die Codebeispiele im Abschnitt zu Rückschlussbeispielen an.

Voraussetzungen

Um Mistral-7B- und Mixtral-Chatmodelle mit Azure KI Studio zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung auf selbst gehostetem verwaltetem Compute

Mistral-7B- und Mixtral-Chatmodelle können in unserer selbst gehosteten verwalteten Rückschlusslösung bereitgestellt werden, mit der Sie alle Details zur Bereitstellung des Modells anpassen und steuern können.

Für die Bereitstellung auf selbst gehostetem verwaltetem Compute müssen Sie über ein ausreichendes Kontingent in Ihrem Abonnement verfügen. Wenn kein ausreichendes Kontingent verfügbar ist, können Sie unseren temporären Kontingentzugriff nutzen, indem Sie die Option Ich möchte das freigegebene Kontingent verwenden und bestätige, dass dieser Endpunkt in 168 Stunden gelöscht wird auswählen.

Installiertes Rückschlusspaket

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-Modellrückschluss-API können Sie mit den meisten in Azure KI Studio bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich Mistral-7B- und Mixtral-Chatmodellen.

Erstellen eines Clients zum Nutzen 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"))
);

Wenn Sie das Modell auf einem selbst gehosteten Onlineendpunkt mit Microsoft Entra ID-Unterstützung bereitstellen, können Sie den folgenden Codeschnipsel verwenden, um einen Client zu erstellen.

client = new ChatCompletionsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new DefaultAzureCredential(includeInteractiveCredentials: true)
);

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: mistralai-Mistral-7B-Instruct-v01
Model type: chat-completions
Model provider name: MistralAI

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

Hinweis

mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 und mistralai-Mixtral-8x22B-Instruct-v0-1 unterstützen keine Systemnachrichten (role="system"). Wenn Sie die Azure KI-Modellrückschluss-API verwenden, werden Systemnachrichten in Benutzernachrichten übersetzt, die am weitesten übereinstimmende verfügbare Funktion. Diese Übersetzung wird zur Vereinfachung angeboten, aber es ist wichtig, zu überprüfen, ob das Modell den Anweisungen in der Systemnachricht mit dem richtigen Konfidenzgrad folgt.

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

Console.WriteLine($"Response: {response.Value.Choices[0].Message.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: mistralai-Mistral-7B-Instruct-v01
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.

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

Erkunden weiterer Parameter, die vom Inferenzclient unterstützt werden

Erkunden Sie weitere Parameter, die Sie im Inferenzclient angeben können. Eine vollständige Liste aller unterstützten Parameter und der entsprechenden Dokumentation finden Sie unter Referenz zur Azure KI-Modellinferenz-API.

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    PresencePenalty = 0.1f,
    FrequencyPenalty = 0.8f,
    MaxTokens = 2048,
    StopSequences = { "<|endoftext|>" },
    Temperature = 0,
    NucleusSamplingFactor = 1,
    ResponseFormat = new ChatCompletionsResponseFormatText()
};

response = client.Complete(requestOptions);
Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");

Warnung

Mistral-Modelle unterstützen keine JSON-Ausgabeformatierung (response_format = { "type": "json_object" }). Sie können jederzeit einen Prompt an das Modell richten, um JSON-Ausgaben zu generieren. Solche Ausgaben sind jedoch nicht garantiert gültiger JSON-Code.

Wenn Sie einen Parameter übergeben möchten, der nicht in der Liste der unterstützten Parameter enthalten ist, können Sie ihn mithilfe zusätzlicher Parameter an das zugrunde liegende Modell übergeben. Weitere Informationen finden Sie unter Übergeben zusätzlicher Parameter an das Modell.

Übergeben zusätzlicher Parameter an das Modell

Mit der Azure KI-Modellinferenz-API können Sie zusätzliche Parameter an das Modell übergeben. Das folgende Codebeispiel zeigt, wie der zusätzliche Parameter logprobs an das Modell übergeben wird.

Bevor Sie zusätzliche Parameter an die Azure KI-Modellinferenz-API übergeben, stellen Sie sicher, dass Ihr Modell diese zusätzlichen Parameter unterstützt. Wenn die Anforderung an das zugrunde liegende Modell gestellt wird, wird der Header extra-parameters mit dem Wert pass-through an das Modell übergeben. Dieser Wert weist den Endpunkt an, die zusätzlichen Parameter an das Modell zu übergeben. Bei der Verwendung zusätzlicher Parameter mit dem Modell ist nicht garantiert, dass das Modell sie tatsächlich verarbeiten kann. Lesen Sie die Dokumentation des Modells, um zu verstehen, welche zusätzlichen Parameter unterstützt werden.

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    AdditionalProperties = { { "logprobs", BinaryData.FromString("true") } },
};

response = client.Complete(requestOptions, extraParams: ExtraParameters.PassThrough);
Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");

Die folgenden zusätzlichen Parameter können an Mistral-7B- und Mixtral-Chatmodelle übergeben werden:

Name Description type
logit_bias Ein JSON-Objekt, das Token (angegeben durch die Token-ID im Tokenizer) einem zugehörigen Verzerrungswert von –100 bis 100 zuordnet. Mathematisch gesehen wird die Verzerrung zu den Logits addiert, die das Modell vor der Stichprobenentnahme generiert. Die genaue Auswirkung ist von Modell zu Modell unterschiedlich, aber Werte zwischen -1 und 1 sollten die Wahrscheinlichkeit der Auswahl verringern oder erhöhen; Werte wie -100 oder 100 sollten zu einem Verbot oder einer ausschließlichen Auswahl des betreffenden Tokens führen. float
logprobs Gibt an, ob Protokollwahrscheinlichkeiten der Ausgabetoken zurückgegeben werden sollen. Wenn wahr, gibt die Protokollwahrscheinlichkeiten jedes Ausgabetokens zurück, das in der content von message zurückgegeben wird. int
top_logprobs Eine ganze Zahl zwischen 0 und 20, die die Anzahl der höchstwahrscheinlichen Token an jeder Tokenposition angibt, jeweils mit einer zugeordneten Protokollwahrscheinlichkeit. logprobs muss auf true festgelegt werden, wenn dieser Parameter verwendet wird. float
n Wie viele Optionen für die Chatvervollständigung für jede Eingabenachricht generiert werden sollen. Beachten Sie, dass Ihnen die Anzahl der generierten Tokens für alle Auswahlmöglichkeiten in Rechnung gestellt wird. int

Mistral-7B und Mixtral-Chatmodelle

Zu den Mistral-7B- und Mixtral-Chatmodellen gehören die folgenden Modelle:

Das Mistral-7B-Instruct Large Language Model (LLM) ist eine fein abgestimmte Instruct-Version von Mistral-7B, ein Transformatormodell mit den folgenden Architekturoptionen:

  • GQA (Grouped Query Attention, Aufmerksamkeit für gruppierte Abfragen)
  • SWA (Sliding Window Attention, Aufmerksamkeit für gleitendes Fenster)
  • Byte-Fallback-BPE-Tokenizer

Die folgenden Modelle sind verfügbar:

Tipp

Darüber hinaus unterstützt MistralAI die Verwendung einer maßgeschneiderten API für die Nutzung mit bestimmten Funktionen des Modells. Wenn Sie die modellanbieterspezifische API verwenden möchten, lesen Sie die MistralAI-Dokumentation, oder sehen Sie sich die Codebeispiele im Abschnitt zu Rückschlussbeispielen an.

Voraussetzungen

Um Mistral-7B- und Mixtral-Chatmodelle mit Azure KI Studio zu verwenden, sind folgende Voraussetzungen zu erfüllen:

Modellimplementierung

Bereitstellung auf selbst gehostetem verwaltetem Compute

Mistral-7B- und Mixtral-Chatmodelle können in unserer selbst gehosteten verwalteten Rückschlusslösung bereitgestellt werden, mit der Sie alle Details zur Bereitstellung des Modells anpassen und steuern können.

Für die Bereitstellung auf selbst gehostetem verwaltetem Compute müssen Sie über ein ausreichendes Kontingent in Ihrem Abonnement verfügen. Wenn kein ausreichendes Kontingent verfügbar ist, können Sie unseren temporären Kontingentzugriff nutzen, indem Sie die Option Ich möchte das freigegebene Kontingent verwenden und bestätige, dass dieser Endpunkt in 168 Stunden gelöscht wird auswählen.

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-Modellrückschluss-API können Sie mit den meisten in Azure KI Studio bereitgestellten Modellen mit demselben Code und derselben Struktur kommunizieren, einschließlich Mistral-7B- und Mixtral-Chatmodellen.

Erstellen eines Clients zum Nutzen 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.

Wenn Sie das Modell auf einem selbst gehosteten Onlineendpunkt mit Microsoft Entra ID-Unterstützung bereitstellen, können Sie den folgenden Codeschnipsel verwenden, um einen Client zu erstellen.

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": "mistralai-Mistral-7B-Instruct-v01",
    "model_type": "chat-completions",
    "model_provider_name": "MistralAI"
}

Erstellen einer Chatvervollständigungsanforderung

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

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

Hinweis

mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 und mistralai-Mixtral-8x22B-Instruct-v0-1 unterstützen keine Systemnachrichten (role="system"). Wenn Sie die Azure KI-Modellrückschluss-API verwenden, werden Systemnachrichten in Benutzernachrichten übersetzt, die am weitesten übereinstimmende verfügbare Funktion. Diese Übersetzung wird zur Vereinfachung angeboten, aber es ist wichtig, zu überprüfen, ob das Modell den Anweisungen in der Systemnachricht mit dem richtigen Konfidenzgrad folgt.

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

{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "mistralai-Mistral-7B-Instruct-v01",
    "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.

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.

{
    "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": "mistralai-Mistral-7B-Instruct-v01",
    "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": "mistralai-Mistral-7B-Instruct-v01",
    "choices": [
        {
            "index": 0,
            "delta": {
                "content": ""
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

Erkunden weiterer Parameter, die vom Inferenzclient unterstützt werden

Erkunden Sie weitere Parameter, die Sie im Inferenzclient angeben können. Eine vollständige Liste aller unterstützten Parameter und der entsprechenden Dokumentation finden Sie unter Referenz zur Azure KI-Modellinferenz-API.

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "presence_penalty": 0.1,
    "frequency_penalty": 0.8,
    "max_tokens": 2048,
    "stop": ["<|endoftext|>"],
    "temperature" :0,
    "top_p": 1,
    "response_format": { "type": "text" }
}
{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "mistralai-Mistral-7B-Instruct-v01",
    "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
    }
}

Warnung

Mistral-Modelle unterstützen keine JSON-Ausgabeformatierung (response_format = { "type": "json_object" }). Sie können jederzeit einen Prompt an das Modell richten, um JSON-Ausgaben zu generieren. Solche Ausgaben sind jedoch nicht garantiert gültiger JSON-Code.

Wenn Sie einen Parameter übergeben möchten, der nicht in der Liste der unterstützten Parameter enthalten ist, können Sie ihn mithilfe zusätzlicher Parameter an das zugrunde liegende Modell übergeben. Weitere Informationen finden Sie unter Übergeben zusätzlicher Parameter an das Modell.

Übergeben zusätzlicher Parameter an das Modell

Mit der Azure KI-Modellinferenz-API können Sie zusätzliche Parameter an das Modell übergeben. Das folgende Codebeispiel zeigt, wie der zusätzliche Parameter logprobs an das Modell übergeben wird.

Bevor Sie zusätzliche Parameter an die Azure KI-Modellinferenz-API übergeben, stellen Sie sicher, dass Ihr Modell diese zusätzlichen Parameter unterstützt. Wenn die Anforderung an das zugrunde liegende Modell gestellt wird, wird der Header extra-parameters mit dem Wert pass-through an das Modell übergeben. Dieser Wert weist den Endpunkt an, die zusätzlichen Parameter an das Modell zu übergeben. Bei der Verwendung zusätzlicher Parameter mit dem Modell ist nicht garantiert, dass das Modell sie tatsächlich verarbeiten kann. Lesen Sie die Dokumentation des Modells, um zu verstehen, welche zusätzlichen Parameter unterstützt werden.

POST /chat/completions HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
extra-parameters: pass-through
{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "logprobs": true
}

Die folgenden zusätzlichen Parameter können an Mistral-7B- und Mixtral-Chatmodelle übergeben werden:

Name Description type
logit_bias Ein JSON-Objekt, das Token (angegeben durch die Token-ID im Tokenizer) einem zugehörigen Verzerrungswert von –100 bis 100 zuordnet. Mathematisch gesehen wird die Verzerrung zu den Logits addiert, die das Modell vor der Stichprobenentnahme generiert. Die genaue Auswirkung ist von Modell zu Modell unterschiedlich, aber Werte zwischen -1 und 1 sollten die Wahrscheinlichkeit der Auswahl verringern oder erhöhen; Werte wie -100 oder 100 sollten zu einem Verbot oder einer ausschließlichen Auswahl des betreffenden Tokens führen. float
logprobs Gibt an, ob Protokollwahrscheinlichkeiten der Ausgabetoken zurückgegeben werden sollen. Wenn wahr, gibt die Protokollwahrscheinlichkeiten jedes Ausgabetokens zurück, das in der content von message zurückgegeben wird. int
top_logprobs Eine ganze Zahl zwischen 0 und 20, die die Anzahl der höchstwahrscheinlichen Token an jeder Tokenposition angibt, jeweils mit einer zugeordneten Protokollwahrscheinlichkeit. logprobs muss auf true festgelegt werden, wenn dieser Parameter verwendet wird. float
n Wie viele Optionen für die Chatvervollständigung für jede Eingabenachricht generiert werden sollen. Beachten Sie, dass Ihnen die Anzahl der generierten Tokens für alle Auswahlmöglichkeiten in Rechnung gestellt wird. int

Modellrückschluss: Beispiele

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

Beschreibung Sprache Beispiel
cURL-Anforderung Bash Link
Azure KI-Rückschlusspaket für JavaScript JavaScript Link
Azure KI-Inferenzpaket für Python Python Link
Python-Webanforderungen Python Link
OpenAI SDK (experimentell) Python Link
LangChain Python Link
Mistral AI Python Link
LiteLLM Python Link

Kosten- und Kontingentüberlegungen zu Mistral-Modellen, die als verwaltetes Compute bereitgestellt werden

In verwaltetem Compute bereitgestellte Mistral-Modelle werden basierend auf den Kernstunden der zugeordneten Computeinstanz abgerechnet. Die Kosten der Computeinstanz werden durch die Größe der Instanz, die Anzahl der ausgeführten Instanzen und die Ausführungsdauer bestimmt.

Es empfiehlt sich, mit einer geringen Anzahl von Instanzen zu beginnen und bei Bedarf zu skalieren. Sie können die Kosten der Computeinstanz im Azure-Portal überwachen.