Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 nemusí být podporované nebo můžou 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 modelech chatu Mistral-7B a Mixtral a o tom, jak je používat. Mistral AI nabízí dvě kategorie modelů, konkrétně:
- Mezi prémiové modely patří Mistral Large, Mistral Small, Mistral-OCR-2503, Mistral Medium 3 (25.05) a Modely Ministral 3B a jsou k dispozici jako bezserverové rozhraní API s průběžnými platbami.
- Otevřené modely: Patří mezi ně Codestral a Mistral Nemo (které jsou dostupné jako nasazení bezserverového rozhraní API) a Mixtral-8x7B-Instruct-v01, Mixtral-8x7B-v01, Mistral-7B-Instruct-v01 a Mistral-7B-v01 (které jsou k dispozici ke stažení a spouštění na samoobslužných spravovaných koncových bodech).
Důležité
Modely, které jsou ve verzi Preview, jsou na kartách modelu v katalogu modelů označené jako náhled .
Mistral-7B a Mixtral chatovací modely
Modely chatu Mistral-7B a Mixtral zahrnují následující modely:
Mistral-7B-Instruct Large Language Model (LLM) je pokyn, jemně vyladěná verze mistral-7B, transformátorový model s následujícími možnostmi architektury:
- Seskupené dotazování
- Pozornost posuvného okna
- Tokenizátor BPE pro použití náhradního bajtu
K dispozici jsou následující modely:
Návod
MistralAI navíc podporuje použití přizpůsobeného rozhraní API pro použití s konkrétními funkcemi modelu. Pokud chcete použít rozhraní API specifické pro poskytovatele modelů, podívejte se do dokumentace mistralAI nebo si projděte část příklady odvozování příkladů kódu.
Požadavky
Pokud chcete používat modely chatu Mistral-7B a Mixtral s Azure AI Foundry, potřebujete následující požadavky:
Nasazení modelu
Nasazení do místního spravovaného výpočetního prostředí
Modely chatu Mistral-7B a Mixtral je možné nasadit do našeho řešení pro odvozování v místním prostředí, které umožňuje přizpůsobit a řídit všechny podrobnosti o tom, jak se model obsluhuje.
Pro nasazení do místního spravovaného výpočetního prostředí musíte mít ve svém předplatném dostatečnou kvótu. Pokud nemáte dostatečnou kvótu k dispozici, můžete použít náš dočasný přístup k kvótám výběrem možnosti Chci použít sdílenou kvótu a potvrzuji, že tento koncový bod bude odstraněn za 168 hodin.
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
, kdeyour-host-name
je jedinečný název hostitele nasazení modelu ayour-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.
Návod
Rozhraní API pro odvozování modelů umožňuje komunikovat s většinou modelů nasazených na portálu Azure AI Foundry se stejným kódem a strukturou, včetně modelů Mistral-7B a Mixtral chatu.
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"]),
)
Když model nasadíte do místního online koncového bodu s podporou Microsoft Entra ID , můžete k vytvoření klienta použít následující fragment kódu.
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredential(),
)
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: mistralai-Mistral-7B-Instruct-v01
Model type: chat-completions
Model provider name: MistralAI
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?"),
],
)
Poznámka:
mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 a mistralai-Mixtral-8x22B-Instruct-v0-1 nepodporují systémové zprávy (role="system"
). Při použití rozhraní API pro odvozování modelů se systémové zprávy přeloží na uživatelské zprávy, což je nejbližší dostupná funkce. Tento překlad se nabízí pro usnadnění, ale je důležité ověřit, že model odpovídá pokynům v systémové zprávě se správnou úrovní spolehlivosti.
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: mistralai-Mistral-7B-Instruct-v01
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í.
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é výstupy, čekání na odpověď může trvat několik sekund.
Obsah můžete streamovat, abyste ho získali v průběhu generování. Streamování obsahu vám umožňuje zahájit zpracování, jakmile je obsah dostupný. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z pole delta, 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.
"""
import time
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)
Prozkoumání dalších parametrů podporovaných klientem odvozováním
Prozkoumejte další parametry, které můžete zadat v klientovi odvození. Úplný seznam všech podporovaných parametrů a jejich odpovídající dokumentace najdete v referenčních informacích k rozhraní API pro odvozování modelů.
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() },
)
Výstraha
Modely Mistral nepodporují formátování výstupu JSON (response_format = { "type": "json_object" }
). Vždy můžete vyzvat model, aby vygeneroval výstupy JSON. Takové výstupy ale nejsou zaručené, že budou platné JSON.
Pokud chcete předat parametr, který není v seznamu podporovaných parametrů, můžete ho předat podkladovému modelu pomocí dalších parametrů. Viz Předání dalších parametrů do modelu.
Předání dalších parametrů do modelu
Rozhraní API pro odvozování modelů umožňuje předat do modelu další parametry. Následující příklad kódu ukazuje, jak předat další parametr logprobs
modelu.
Než předáte do rozhraní API pro odvozování modelů další parametry, ujistěte se, že váš model tyto dodatečné parametry podporuje. Při provedení požadavku do podkladového modelu se hlavička extra-parameters
předá modelu s hodnotou pass-through
. Tato hodnota říká koncovému bodu, aby předal do modelu další parametry. Použití dalších parametrů s modelem nezaručuje, že je model dokáže skutečně zpracovat. Přečtěte si dokumentaci k modelu, abyste pochopili, které další parametry jsou podporované.
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
model_extras={
"logprobs": True
}
)
Následující parametry navíc lze předat modelům chatu Mistral-7B a Mixtral:
Název | Popis | Typ |
---|---|---|
logit_bias |
Přijímá objekt JSON, který mapuje tokeny (určené jejich ID tokenu v tokenizátoru) na přidruženou hodnotu předsudku od -100 do 100. Matematicky se před vzorkováním přidá do logitů vygenerovaných modelem. Přesný účinek se liší podle modelu, ale hodnoty mezi -1 a 1 by měly snížit nebo zvýšit pravděpodobnost výběru; hodnoty jako -100 nebo 100 by měly vést k zákazu nebo výhradnímu výběru příslušného tokenu. | float |
logprobs |
Zda se mají vrátit pravděpodobnosti protokolu výstupních tokenů, nebo ne. Pokud je pravda, vrátí pravděpodobnosti protokolu každého výstupního tokenu vráceného v hodnotě content message . |
int |
top_logprobs |
Celé číslo v rozmezí od 0 do 20 určující počet nejpravděpodobnějších tokenů, které se mají vrátit na každé pozici tokenu, každý s přidruženou pravděpodobností protokolu.
logprobs parametr musí být nastaven na true hodnotu, pokud je použit tento parametr. |
float |
n |
Kolik možností dokončení chatu se má vygenerovat pro každou vstupní zprávu. Účtují se vám poplatky na základě počtu vygenerovaných tokenů napříč všemi možnostmi. | int |
Mistral-7B a Mixtral chatovací modely
Modely chatu Mistral-7B a Mixtral zahrnují následující modely:
Mistral-7B-Instruct Large Language Model (LLM) je pokyn, jemně vyladěná verze mistral-7B, transformátorový model s následujícími možnostmi architektury:
- Seskupené dotazování
- Pozornost posuvného okna
- Tokenizátor BPE pro použití náhradního bajtu
K dispozici jsou následující modely:
Návod
MistralAI navíc podporuje použití přizpůsobeného rozhraní API pro použití s konkrétními funkcemi modelu. Pokud chcete použít rozhraní API specifické pro poskytovatele modelů, podívejte se do dokumentace mistralAI nebo si projděte část příklady odvozování příkladů kódu.
Požadavky
Pokud chcete používat modely chatu Mistral-7B a Mixtral s Azure AI Foundry, potřebujete následující požadavky:
Nasazení modelu
Nasazení do místního spravovaného výpočetního prostředí
Modely chatu Mistral-7B a Mixtral je možné nasadit do našeho řešení pro odvozování v místním prostředí, které umožňuje přizpůsobit a řídit všechny podrobnosti o tom, jak se model obsluhuje.
Pro nasazení do místního spravovaného výpočetního prostředí musíte mít ve svém předplatném dostatečnou kvótu. Pokud nemáte dostatečnou kvótu k dispozici, můžete použít náš dočasný přístup k kvótám výběrem možnosti Chci použít sdílenou kvótu a potvrzuji, že tento koncový bod bude odstraněn za 168 hodin.
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.js
npm
. - 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
, kdeyour-host-name
je jedinečný název hostitele nasazení modelu ayour-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.
Návod
Rozhraní API pro odvozování modelů umožňuje komunikovat s většinou modelů nasazených na portálu Azure AI Foundry se stejným kódem a strukturou, včetně modelů Mistral-7B a Mixtral chatu.
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)
);
Když model nasadíte do místního online koncového bodu s podporou Microsoft Entra ID , můžete k vytvoření klienta použít následující fragment kódu.
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()
);
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: mistralai-Mistral-7B-Instruct-v01
Model type: chat-completions
Model provider name: MistralAI
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,
}
});
Poznámka:
mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 a mistralai-Mixtral-8x22B-Instruct-v0-1 nepodporují systémové zprávy (role="system"
). Při použití rozhraní API pro odvozování modelů se systémové zprávy přeloží na uživatelské zprávy, což je nejbližší dostupná funkce. Tento překlad se nabízí pro usnadnění, ale je důležité ověřit, že model odpovídá pokynům v systémové zprávě se správnou úrovní spolehlivosti.
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: mistralai-Mistral-7B-Instruct-v01
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í.
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é výstupy, čekání na odpověď může trvat několik sekund.
Obsah můžete streamovat, abyste ho získali v průběhu generování. Streamování obsahu vám umožňuje zahájit zpracování, jakmile je obsah dostupný. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z pole delta, 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();
Pro streamování dokončování 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 ?? "");
}
}
Prozkoumání dalších parametrů podporovaných klientem odvozováním
Prozkoumejte další parametry, které můžete zadat v klientovi odvození. Úplný seznam všech podporovaných parametrů a jejich odpovídající dokumentace najdete v referenčních informacích k rozhraní API pro odvozování modelů.
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" },
}
});
Výstraha
Modely Mistral nepodporují formátování výstupu JSON (response_format = { "type": "json_object" }
). Vždy můžete vyzvat model, aby vygeneroval výstupy JSON. Takové výstupy ale nejsou zaručené, že budou platné JSON.
Pokud chcete předat parametr, který není v seznamu podporovaných parametrů, můžete ho předat podkladovému modelu pomocí dalších parametrů. Viz Předání dalších parametrů do modelu.
Předání dalších parametrů do modelu
Rozhraní API pro odvozování modelů umožňuje předat do modelu další parametry. Následující příklad kódu ukazuje, jak předat další parametr logprobs
modelu.
Než předáte do rozhraní API pro odvozování modelů další parametry, ujistěte se, že váš model tyto dodatečné parametry podporuje. Při provedení požadavku do podkladového modelu se hlavička extra-parameters
předá modelu s hodnotou pass-through
. Tato hodnota říká koncovému bodu, aby předal do modelu další parametry. Použití dalších parametrů s modelem nezaručuje, že je model dokáže skutečně zpracovat. Přečtěte si dokumentaci k modelu, abyste pochopili, které další parametry jsou podporované.
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
}
});
Následující parametry navíc lze předat modelům chatu Mistral-7B a Mixtral:
Název | Popis | Typ |
---|---|---|
logit_bias |
Přijímá objekt JSON, který mapuje tokeny (určené jejich ID tokenu v tokenizátoru) na přidruženou hodnotu předsudku od -100 do 100. Matematicky se před vzorkováním přidá do logitů vygenerovaných modelem. Přesný účinek se liší podle modelu, ale hodnoty mezi -1 a 1 by měly snížit nebo zvýšit pravděpodobnost výběru; hodnoty jako -100 nebo 100 by měly vést k zákazu nebo výhradnímu výběru příslušného tokenu. | float |
logprobs |
Zda se mají vrátit pravděpodobnosti protokolu výstupních tokenů, nebo ne. Pokud je pravda, vrátí pravděpodobnosti protokolu každého výstupního tokenu vráceného v hodnotě content message . |
int |
top_logprobs |
Celé číslo v rozmezí od 0 do 20 určující počet nejpravděpodobnějších tokenů, které se mají vrátit na každé pozici tokenu, každý s přidruženou pravděpodobností protokolu.
logprobs parametr musí být nastaven na true hodnotu, pokud je použit tento parametr. |
float |
n |
Kolik možností dokončení chatu se má vygenerovat pro každou vstupní zprávu. Účtují se vám poplatky na základě počtu vygenerovaných tokenů napříč všemi možnostmi. | int |
Mistral-7B a Mixtral chatovací modely
Modely chatu Mistral-7B a Mixtral zahrnují následující modely:
Mistral-7B-Instruct Large Language Model (LLM) je pokyn, jemně vyladěná verze mistral-7B, transformátorový model s následujícími možnostmi architektury:
- Seskupené dotazování
- Pozornost posuvného okna
- Tokenizátor BPE pro použití náhradního bajtu
K dispozici jsou následující modely:
Návod
MistralAI navíc podporuje použití přizpůsobeného rozhraní API pro použití s konkrétními funkcemi modelu. Pokud chcete použít rozhraní API specifické pro poskytovatele modelů, podívejte se do dokumentace mistralAI nebo si projděte část příklady odvozování příkladů kódu.
Požadavky
Pokud chcete používat modely chatu Mistral-7B a Mixtral s Azure AI Foundry, potřebujete následující požadavky:
Nasazení modelu
Nasazení do místního spravovaného výpočetního prostředí
Modely chatu Mistral-7B a Mixtral je možné nasadit do našeho řešení pro odvozování v místním prostředí, které umožňuje přizpůsobit a řídit všechny podrobnosti o tom, jak se model obsluhuje.
Pro nasazení do místního spravovaného výpočetního prostředí musíte mít ve svém předplatném dostatečnou kvótu. Pokud nemáte dostatečnou kvótu k dispozici, můžete použít náš dočasný přístup k kvótám výběrem možnosti Chci použít sdílenou kvótu a potvrzuji, že tento koncový bod bude odstraněn za 168 hodin.
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
, kdeyour-host-name
je jedinečný název hostitele nasazení modelu ayour-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
Importujte 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.
Návod
Rozhraní API pro odvozování modelů umožňuje komunikovat s většinou modelů nasazených na portálu Azure AI Foundry se stejným kódem a strukturou, včetně modelů Mistral-7B a Mixtral chatu.
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"))
);
Když model nasadíte do místního online koncového bodu s podporou Microsoft Entra ID , můžete k vytvoření klienta použít následující fragment kódu.
client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new DefaultAzureCredential(includeInteractiveCredentials: true)
);
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: mistralai-Mistral-7B-Instruct-v01
Model type: chat-completions
Model provider name: MistralAI
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);
Poznámka:
mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 a mistralai-Mixtral-8x22B-Instruct-v0-1 nepodporují systémové zprávy (role="system"
). Při použití rozhraní API pro odvozování modelů se systémové zprávy přeloží na uživatelské zprávy, což je nejbližší dostupná funkce. Tento překlad se nabízí pro usnadnění, ale je důležité ověřit, že model odpovídá pokynům v systémové zprávě se správnou úrovní spolehlivosti.
Odpověď je následující, kde vidíte statistiku využití modelu:
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
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í.
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é výstupy, čekání na odpověď může trvat několik sekund.
Obsah můžete streamovat, abyste ho získali v průběhu generování. Streamování obsahu vám umožňuje zahájit zpracování, jakmile je obsah dostupný. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z pole delta, 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();
Prozkoumání dalších parametrů podporovaných klientem odvozováním
Prozkoumejte další parametry, které můžete zadat v klientovi odvození. Úplný seznam všech podporovaných parametrů a jejich odpovídající dokumentace najdete v referenčních informacích k rozhraní API pro odvozování modelů.
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}");
Výstraha
Modely Mistral nepodporují formátování výstupu JSON (response_format = { "type": "json_object" }
). Vždy můžete vyzvat model, aby vygeneroval výstupy JSON. Takové výstupy ale nejsou zaručené, že budou platné JSON.
Pokud chcete předat parametr, který není v seznamu podporovaných parametrů, můžete ho předat podkladovému modelu pomocí dalších parametrů. Viz Předání dalších parametrů do modelu.
Předání dalších parametrů do modelu
Rozhraní API pro odvozování modelů umožňuje předat do modelu další parametry. Následující příklad kódu ukazuje, jak předat další parametr logprobs
modelu.
Než předáte do rozhraní API pro odvozování modelů další parametry, ujistěte se, že váš model tyto dodatečné parametry podporuje. Při provedení požadavku do podkladového modelu se hlavička extra-parameters
předá modelu s hodnotou pass-through
. Tato hodnota říká koncovému bodu, aby předal do modelu další parametry. Použití dalších parametrů s modelem nezaručuje, že je model dokáže skutečně zpracovat. Přečtěte si dokumentaci k modelu, abyste pochopili, které další parametry jsou podporované.
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}");
Následující parametry navíc lze předat modelům chatu Mistral-7B a Mixtral:
Název | Popis | Typ |
---|---|---|
logit_bias |
Přijímá objekt JSON, který mapuje tokeny (určené jejich ID tokenu v tokenizátoru) na přidruženou hodnotu předsudku od -100 do 100. Matematicky se před vzorkováním přidá do logitů vygenerovaných modelem. Přesný účinek se liší podle modelu, ale hodnoty mezi -1 a 1 by měly snížit nebo zvýšit pravděpodobnost výběru; hodnoty jako -100 nebo 100 by měly vést k zákazu nebo výhradnímu výběru příslušného tokenu. | float |
logprobs |
Zda se mají vrátit pravděpodobnosti protokolu výstupních tokenů, nebo ne. Pokud je pravda, vrátí pravděpodobnosti protokolu každého výstupního tokenu vráceného v hodnotě content message . |
int |
top_logprobs |
Celé číslo v rozmezí od 0 do 20 určující počet nejpravděpodobnějších tokenů, které se mají vrátit na každé pozici tokenu, každý s přidruženou pravděpodobností protokolu.
logprobs parametr musí být nastaven na true hodnotu, pokud je použit tento parametr. |
float |
n |
Kolik možností dokončení chatu se má vygenerovat pro každou vstupní zprávu. Účtují se vám poplatky na základě počtu vygenerovaných tokenů napříč všemi možnostmi. | int |
Mistral-7B a Mixtral chatovací modely
Modely chatu Mistral-7B a Mixtral zahrnují následující modely:
Mistral-7B-Instruct Large Language Model (LLM) je pokyn, jemně vyladěná verze mistral-7B, transformátorový model s následujícími možnostmi architektury:
- Seskupené dotazování
- Pozornost posuvného okna
- Tokenizátor BPE pro použití náhradního bajtu
K dispozici jsou následující modely:
Návod
MistralAI navíc podporuje použití přizpůsobeného rozhraní API pro použití s konkrétními funkcemi modelu. Pokud chcete použít rozhraní API specifické pro poskytovatele modelů, podívejte se do dokumentace mistralAI nebo si projděte část příklady odvozování příkladů kódu.
Požadavky
Pokud chcete používat modely chatu Mistral-7B a Mixtral s Azure AI Foundry, potřebujete následující požadavky:
Nasazení modelu
Nasazení do místního spravovaného výpočetního prostředí
Modely chatu Mistral-7B a Mixtral je možné nasadit do našeho řešení pro odvozování v místním prostředí, které umožňuje přizpůsobit a řídit všechny podrobnosti o tom, jak se model obsluhuje.
Pro nasazení do místního spravovaného výpočetního prostředí musíte mít ve svém předplatném dostatečnou kvótu. Pokud nemáte dostatečnou kvótu k dispozici, můžete použít náš dočasný přístup k kvótám výběrem možnosti Chci použít sdílenou kvótu a potvrzuji, že tento koncový bod bude odstraněn za 168 hodin.
Klient REST
Modely nasazené pomocí rozhraní API pro odvozování modelů 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émyour-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.
Návod
Rozhraní API pro odvozování modelů umožňuje komunikovat s většinou modelů nasazených na portálu Azure AI Foundry se stejným kódem a strukturou, včetně modelů Mistral-7B a Mixtral chatu.
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í.
Když model nasadíte do místního online koncového bodu s podporou Microsoft Entra ID , můžete k vytvoření klienta použít následující fragment kódu.
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": "mistralai-Mistral-7B-Instruct-v01",
"model_type": "chat-completions",
"model_provider_name": "MistralAI"
}
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.
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
Poznámka:
mistralai-Mistral-7B-Instruct-v01, mistralai-Mistral-7B-Instruct-v02 a mistralai-Mixtral-8x22B-Instruct-v0-1 nepodporují systémové zprávy (role="system"
). Při použití rozhraní API pro odvozování modelů se systémové zprávy přeloží na uživatelské zprávy, což je nejbližší dostupná funkce. Tento překlad se nabízí pro usnadnění, ale je důležité ověřit, že model odpovídá pokynům v systémové zprávě se správnou úrovní spolehlivosti.
Odpověď je následující, kde vidíte statistiku využití modelu:
{
"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
}
}
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í.
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é výstupy, čekání na odpověď může trvat několik sekund.
Obsah můžete streamovat, abyste ho získali v průběhu generování. Streamování obsahu vám umožňuje zahájit zpracování, jakmile je obsah dostupný. Tento režim vrátí objekt, který streamuje odpověď zpět jako události odesílané pouze serverem. Extrahujte bloky dat z pole delta, nikoli z pole zprávy.
{
"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": "mistralai-Mistral-7B-Instruct-v01",
"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": "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
}
}
Prozkoumání dalších parametrů podporovaných klientem odvozováním
Prozkoumejte další parametry, které můžete zadat v klientovi odvození. Úplný seznam všech podporovaných parametrů a jejich odpovídající dokumentace najdete v referenčních informacích k rozhraní API pro odvozování modelů.
{
"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
}
}
Výstraha
Modely Mistral nepodporují formátování výstupu JSON (response_format = { "type": "json_object" }
). Vždy můžete vyzvat model, aby vygeneroval výstupy JSON. Takové výstupy ale nejsou zaručené, že budou platné JSON.
Pokud chcete předat parametr, který není v seznamu podporovaných parametrů, můžete ho předat podkladovému modelu pomocí dalších parametrů. Viz Předání dalších parametrů do modelu.
Předání dalších parametrů do modelu
Rozhraní API pro odvozování modelů umožňuje předat do modelu další parametry. Následující příklad kódu ukazuje, jak předat další parametr logprobs
modelu.
Než předáte do rozhraní API pro odvozování modelů další parametry, ujistěte se, že váš model tyto dodatečné parametry podporuje. Při provedení požadavku do podkladového modelu se hlavička extra-parameters
předá modelu s hodnotou pass-through
. Tato hodnota říká koncovému bodu, aby předal do modelu další parametry. Použití dalších parametrů s modelem nezaručuje, že je model dokáže skutečně zpracovat. Přečtěte si dokumentaci k modelu, abyste pochopili, které další parametry jsou podporované.
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
}
Následující parametry navíc lze předat modelům chatu Mistral-7B a Mixtral:
Název | Popis | Typ |
---|---|---|
logit_bias |
Přijímá objekt JSON, který mapuje tokeny (určené jejich ID tokenu v tokenizátoru) na přidruženou hodnotu předsudku od -100 do 100. Matematicky se před vzorkováním přidá do logitů vygenerovaných modelem. Přesný účinek se liší podle modelu, ale hodnoty mezi -1 a 1 by měly snížit nebo zvýšit pravděpodobnost výběru; hodnoty jako -100 nebo 100 by měly vést k zákazu nebo výhradnímu výběru příslušného tokenu. | float |
logprobs |
Zda se mají vrátit pravděpodobnosti protokolu výstupních tokenů, nebo ne. Pokud je pravda, vrátí pravděpodobnosti protokolu každého výstupního tokenu vráceného v hodnotě content message . |
int |
top_logprobs |
Celé číslo v rozmezí od 0 do 20 určující počet nejpravděpodobnějších tokenů, které se mají vrátit na každé pozici tokenu, každý s přidruženou pravděpodobností protokolu.
logprobs parametr musí být nastaven na true hodnotu, pokud je použit tento parametr. |
float |
n |
Kolik možností dokončení chatu se má vygenerovat pro každou vstupní zprávu. Účtují se vám poplatky na základě počtu vygenerovaných tokenů napříč všemi možnostmi. | int |
Další příklady odvození
Další příklady použití modelů Mistral najdete v následujících příkladech a kurzech:
Popis | Jazyk | Ukázka |
---|---|---|
Žádost CURL | Udeřit | Odkaz |
Balíček odvozování Azure AI pro jazyk C# | C# | Odkaz |
Balíček odvozování Azure AI pro JavaScript | JavaScript | Odkaz |
Balíček odvozování Azure AI pro Python | Python | Odkaz |
Webové požadavky Pythonu | Python | Odkaz |
OpenAI SDK (experimentální) | Python | Odkaz |
LangChain | Python | Odkaz |
Mistral Umělá inteligence | Python | Odkaz |
LiteLLM | Python | Odkaz |
Důležité informace o nákladech a kvótách pro modely Mistral nasazené do spravovaného výpočetního prostředí
Modely Mistral nasazené do spravovaného výpočetního prostředí se účtují na základě základních hodin přidružené výpočetní instance. Náklady na výpočetní instanci jsou určeny velikostí instance, počtem spuštěných instancí a dobou trvání spuštění.
Je vhodné začít s nízkým počtem instancí a podle potřeby vertikálně navýšit kapacitu. Náklady na výpočetní instanci můžete monitorovat na webu Azure Portal.