Phi-3-gezinschatmodellen gebruiken met Azure Machine Learning
In dit artikel leert u meer over Phi-3 family chatmodellen en hoe u deze kunt gebruiken. De Phi-3-familie van kleine taalmodellen (SLM's) is een verzameling instructiegestuurde tekstmodellen.
Belangrijk
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview-versie wordt geleverd zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt.
Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
Phi-3-gezinschatmodellen
De phi-3-familiechatmodellen omvatten de volgende modellen:
Phi-3.5 modellen zijn lichtgewicht, state-of-the-art open modellen. Deze modellen zijn getraind met Phi-3-gegevenssets die zowel synthetische gegevens als de gefilterde, openbaar beschikbare websitesgegevens bevatten, met een focus op hoogwaardige en redenerende dichte eigenschappen.
Phi-3.5 Mini maakt gebruik van 3.8B-parameters en is een compact transformatormodel met behulp van dezelfde tokenizer als Phi-3 Mini.
Phi-3.5 MoE (mix-of-expert) gebruikt 16x3.8B-parameters met 6.6B actieve parameters bij gebruik van 2 experts. Het model is een mix-of-expert decoder-only transformatormodel, met behulp van een tokenizer met een vocabulaire grootte van 32.064.
De modellen hebben een grondig verbeteringsproces ondergaan, waarbij zowel onder supervisie nauwkeurig afstemmen, proximal beleidsoptimalisatie als directe voorkeursoptimalisatie worden opgenomen om nauwkeurige instructies en robuuste veiligheidsmaatregelen te garanderen. Wanneer ze worden beoordeeld op benchmarks die gezond verstand, taalbegrip, wiskunde, code, lange context en logische redenering testen, hebben Phi-3.5-modellen robuuste en geavanceerde prestaties getoond tussen modellen met minder dan 13 miljard parameters.
De Phi-3.5-modellen worden geleverd in de volgende varianten, waarbij de varianten een contextlengte (in tokens) van 128K hebben.
De volgende modellen zijn beschikbaar:
- Phi-3.5-Mini-Instruct
- Phi-3.5-Moe-Instruct
Vereisten
Als u Phi-3-gezinschatmodellen wilt gebruiken met Azure Machine Learning, hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Phi-3-gezinschatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Implementatie naar een zelf-hostende beheerde compute
Phi-3-familiechatmodellen kunnen worden geïmplementeerd in onze zelf-hostende beheerde deductieoplossing, waarmee u alle details over hoe het model wordt geleverd, kunt aanpassen en beheren.
Voor implementatie naar een zelf-hostende beheerde rekenkracht moet u voldoende quotum in uw abonnement hebben. Als u onvoldoende quotum beschikbaar hebt, kunt u onze tijdelijke quotumtoegang gebruiken door de optie te selecteren die ik wil gebruiken gedeeld quotum en ik bevestig dat dit eindpunt over 168 uur wordt verwijderd.
Het deductiepakket geïnstalleerd
U kunt voorspellingen van dit model gebruiken met behulp van het azure-ai-inference
pakket met Python. Als u dit pakket wilt installeren, hebt u de volgende vereisten nodig:
- Python 3.8 of hoger geïnstalleerd, inclusief pip.
- De eindpunt-URL. Als u de clientbibliotheek wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waaryour-host-name
de hostnaam van uw unieke modelimplementatie is enyour-azure-region
de Azure-regio is waar het model wordt geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Zodra u aan deze vereisten voldoet, installeert u het Azure AI-deductiepakket met de volgende opdracht:
pip install azure-ai-inference
Lees meer over het Azure AI-deductiepakket en de naslaginformatie.
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Deductie-API voor Azure AI-modellen kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure AI Studio met dezelfde code en structuur, waaronder Phi-3-familiechatmodellen.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
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"]),
)
Wanneer u het model implementeert op een zelf-hostend online-eindpunt met ondersteuning voor Microsoft Entra ID , kunt u het volgende codefragment gebruiken om een client te maken.
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredential(),
)
Notitie
Momenteel bieden serverloze API-eindpunten geen ondersteuning voor het gebruik van Microsoft Entra-id voor verificatie.
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
model_info = client.get_model_info()
Het antwoord is als volgt:
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: Phi-3.5-Mini-Instruct
Model type: chat-completions
Model provider name: Microsoft
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het model.
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?"),
],
)
Notitie
Phi-3.5-Mini-Instruct, Phi-3.5-MoE-Instruct, Phi-3-mini-4k-Instruct, Phi-3-mini-128k-Instruct, Phi-3-small-8k-Instruct, Phi-3-small-128k-Instruct en Phi-3-medium-128k-Instruct bieden geen ondersteuning voor systeemberichten (role="system"
). Wanneer u de deductie-API van het Azure AI-model gebruikt, worden systeemberichten vertaald naar gebruikersberichten. Dit is de dichtstbijzijnde mogelijkheid die beschikbaar is. Deze vertaling wordt voor het gemak aangeboden, maar het is belangrijk dat u controleert of het model de instructies in het systeembericht met het juiste vertrouwensniveau volgt.
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
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: Phi-3.5-Mini-Instruct
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
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,
)
Als u voltooiingen wilt streamen, stelt u in stream=True
wanneer u het model aanroept.
Als u de uitvoer wilt visualiseren, definieert u een helperfunctie om de stream af te drukken.
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="")
U kunt visualiseren hoe streaming inhoud genereert:
print_stream(result)
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
from azure.ai.inference.models import ChatCompletionsResponseFormat
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() },
)
Waarschuwing
Phi-3-familiemodellen bieden geen ondersteuning voor JSON-uitvoeropmaak (response_format = { "type": "json_object" }
). U kunt het model altijd vragen om JSON-uitvoer te genereren. Dergelijke uitvoer is echter niet gegarandeerd geldige JSON.
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
model_extras={
"logprobs": True
}
)
De volgende extra parameters kunnen worden doorgegeven aan Phi-3 family chatmodellen:
Name | Omschrijving | Type |
---|---|---|
logit_bias |
Accepteert een JSON-object waarmee tokens (opgegeven door de token-id in de tokenizer) worden toegewezen aan een gekoppelde bias-waarde van -100 tot 100. Wiskundig wordt de vooroordelen toegevoegd aan de logboeken die door het model worden gegenereerd voordat ze worden genomen. Het exacte effect verschilt per model, maar waarden tussen -1 en 1 moeten de kans op selectie verkleinen of vergroten; waarden zoals -100 of 100 moeten resulteren in een verbod of exclusieve selectie van het relevante token. | float |
logprobs |
Of u nu logboekkansen van de uitvoertokens wilt retourneren of niet. Indien waar, retourneert u de logboekkans van elk uitvoertoken dat wordt geretourneerd in de van content message . |
int |
top_logprobs |
Een geheel getal tussen 0 en 20 dat het aantal waarschijnlijke tokens aangeeft dat op elke tokenpositie moet worden geretourneerd, elk met een gekoppelde logboekkans. logprobs moet worden ingesteld op true of deze parameter wordt gebruikt. |
float |
n |
Hoeveel opties voor het voltooien van chats voor elk invoerbericht moeten worden gegenereerd. Houd er rekening mee dat er kosten in rekening worden gebracht op basis van het aantal gegenereerde tokens voor alle opties. | int |
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
try:
response = client.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = ex.response.json()
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise
raise
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Notitie
Azure AI-inhoudsveiligheid is alleen beschikbaar voor modellen die zijn geïmplementeerd als serverloze API-eindpunten.
Phi-3-gezinschatmodellen
De phi-3-familiechatmodellen omvatten de volgende modellen:
Phi-3.5 modellen zijn lichtgewicht, state-of-the-art open modellen. Deze modellen zijn getraind met Phi-3-gegevenssets die zowel synthetische gegevens als de gefilterde, openbaar beschikbare websitesgegevens bevatten, met een focus op hoogwaardige en redenerende dichte eigenschappen.
Phi-3.5 Mini maakt gebruik van 3.8B-parameters en is een compact transformatormodel met behulp van dezelfde tokenizer als Phi-3 Mini.
Phi-3.5 MoE (mix-of-expert) gebruikt 16x3.8B-parameters met 6.6B actieve parameters bij gebruik van 2 experts. Het model is een mix-of-expert decoder-only transformatormodel, met behulp van een tokenizer met een vocabulaire grootte van 32.064.
De modellen hebben een grondig verbeteringsproces ondergaan, waarbij zowel onder supervisie nauwkeurig afstemmen, proximal beleidsoptimalisatie als directe voorkeursoptimalisatie worden opgenomen om nauwkeurige instructies en robuuste veiligheidsmaatregelen te garanderen. Wanneer ze worden beoordeeld op benchmarks die gezond verstand, taalbegrip, wiskunde, code, lange context en logische redenering testen, hebben Phi-3.5-modellen robuuste en geavanceerde prestaties getoond tussen modellen met minder dan 13 miljard parameters.
De Phi-3.5-modellen worden geleverd in de volgende varianten, waarbij de varianten een contextlengte (in tokens) van 128K hebben.
De volgende modellen zijn beschikbaar:
- Phi-3.5-Mini-Instruct
- Phi-3.5-Moe-Instruct
Vereisten
Als u Phi-3-gezinschatmodellen wilt gebruiken met Azure Machine Learning-studio, hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Phi-3-gezinschatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Implementatie naar een zelf-hostende beheerde compute
Phi-3-familiechatmodellen kunnen worden geïmplementeerd in onze zelf-hostende beheerde deductieoplossing, waarmee u alle details over hoe het model wordt geleverd, kunt aanpassen en beheren.
Voor implementatie naar een zelf-hostende beheerde rekenkracht moet u voldoende quotum in uw abonnement hebben. Als u onvoldoende quotum beschikbaar hebt, kunt u onze tijdelijke quotumtoegang gebruiken door de optie te selecteren die ik wil gebruiken gedeeld quotum en ik bevestig dat dit eindpunt over 168 uur wordt verwijderd.
Het deductiepakket geïnstalleerd
U kunt voorspellingen van dit model gebruiken met behulp van het @azure-rest/ai-inference
pakket van npm
. Als u dit pakket wilt installeren, hebt u de volgende vereisten nodig:
- LTS-versies van
Node.js
metnpm
. - De eindpunt-URL. Als u de clientbibliotheek wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waaryour-host-name
de hostnaam van uw unieke modelimplementatie is enyour-azure-region
de Azure-regio is waar het model wordt geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Nadat u deze vereisten hebt, installeert u de Azure-deductiebibliotheek voor JavaScript met de volgende opdracht:
npm install @azure-rest/ai-inference
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Deductie-API voor Azure AI-modellen kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure Machine Learning-studio met dezelfde code en structuur, waaronder Phi-3-familiechatmodellen.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
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)
);
Wanneer u het model implementeert op een zelf-hostend online-eindpunt met ondersteuning voor Microsoft Entra ID , kunt u het volgende codefragment gebruiken om een client te maken.
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()
);
Notitie
Momenteel bieden serverloze API-eindpunten geen ondersteuning voor het gebruik van Microsoft Entra-id voor verificatie.
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
var model_info = await client.path("/info").get()
Het antwoord is als volgt:
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: Phi-3.5-Mini-Instruct
Model type: chat-completions
Model provider name: Microsoft
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het 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,
}
});
Notitie
Phi-3.5-Mini-Instruct, Phi-3.5-MoE-Instruct, Phi-3-mini-4k-Instruct, Phi-3-mini-128k-Instruct, Phi-3-small-8k-Instruct, Phi-3-small-128k-Instruct en Phi-3-medium-128k-Instruct bieden geen ondersteuning voor systeemberichten (role="system"
). Wanneer u de deductie-API van het Azure AI-model gebruikt, worden systeemberichten vertaald naar gebruikersberichten. Dit is de dichtstbijzijnde mogelijkheid die beschikbaar is. Deze vertaling wordt voor het gemak aangeboden, maar het is belangrijk dat u controleert of het model de instructies in het systeembericht met het juiste vertrouwensniveau volgt.
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
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: Phi-3.5-Mini-Instruct
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
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();
Als u voltooiingen wilt streamen, gebruikt .asNodeStream()
u deze wanneer u het model aanroept.
U kunt visualiseren hoe streaming inhoud genereert:
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 ?? "");
}
}
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
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" },
}
});
Waarschuwing
Phi-3-familiemodellen bieden geen ondersteuning voor JSON-uitvoeropmaak (response_format = { "type": "json_object" }
). U kunt het model altijd vragen om JSON-uitvoer te genereren. Dergelijke uitvoer is echter niet gegarandeerd geldige JSON.
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
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
}
});
De volgende extra parameters kunnen worden doorgegeven aan Phi-3 family chatmodellen:
Name | Omschrijving | Type |
---|---|---|
logit_bias |
Accepteert een JSON-object waarmee tokens (opgegeven door de token-id in de tokenizer) worden toegewezen aan een gekoppelde bias-waarde van -100 tot 100. Wiskundig wordt de vooroordelen toegevoegd aan de logboeken die door het model worden gegenereerd voordat ze worden genomen. Het exacte effect verschilt per model, maar waarden tussen -1 en 1 moeten de kans op selectie verkleinen of vergroten; waarden zoals -100 of 100 moeten resulteren in een verbod of exclusieve selectie van het relevante token. | float |
logprobs |
Of u nu logboekkansen van de uitvoertokens wilt retourneren of niet. Indien waar, retourneert u de logboekkans van elk uitvoertoken dat wordt geretourneerd in de van content message . |
int |
top_logprobs |
Een geheel getal tussen 0 en 20 dat het aantal waarschijnlijke tokens aangeeft dat op elke tokenpositie moet worden geretourneerd, elk met een gekoppelde logboekkans. logprobs moet worden ingesteld op true of deze parameter wordt gebruikt. |
float |
n |
Hoeveel opties voor het voltooien van chats voor elk invoerbericht moeten worden gegenereerd. Houd er rekening mee dat er kosten in rekening worden gebracht op basis van het aantal gegenereerde tokens voor alle opties. | int |
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
try {
var messages = [
{ role: "system", content: "You are an AI assistant that helps people find information." },
{ role: "user", content: "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills." },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
}
});
console.log(response.body.choices[0].message.content);
}
catch (error) {
if (error.status_code == 400) {
var response = JSON.parse(error.response._content);
if (response.error) {
console.log(`Your request triggered an ${response.error.code} error:\n\t ${response.error.message}`);
}
else
{
throw error;
}
}
}
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Notitie
Azure AI-inhoudsveiligheid is alleen beschikbaar voor modellen die zijn geïmplementeerd als serverloze API-eindpunten.
Phi-3-gezinschatmodellen
De phi-3-familiechatmodellen omvatten de volgende modellen:
Phi-3.5 modellen zijn lichtgewicht, state-of-the-art open modellen. Deze modellen zijn getraind met Phi-3-gegevenssets die zowel synthetische gegevens als de gefilterde, openbaar beschikbare websitesgegevens bevatten, met een focus op hoogwaardige en redenerende dichte eigenschappen.
Phi-3.5 Mini maakt gebruik van 3.8B-parameters en is een compact transformatormodel met behulp van dezelfde tokenizer als Phi-3 Mini.
Phi-3.5 MoE (mix-of-expert) gebruikt 16x3.8B-parameters met 6.6B actieve parameters bij gebruik van 2 experts. Het model is een mix-of-expert decoder-only transformatormodel, met behulp van een tokenizer met een vocabulaire grootte van 32.064.
De modellen hebben een grondig verbeteringsproces ondergaan, waarbij zowel onder supervisie nauwkeurig afstemmen, proximal beleidsoptimalisatie als directe voorkeursoptimalisatie worden opgenomen om nauwkeurige instructies en robuuste veiligheidsmaatregelen te garanderen. Wanneer ze worden beoordeeld op benchmarks die gezond verstand, taalbegrip, wiskunde, code, lange context en logische redenering testen, hebben Phi-3.5-modellen robuuste en geavanceerde prestaties getoond tussen modellen met minder dan 13 miljard parameters.
De Phi-3.5-modellen worden geleverd in de volgende varianten, waarbij de varianten een contextlengte (in tokens) van 128K hebben.
De volgende modellen zijn beschikbaar:
- Phi-3.5-Mini-Instruct
- Phi-3.5-Moe-Instruct
Vereisten
Als u Phi-3-gezinschatmodellen wilt gebruiken met Azure Machine Learning-studio, hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Phi-3-gezinschatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Implementatie naar een zelf-hostende beheerde compute
Phi-3-familiechatmodellen kunnen worden geïmplementeerd in onze zelf-hostende beheerde deductieoplossing, waarmee u alle details over hoe het model wordt geleverd, kunt aanpassen en beheren.
Voor implementatie naar een zelf-hostende beheerde rekenkracht moet u voldoende quotum in uw abonnement hebben. Als u onvoldoende quotum beschikbaar hebt, kunt u onze tijdelijke quotumtoegang gebruiken door de optie te selecteren die ik wil gebruiken gedeeld quotum en ik bevestig dat dit eindpunt over 168 uur wordt verwijderd.
Het deductiepakket geïnstalleerd
U kunt voorspellingen van dit model gebruiken met behulp van het Azure.AI.Inference
pakket van NuGet. Als u dit pakket wilt installeren, hebt u de volgende vereisten nodig:
- De eindpunt-URL. Als u de clientbibliotheek wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waaryour-host-name
de hostnaam van uw unieke modelimplementatie is enyour-azure-region
de Azure-regio is waar het model wordt geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Nadat u deze vereisten hebt, installeert u de Azure AI-deductiebibliotheek met de volgende opdracht:
dotnet add package Azure.AI.Inference --prerelease
U kunt zich ook verifiëren met Microsoft Entra ID (voorheen Azure Active Directory). Als u referentieproviders wilt gebruiken die bij de Azure SDK zijn geleverd, installeert u het Azure.Identity
pakket:
dotnet add package Azure.Identity
Importeer de volgende naamruimten:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
In dit voorbeeld worden ook de volgende naamruimten gebruikt, maar u hebt ze mogelijk niet altijd nodig:
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Deductie-API voor Azure AI-modellen kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure Machine Learning-studio met dezelfde code en structuur, waaronder Phi-3-familiechatmodellen.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
Wanneer u het model implementeert op een zelf-hostend online-eindpunt met ondersteuning voor Microsoft Entra ID , kunt u het volgende codefragment gebruiken om een client te maken.
client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new DefaultAzureCredential(includeInteractiveCredentials: true)
);
Notitie
Momenteel bieden serverloze API-eindpunten geen ondersteuning voor het gebruik van Microsoft Entra-id voor verificatie.
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
Response<ModelInfo> modelInfo = client.GetModelInfo();
Het antwoord is als volgt:
Console.WriteLine($"Model name: {modelInfo.Value.ModelName}");
Console.WriteLine($"Model type: {modelInfo.Value.ModelType}");
Console.WriteLine($"Model provider name: {modelInfo.Value.ModelProviderName}");
Model name: Phi-3.5-Mini-Instruct
Model type: chat-completions
Model provider name: Microsoft
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het model.
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);
Notitie
Phi-3.5-Mini-Instruct, Phi-3.5-MoE-Instruct, Phi-3-mini-4k-Instruct, Phi-3-mini-128k-Instruct, Phi-3-small-8k-Instruct, Phi-3-small-128k-Instruct en Phi-3-medium-128k-Instruct bieden geen ondersteuning voor systeemberichten (role="system"
). Wanneer u de deductie-API van het Azure AI-model gebruikt, worden systeemberichten vertaald naar gebruikersberichten. Dit is de dichtstbijzijnde mogelijkheid die beschikbaar is. Deze vertaling wordt voor het gemak aangeboden, maar het is belangrijk dat u controleert of het model de instructies in het systeembericht met het juiste vertrouwensniveau volgt.
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
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: Phi-3.5-Mini-Instruct
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
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);
}
Als u voltooiingen wilt streamen, gebruikt CompleteStreamingAsync
u de methode wanneer u het model aanroept. In dit voorbeeld wordt de aanroep verpakt in een asynchrone methode.
Als u de uitvoer wilt visualiseren, definieert u een asynchrone methode om de stream in de console af te drukken.
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);
}
}
}
U kunt visualiseren hoe streaming inhoud genereert:
StreamMessageAsync(client).GetAwaiter().GetResult();
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
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}");
Waarschuwing
Phi-3-familiemodellen bieden geen ondersteuning voor JSON-uitvoeropmaak (response_format = { "type": "json_object" }
). U kunt het model altijd vragen om JSON-uitvoer te genereren. Dergelijke uitvoer is echter niet gegarandeerd geldige JSON.
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
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}");
De volgende extra parameters kunnen worden doorgegeven aan Phi-3 family chatmodellen:
Name | Omschrijving | Type |
---|---|---|
logit_bias |
Accepteert een JSON-object waarmee tokens (opgegeven door de token-id in de tokenizer) worden toegewezen aan een gekoppelde bias-waarde van -100 tot 100. Wiskundig wordt de vooroordelen toegevoegd aan de logboeken die door het model worden gegenereerd voordat ze worden genomen. Het exacte effect verschilt per model, maar waarden tussen -1 en 1 moeten de kans op selectie verkleinen of vergroten; waarden zoals -100 of 100 moeten resulteren in een verbod of exclusieve selectie van het relevante token. | float |
logprobs |
Of u nu logboekkansen van de uitvoertokens wilt retourneren of niet. Indien waar, retourneert u de logboekkans van elk uitvoertoken dat wordt geretourneerd in de van content message . |
int |
top_logprobs |
Een geheel getal tussen 0 en 20 dat het aantal waarschijnlijke tokens aangeeft dat op elke tokenpositie moet worden geretourneerd, elk met een gekoppelde logboekkans. logprobs moet worden ingesteld op true of deze parameter wordt gebruikt. |
float |
n |
Hoeveel opties voor het voltooien van chats voor elk invoerbericht moeten worden gegenereerd. Houd er rekening mee dat er kosten in rekening worden gebracht op basis van het aantal gegenereerde tokens voor alle opties. | int |
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
try
{
requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are an AI assistant that helps people find information."),
new ChatRequestUserMessage(
"Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
),
},
};
response = client.Complete(requestOptions);
Console.WriteLine(response.Value.Choices[0].Message.Content);
}
catch (RequestFailedException ex)
{
if (ex.ErrorCode == "content_filter")
{
Console.WriteLine($"Your query has trigger Azure Content Safety: {ex.Message}");
}
else
{
throw;
}
}
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Notitie
Azure AI-inhoudsveiligheid is alleen beschikbaar voor modellen die zijn geïmplementeerd als serverloze API-eindpunten.
Phi-3-gezinschatmodellen
De phi-3-familiechatmodellen omvatten de volgende modellen:
Phi-3.5 modellen zijn lichtgewicht, state-of-the-art open modellen. Deze modellen zijn getraind met Phi-3-gegevenssets die zowel synthetische gegevens als de gefilterde, openbaar beschikbare websitesgegevens bevatten, met een focus op hoogwaardige en redenerende dichte eigenschappen.
Phi-3.5 Mini maakt gebruik van 3.8B-parameters en is een compact transformatormodel met behulp van dezelfde tokenizer als Phi-3 Mini.
Phi-3.5 MoE (mix-of-expert) gebruikt 16x3.8B-parameters met 6.6B actieve parameters bij gebruik van 2 experts. Het model is een mix-of-expert decoder-only transformatormodel, met behulp van een tokenizer met een vocabulaire grootte van 32.064.
De modellen hebben een grondig verbeteringsproces ondergaan, waarbij zowel onder supervisie nauwkeurig afstemmen, proximal beleidsoptimalisatie als directe voorkeursoptimalisatie worden opgenomen om nauwkeurige instructies en robuuste veiligheidsmaatregelen te garanderen. Wanneer ze worden beoordeeld op benchmarks die gezond verstand, taalbegrip, wiskunde, code, lange context en logische redenering testen, hebben Phi-3.5-modellen robuuste en geavanceerde prestaties getoond tussen modellen met minder dan 13 miljard parameters.
De Phi-3.5-modellen worden geleverd in de volgende varianten, waarbij de varianten een contextlengte (in tokens) van 128K hebben.
De volgende modellen zijn beschikbaar:
- Phi-3.5-Mini-Instruct
- Phi-3.5-Moe-Instruct
Vereisten
Als u Phi-3-gezinschatmodellen wilt gebruiken met Azure Machine Learning-studio, hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Phi-3-gezinschatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Implementatie naar een zelf-hostende beheerde compute
Phi-3-familiechatmodellen kunnen worden geïmplementeerd in onze zelf-hostende beheerde deductieoplossing, waarmee u alle details over hoe het model wordt geleverd, kunt aanpassen en beheren.
Voor implementatie naar een zelf-hostende beheerde rekenkracht moet u voldoende quotum in uw abonnement hebben. Als u onvoldoende quotum beschikbaar hebt, kunt u onze tijdelijke quotumtoegang gebruiken door de optie te selecteren die ik wil gebruiken gedeeld quotum en ik bevestig dat dit eindpunt over 168 uur wordt verwijderd.
Een REST-client
Modellen die zijn geïmplementeerd met de Deductie-API van het Azure AI-model kunnen worden gebruikt met behulp van een REST-client. Als u de REST-client wilt gebruiken, hebt u de volgende vereisten nodig:
- Als u de aanvragen wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waarbijyour-host-name`` is your unique model deployment host name and
uw azure-regio de Azure-regio is waar het model is geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Deductie-API voor Azure AI-modellen kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure Machine Learning-studio met dezelfde code en structuur, waaronder Phi-3-familiechatmodellen.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
Wanneer u het model implementeert op een zelf-hostend online-eindpunt met ondersteuning voor Microsoft Entra ID , kunt u het volgende codefragment gebruiken om een client te maken.
Notitie
Momenteel bieden serverloze API-eindpunten geen ondersteuning voor het gebruik van Microsoft Entra-id voor verificatie.
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
Het antwoord is als volgt:
{
"model_name": "Phi-3.5-Mini-Instruct",
"model_type": "chat-completions",
"model_provider_name": "Microsoft"
}
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het model.
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
Notitie
Phi-3.5-Mini-Instruct, Phi-3.5-MoE-Instruct, Phi-3-mini-4k-Instruct, Phi-3-mini-128k-Instruct, Phi-3-small-8k-Instruct, Phi-3-small-128k-Instruct en Phi-3-medium-128k-Instruct bieden geen ondersteuning voor systeemberichten (role="system"
). Wanneer u de deductie-API van het Azure AI-model gebruikt, worden systeemberichten vertaald naar gebruikersberichten. Dit is de dichtstbijzijnde mogelijkheid die beschikbaar is. Deze vertaling wordt voor het gemak aangeboden, maar het is belangrijk dat u controleert of het model de instructies in het systeembericht met het juiste vertrouwensniveau volgt.
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
{
"id": "0a1234b5de6789f01gh2i345j6789klm",
"object": "chat.completion",
"created": 1718726686,
"model": "Phi-3.5-Mini-Instruct",
"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
}
}
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
{
"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
}
U kunt visualiseren hoe streaming inhoud genereert:
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "Phi-3.5-Mini-Instruct",
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"content": ""
},
"finish_reason": null,
"logprobs": null
}
]
}
Het laatste bericht in de stream is finish_reason
ingesteld, wat de reden aangeeft waarom het generatieproces moet worden gestopt.
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "Phi-3.5-Mini-Instruct",
"choices": [
{
"index": 0,
"delta": {
"content": ""
},
"finish_reason": "stop",
"logprobs": null
}
],
"usage": {
"prompt_tokens": 19,
"total_tokens": 91,
"completion_tokens": 72
}
}
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
{
"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": "Phi-3.5-Mini-Instruct",
"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
}
}
Waarschuwing
Phi-3-familiemodellen bieden geen ondersteuning voor JSON-uitvoeropmaak (response_format = { "type": "json_object" }
). U kunt het model altijd vragen om JSON-uitvoer te genereren. Dergelijke uitvoer is echter niet gegarandeerd geldige JSON.
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
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
}
De volgende extra parameters kunnen worden doorgegeven aan Phi-3 family chatmodellen:
Name | Omschrijving | Type |
---|---|---|
logit_bias |
Accepteert een JSON-object waarmee tokens (opgegeven door de token-id in de tokenizer) worden toegewezen aan een gekoppelde bias-waarde van -100 tot 100. Wiskundig wordt de vooroordelen toegevoegd aan de logboeken die door het model worden gegenereerd voordat ze worden genomen. Het exacte effect verschilt per model, maar waarden tussen -1 en 1 moeten de kans op selectie verkleinen of vergroten; waarden zoals -100 of 100 moeten resulteren in een verbod of exclusieve selectie van het relevante token. | float |
logprobs |
Of u nu logboekkansen van de uitvoertokens wilt retourneren of niet. Indien waar, retourneert u de logboekkans van elk uitvoertoken dat wordt geretourneerd in de van content message . |
int |
top_logprobs |
Een geheel getal tussen 0 en 20 dat het aantal waarschijnlijke tokens aangeeft dat op elke tokenpositie moet worden geretourneerd, elk met een gekoppelde logboekkans. logprobs moet worden ingesteld op true of deze parameter wordt gebruikt. |
float |
n |
Hoeveel opties voor het voltooien van chats voor elk invoerbericht moeten worden gegenereerd. Houd er rekening mee dat er kosten in rekening worden gebracht op basis van het aantal gegenereerde tokens voor alle opties. | int |
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
{
"messages": [
{
"role": "system",
"content": "You are an AI assistant that helps people find information."
},
{
"role": "user",
"content": "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
}
]
}
{
"error": {
"message": "The response was filtered due to the prompt triggering Microsoft's content management policy. Please modify your prompt and retry.",
"type": null,
"param": "prompt",
"code": "content_filter",
"status": 400
}
}
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Notitie
Azure AI-inhoudsveiligheid is alleen beschikbaar voor modellen die zijn geïmplementeerd als serverloze API-eindpunten.
Meer deductievoorbeelden
Zie de volgende voorbeelden en zelfstudies voor meer voorbeelden van het gebruik van Phi-3-gezinsmodellen:
Beschrijving | Taal | Voorbeeld |
---|---|---|
CURL-aanvraag | Bash | Koppeling |
Azure AI-deductiepakket voor JavaScript | JavaScript | Koppeling |
Azure AI-deductiepakket voor Python | Python | Koppeling |
Python-webaanvragen | Python | Koppeling |
OpenAI SDK (experimenteel) | Python | Koppeling |
LangChain | Python | Koppeling |
LiteLLM | Python | Koppeling |
Kosten- en quotumoverwegingen voor Phi-3-seriemodellen die zijn geïmplementeerd als serverloze API-eindpunten
Het quotum wordt beheerd per implementatie. Elke implementatie heeft een frequentielimiet van 200.000 tokens per minuut en 1000 API-aanvragen per minuut. Momenteel beperken we echter tot één implementatie per model per project. Neem contact op met de ondersteuning voor Microsoft Azure als de huidige frequentielimieten niet voldoende zijn voor uw scenario's.
Kosten- en quotumoverwegingen voor Phi-3-gezinsmodellen die zijn geïmplementeerd op beheerde berekeningen
Phi-3-gezinsmodellen die zijn geïmplementeerd voor beheerde rekenkracht, worden gefactureerd op basis van de kernuren van het bijbehorende rekenproces. De kosten van het rekenproces worden bepaald door de grootte van het exemplaar, het aantal actieve exemplaren en de duur van de uitvoering.
Het is een goede gewoonte om te beginnen met een laag aantal exemplaren en zo nodig omhoog te schalen. U kunt de kosten van het rekenproces bewaken in Azure Portal.