Så här använder du Phi-3-familjechattmodeller
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
I den här artikeln får du lära dig mer om Phi-3-familjechattmodeller och hur du använder dem. Phi-3-serien med små språkmodeller (SLM) är en samling generativa textmodeller med instruktioner.
Viktigt!
Modeller som är i förhandsversion markeras som förhandsversioner på sina modellkort i modellkatalogen.
Phi-3-familjechattmodeller
Phi-3-familjechattmodellerna innehåller följande modeller:
Phi-3.5-modeller är lätta, toppmoderna öppna modeller. Dessa modeller tränades med Phi-3-datauppsättningar som innehåller både syntetiska data och filtrerade, offentligt tillgängliga webbplatsdata, med fokus på högkvalitativa och resonemangstäta egenskaper.
Phi-3.5 Mini använder 3,8B-parametrar och är en kompakt transformatormodell som endast är avkodare med samma tokenizer som Phi-3 Mini.
Phi-3.5 MoE (blandning av expert) använder 16x3.8B parametrar med 6.6B aktiva parametrar när du använder 2 experter. Modellen är en blandning av -expert decoder-only transformeringsmodell, med en tokenizer med vokabulärstorlek på 32 064.
Modellerna genomgick en rigorös förbättringsprocess med både övervakad finjustering, proximal principoptimering och direktpreferensoptimering för att säkerställa exakt instruktionsefterlevnad och robusta säkerhetsåtgärder. När phi-3.5-modeller utvärderades mot riktmärken som testar sunt förnuft, språkförstedelse, matematik, kod, långt sammanhang och logiskt resonemang visade de upp robusta och toppmoderna prestanda bland modeller med mindre än 13 miljarder parametrar.
Phi-3.5-modellerna finns i följande varianter, där varianterna har en kontextlängd (i token) på 128 K.
Följande modeller är tillgängliga:
Förutsättningar
Om du vill använda Phi-3-familjechattmodeller med Azure AI Foundry behöver du följande förutsättningar:
En modelldistribution
Distribution till serverlösa API:er
Phi-3-familjechattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.
Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.
Distribution till en lokalt installerad hanterad beräkning
Phi-3-familjechattmodeller kan distribueras till vår egenhanterade lösning för hanterad slutsatsdragning, som gör att du kan anpassa och kontrollera all information om hur modellen hanteras.
För distribution till en lokalt installerad hanterad beräkning måste du ha tillräckligt med kvot i din prenumeration. Om du inte har tillräckligt med tillgänglig kvot kan du använda vår tillfälliga kvotåtkomst genom att välja alternativet Jag vill använda delad kvot och jag bekräftar att slutpunkten tas bort om 168 timmar.
Inferenspaketet installerat
Du kan använda förutsägelser från den här modellen med hjälp azure-ai-inference
av paketet med Python. För att installera det här paketet behöver du följande krav:
- Python 3.8 eller senare installerat, inklusive pip.
- Slutpunkts-URL:en. Om du vill skapa klientbiblioteket måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret
https://your-host-name.your-azure-region.inference.ai.azure.com
, däryour-host-name
är värdnamnet för din unika modelldistribution ochyour-azure-region
är den Azure-region där modellen distribueras (till exempel eastus2). - Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.
När du har dessa förutsättningar installerar du Azure AI-slutsatsdragningspaketet med följande kommando:
pip install azure-ai-inference
Läs mer om Azure AI-slutsatsdragningspaketet och referensen.
Arbeta med chattens slutföranden
I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.
Dricks
Med AZURE AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive Phi-3-familjechattmodeller.
Skapa en klient för att använda modellen
Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.
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"]),
)
När du distribuerar modellen till en lokalt installerad onlineslutpunkt med Microsoft Entra ID-stöd kan du använda följande kodfragment för att skapa en klient.
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredential(),
)
Kommentar
För närvarande stöder inte serverlösa API-slutpunkter användning av Microsoft Entra-ID för autentisering.
Hämta modellens funktioner
Vägen /info
returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:
model_info = client.get_model_info()
Svaret är följande:
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
Skapa en begäran om att chatten ska slutföras
I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.
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?"),
],
)
Kommentar
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 och Phi-3-medium-128k-Instruct stöder inte systemmeddelanden (role="system"
). När du använder AZURE AI-modellinferens-API:et översätts systemmeddelanden till användarmeddelanden, vilket är den närmaste tillgängliga funktionen. Den här översättningen erbjuds för enkelhetens skull, men det är viktigt att du kontrollerar att modellen följer anvisningarna i systemmeddelandet med rätt konfidensnivå.
Svaret är följande, där du kan se modellens användningsstatistik:
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
usage
Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.
Strömma innehåll
Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.
Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.
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,
)
Om du vill strömma slutföranden anger stream=True
du när du anropar modellen.
Om du vill visualisera utdata definierar du en hjälpfunktion för att skriva ut strömmen.
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="")
Du kan visualisera hur strömning genererar innehåll:
print_stream(result)
Utforska fler parametrar som stöds av slutsatsdragningsklienten
Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.
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() },
)
Varning
Phi-3-familjemodeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }
). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.
Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.
Skicka extra parametrar till modellen
Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs
till modellen.
Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters
till modellen med värdet pass-through
. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
model_extras={
"logprobs": True
}
)
Följande extra parametrar kan skickas till Phi-3-familjechattmodeller:
Name | beskrivning | Typ |
---|---|---|
logit_bias |
Accepterar ett JSON-objekt som mappar token (som anges av deras token-ID i tokenizern) till ett associerat bias-värde från -100 till 100. Matematiskt läggs biasen till i de logits som genereras av modellen före sampling. Den exakta effekten varierar per modell, men värden mellan -1 och 1 bör minska eller öka sannolikheten för val. värden som -100 eller 100 bör resultera i ett förbud eller exklusivt val av relevant token. | float |
logprobs |
Om du vill returnera loggannolikheter för utdatatoken eller inte. Om sant returnerar loggannolikerna för varje utdatatoken som returneras i content i message . |
int |
top_logprobs |
Ett heltal mellan 0 och 20 som anger antalet mest sannolika token som ska returneras vid varje tokenposition, var och en med en associerad loggsannolikhet. logprobs måste anges till true om den här parametern används. |
float |
n |
Hur många alternativ för chattavslut som ska genereras för varje indatameddelande. Observera att du debiteras baserat på antalet genererade token för alla alternativ. | int |
Tillämpa innehållssäkerhet
Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.
I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.
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
Dricks
Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.
Kommentar
Azure AI-innehållssäkerhet är endast tillgängligt för modeller som distribueras som serverlösa API-slutpunkter.
Phi-3-familjechattmodeller
Phi-3-familjechattmodellerna innehåller följande modeller:
Phi-3.5-modeller är lätta, toppmoderna öppna modeller. Dessa modeller tränades med Phi-3-datauppsättningar som innehåller både syntetiska data och filtrerade, offentligt tillgängliga webbplatsdata, med fokus på högkvalitativa och resonemangstäta egenskaper.
Phi-3.5 Mini använder 3,8B-parametrar och är en kompakt transformatormodell som endast är avkodare med samma tokenizer som Phi-3 Mini.
Phi-3.5 MoE (blandning av expert) använder 16x3.8B parametrar med 6.6B aktiva parametrar när du använder 2 experter. Modellen är en blandning av -expert decoder-only transformeringsmodell, med en tokenizer med vokabulärstorlek på 32 064.
Modellerna genomgick en rigorös förbättringsprocess med både övervakad finjustering, proximal principoptimering och direktpreferensoptimering för att säkerställa exakt instruktionsefterlevnad och robusta säkerhetsåtgärder. När phi-3.5-modeller utvärderades mot riktmärken som testar sunt förnuft, språkförstedelse, matematik, kod, långt sammanhang och logiskt resonemang visade de upp robusta och toppmoderna prestanda bland modeller med mindre än 13 miljarder parametrar.
Phi-3.5-modellerna finns i följande varianter, där varianterna har en kontextlängd (i token) på 128 K.
Följande modeller är tillgängliga:
Förutsättningar
Om du vill använda Phi-3-familjechattmodeller med Azure AI Foundry behöver du följande förutsättningar:
En modelldistribution
Distribution till serverlösa API:er
Phi-3-familjechattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.
Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.
Distribution till en lokalt installerad hanterad beräkning
Phi-3-familjechattmodeller kan distribueras till vår egenhanterade lösning för hanterad slutsatsdragning, som gör att du kan anpassa och kontrollera all information om hur modellen hanteras.
För distribution till en lokalt installerad hanterad beräkning måste du ha tillräckligt med kvot i din prenumeration. Om du inte har tillräckligt med tillgänglig kvot kan du använda vår tillfälliga kvotåtkomst genom att välja alternativet Jag vill använda delad kvot och jag bekräftar att slutpunkten tas bort om 168 timmar.
Inferenspaketet installerat
Du kan använda förutsägelser från den här modellen med hjälp @azure-rest/ai-inference
av paketet från npm
. För att installera det här paketet behöver du följande krav:
- LTS-versioner av
Node.js
mednpm
. - Slutpunkts-URL:en. Om du vill skapa klientbiblioteket måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret
https://your-host-name.your-azure-region.inference.ai.azure.com
, däryour-host-name
är värdnamnet för din unika modelldistribution ochyour-azure-region
är den Azure-region där modellen distribueras (till exempel eastus2). - Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.
När du har dessa förutsättningar installerar du Azure Inference-biblioteket för JavaScript med följande kommando:
npm install @azure-rest/ai-inference
Arbeta med chattens slutföranden
I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.
Dricks
Med AZURE AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive Phi-3-familjechattmodeller.
Skapa en klient för att använda modellen
Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.
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)
);
När du distribuerar modellen till en lokalt installerad onlineslutpunkt med Microsoft Entra ID-stöd kan du använda följande kodfragment för att skapa en klient.
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()
);
Kommentar
För närvarande stöder inte serverlösa API-slutpunkter användning av Microsoft Entra-ID för autentisering.
Hämta modellens funktioner
Vägen /info
returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:
var model_info = await client.path("/info").get()
Svaret är följande:
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
Skapa en begäran om att chatten ska slutföras
I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.
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,
}
});
Kommentar
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 och Phi-3-medium-128k-Instruct stöder inte systemmeddelanden (role="system"
). När du använder AZURE AI-modellinferens-API:et översätts systemmeddelanden till användarmeddelanden, vilket är den närmaste tillgängliga funktionen. Den här översättningen erbjuds för enkelhetens skull, men det är viktigt att du kontrollerar att modellen följer anvisningarna i systemmeddelandet med rätt konfidensnivå.
Svaret är följande, där du kan se modellens användningsstatistik:
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
usage
Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.
Strömma innehåll
Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.
Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.
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();
Om du vill strömma slutföranden använder .asNodeStream()
du när du anropar modellen.
Du kan visualisera hur strömning genererar innehåll:
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 ?? "");
}
}
Utforska fler parametrar som stöds av slutsatsdragningsklienten
Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.
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" },
}
});
Varning
Phi-3-familjemodeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }
). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.
Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.
Skicka extra parametrar till modellen
Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs
till modellen.
Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters
till modellen med värdet pass-through
. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.
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
}
});
Följande extra parametrar kan skickas till Phi-3-familjechattmodeller:
Name | beskrivning | Typ |
---|---|---|
logit_bias |
Accepterar ett JSON-objekt som mappar token (som anges av deras token-ID i tokenizern) till ett associerat bias-värde från -100 till 100. Matematiskt läggs biasen till i de logits som genereras av modellen före sampling. Den exakta effekten varierar per modell, men värden mellan -1 och 1 bör minska eller öka sannolikheten för val. värden som -100 eller 100 bör resultera i ett förbud eller exklusivt val av relevant token. | float |
logprobs |
Om du vill returnera loggannolikheter för utdatatoken eller inte. Om sant returnerar loggannolikerna för varje utdatatoken som returneras i content i message . |
int |
top_logprobs |
Ett heltal mellan 0 och 20 som anger antalet mest sannolika token som ska returneras vid varje tokenposition, var och en med en associerad loggsannolikhet. logprobs måste anges till true om den här parametern används. |
float |
n |
Hur många alternativ för chattavslut som ska genereras för varje indatameddelande. Observera att du debiteras baserat på antalet genererade token för alla alternativ. | int |
Tillämpa innehållssäkerhet
Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.
I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.
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;
}
}
}
Dricks
Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.
Kommentar
Azure AI-innehållssäkerhet är endast tillgängligt för modeller som distribueras som serverlösa API-slutpunkter.
Phi-3-familjechattmodeller
Phi-3-familjechattmodellerna innehåller följande modeller:
Phi-3.5-modeller är lätta, toppmoderna öppna modeller. Dessa modeller tränades med Phi-3-datauppsättningar som innehåller både syntetiska data och filtrerade, offentligt tillgängliga webbplatsdata, med fokus på högkvalitativa och resonemangstäta egenskaper.
Phi-3.5 Mini använder 3,8B-parametrar och är en kompakt transformatormodell som endast är avkodare med samma tokenizer som Phi-3 Mini.
Phi-3.5 MoE (blandning av expert) använder 16x3.8B parametrar med 6.6B aktiva parametrar när du använder 2 experter. Modellen är en blandning av -expert decoder-only transformeringsmodell, med en tokenizer med vokabulärstorlek på 32 064.
Modellerna genomgick en rigorös förbättringsprocess med både övervakad finjustering, proximal principoptimering och direktpreferensoptimering för att säkerställa exakt instruktionsefterlevnad och robusta säkerhetsåtgärder. När phi-3.5-modeller utvärderades mot riktmärken som testar sunt förnuft, språkförstedelse, matematik, kod, långt sammanhang och logiskt resonemang visade de upp robusta och toppmoderna prestanda bland modeller med mindre än 13 miljarder parametrar.
Phi-3.5-modellerna finns i följande varianter, där varianterna har en kontextlängd (i token) på 128 K.
Följande modeller är tillgängliga:
Förutsättningar
Om du vill använda Phi-3-familjechattmodeller med Azure AI Foundry behöver du följande förutsättningar:
En modelldistribution
Distribution till serverlösa API:er
Phi-3-familjechattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.
Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.
Distribution till en lokalt installerad hanterad beräkning
Phi-3-familjechattmodeller kan distribueras till vår egenhanterade lösning för hanterad slutsatsdragning, som gör att du kan anpassa och kontrollera all information om hur modellen hanteras.
För distribution till en lokalt installerad hanterad beräkning måste du ha tillräckligt med kvot i din prenumeration. Om du inte har tillräckligt med tillgänglig kvot kan du använda vår tillfälliga kvotåtkomst genom att välja alternativet Jag vill använda delad kvot och jag bekräftar att slutpunkten tas bort om 168 timmar.
Inferenspaketet installerat
Du kan använda förutsägelser från den här modellen med hjälp Azure.AI.Inference
av paketet från NuGet. För att installera det här paketet behöver du följande krav:
- Slutpunkts-URL:en. Om du vill skapa klientbiblioteket måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret
https://your-host-name.your-azure-region.inference.ai.azure.com
, däryour-host-name
är värdnamnet för din unika modelldistribution ochyour-azure-region
är den Azure-region där modellen distribueras (till exempel eastus2). - Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.
När du har dessa förutsättningar installerar du Azure AI-slutsatsdragningsbiblioteket med följande kommando:
dotnet add package Azure.AI.Inference --prerelease
Du kan också autentisera med Microsoft Entra-ID (tidigare Azure Active Directory). Om du vill använda autentiseringsprovidrar som medföljer Azure SDK installerar du Azure.Identity
paketet:
dotnet add package Azure.Identity
Importera följande namnområden:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
I det här exemplet används även följande namnområden, men du kanske inte alltid behöver dem:
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Arbeta med chattens slutföranden
I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.
Dricks
Med AZURE AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive Phi-3-familjechattmodeller.
Skapa en klient för att använda modellen
Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
När du distribuerar modellen till en lokalt installerad onlineslutpunkt med Microsoft Entra ID-stöd kan du använda följande kodfragment för att skapa en klient.
client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new DefaultAzureCredential(includeInteractiveCredentials: true)
);
Kommentar
För närvarande stöder inte serverlösa API-slutpunkter användning av Microsoft Entra-ID för autentisering.
Hämta modellens funktioner
Vägen /info
returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:
Response<ModelInfo> modelInfo = client.GetModelInfo();
Svaret är följande:
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
Skapa en begäran om att chatten ska slutföras
I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.
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);
Kommentar
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 och Phi-3-medium-128k-Instruct stöder inte systemmeddelanden (role="system"
). När du använder AZURE AI-modellinferens-API:et översätts systemmeddelanden till användarmeddelanden, vilket är den närmaste tillgängliga funktionen. Den här översättningen erbjuds för enkelhetens skull, men det är viktigt att du kontrollerar att modellen följer anvisningarna i systemmeddelandet med rätt konfidensnivå.
Svaret är följande, där du kan se modellens användningsstatistik:
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
usage
Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.
Strömma innehåll
Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.
Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.
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);
}
Om du vill strömma slutföranden använder CompleteStreamingAsync
du metoden när du anropar modellen. Observera att i det här exemplet omsluts anropet i en asynkron metod.
Om du vill visualisera utdata definierar du en asynkron metod för att skriva ut strömmen i konsolen.
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);
}
}
}
Du kan visualisera hur strömning genererar innehåll:
StreamMessageAsync(client).GetAwaiter().GetResult();
Utforska fler parametrar som stöds av slutsatsdragningsklienten
Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.
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}");
Varning
Phi-3-familjemodeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }
). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.
Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.
Skicka extra parametrar till modellen
Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs
till modellen.
Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters
till modellen med värdet pass-through
. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.
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}");
Följande extra parametrar kan skickas till Phi-3-familjechattmodeller:
Name | beskrivning | Typ |
---|---|---|
logit_bias |
Accepterar ett JSON-objekt som mappar token (som anges av deras token-ID i tokenizern) till ett associerat bias-värde från -100 till 100. Matematiskt läggs biasen till i de logits som genereras av modellen före sampling. Den exakta effekten varierar per modell, men värden mellan -1 och 1 bör minska eller öka sannolikheten för val. värden som -100 eller 100 bör resultera i ett förbud eller exklusivt val av relevant token. | float |
logprobs |
Om du vill returnera loggannolikheter för utdatatoken eller inte. Om sant returnerar loggannolikerna för varje utdatatoken som returneras i content i message . |
int |
top_logprobs |
Ett heltal mellan 0 och 20 som anger antalet mest sannolika token som ska returneras vid varje tokenposition, var och en med en associerad loggsannolikhet. logprobs måste anges till true om den här parametern används. |
float |
n |
Hur många alternativ för chattavslut som ska genereras för varje indatameddelande. Observera att du debiteras baserat på antalet genererade token för alla alternativ. | int |
Tillämpa innehållssäkerhet
Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.
I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.
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;
}
}
Dricks
Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.
Kommentar
Azure AI-innehållssäkerhet är endast tillgängligt för modeller som distribueras som serverlösa API-slutpunkter.
Phi-3-familjechattmodeller
Phi-3-familjechattmodellerna innehåller följande modeller:
Phi-3.5-modeller är lätta, toppmoderna öppna modeller. Dessa modeller tränades med Phi-3-datauppsättningar som innehåller både syntetiska data och filtrerade, offentligt tillgängliga webbplatsdata, med fokus på högkvalitativa och resonemangstäta egenskaper.
Phi-3.5 Mini använder 3,8B-parametrar och är en kompakt transformatormodell som endast är avkodare med samma tokenizer som Phi-3 Mini.
Phi-3.5 MoE (blandning av expert) använder 16x3.8B parametrar med 6.6B aktiva parametrar när du använder 2 experter. Modellen är en blandning av -expert decoder-only transformeringsmodell, med en tokenizer med vokabulärstorlek på 32 064.
Modellerna genomgick en rigorös förbättringsprocess med både övervakad finjustering, proximal principoptimering och direktpreferensoptimering för att säkerställa exakt instruktionsefterlevnad och robusta säkerhetsåtgärder. När phi-3.5-modeller utvärderades mot riktmärken som testar sunt förnuft, språkförstedelse, matematik, kod, långt sammanhang och logiskt resonemang visade de upp robusta och toppmoderna prestanda bland modeller med mindre än 13 miljarder parametrar.
Phi-3.5-modellerna finns i följande varianter, där varianterna har en kontextlängd (i token) på 128 K.
Följande modeller är tillgängliga:
Förutsättningar
Om du vill använda Phi-3-familjechattmodeller med Azure AI Foundry behöver du följande förutsättningar:
En modelldistribution
Distribution till serverlösa API:er
Phi-3-familjechattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.
Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.
Distribution till en lokalt installerad hanterad beräkning
Phi-3-familjechattmodeller kan distribueras till vår egenhanterade lösning för hanterad slutsatsdragning, som gör att du kan anpassa och kontrollera all information om hur modellen hanteras.
För distribution till en lokalt installerad hanterad beräkning måste du ha tillräckligt med kvot i din prenumeration. Om du inte har tillräckligt med tillgänglig kvot kan du använda vår tillfälliga kvotåtkomst genom att välja alternativet Jag vill använda delad kvot och jag bekräftar att slutpunkten tas bort om 168 timmar.
En REST-klient
Modeller som distribueras med Azure AI-modellinferens-API :et kan användas med valfri REST-klient. Om du vill använda REST-klienten behöver du följande krav:
- Om du vill skapa begäranden måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret
https://your-host-name.your-azure-region.inference.ai.azure.com
, däryour-host-name`` is your unique model deployment host name and
din-azure-region är den Azure-region där modellen distribueras (till exempel eastus2). - Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.
Arbeta med chattens slutföranden
I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.
Dricks
Med AZURE AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive Phi-3-familjechattmodeller.
Skapa en klient för att använda modellen
Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.
När du distribuerar modellen till en lokalt installerad onlineslutpunkt med Microsoft Entra ID-stöd kan du använda följande kodfragment för att skapa en klient.
Kommentar
För närvarande stöder inte serverlösa API-slutpunkter användning av Microsoft Entra-ID för autentisering.
Hämta modellens funktioner
Vägen /info
returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:
GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
Svaret är följande:
{
"model_name": "Phi-3.5-Mini-Instruct",
"model_type": "chat-completions",
"model_provider_name": "Microsoft"
}
Skapa en begäran om att chatten ska slutföras
I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
Kommentar
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 och Phi-3-medium-128k-Instruct stöder inte systemmeddelanden (role="system"
). När du använder AZURE AI-modellinferens-API:et översätts systemmeddelanden till användarmeddelanden, vilket är den närmaste tillgängliga funktionen. Den här översättningen erbjuds för enkelhetens skull, men det är viktigt att du kontrollerar att modellen följer anvisningarna i systemmeddelandet med rätt konfidensnivå.
Svaret är följande, där du kan se modellens användningsstatistik:
{
"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
}
}
usage
Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.
Strömma innehåll
Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.
Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.
{
"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
}
Du kan visualisera hur strömning genererar innehåll:
{
"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
}
]
}
Det sista meddelandet i strömmen har finish_reason
angetts, vilket anger orsaken till att genereringsprocessen stoppas.
{
"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
}
}
Utforska fler parametrar som stöds av slutsatsdragningsklienten
Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.
{
"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
}
}
Varning
Phi-3-familjemodeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }
). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.
Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.
Skicka extra parametrar till modellen
Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs
till modellen.
Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters
till modellen med värdet pass-through
. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.
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
}
Följande extra parametrar kan skickas till Phi-3-familjechattmodeller:
Name | beskrivning | Typ |
---|---|---|
logit_bias |
Accepterar ett JSON-objekt som mappar token (som anges av deras token-ID i tokenizern) till ett associerat bias-värde från -100 till 100. Matematiskt läggs biasen till i de logits som genereras av modellen före sampling. Den exakta effekten varierar per modell, men värden mellan -1 och 1 bör minska eller öka sannolikheten för val. värden som -100 eller 100 bör resultera i ett förbud eller exklusivt val av relevant token. | float |
logprobs |
Om du vill returnera loggannolikheter för utdatatoken eller inte. Om sant returnerar loggannolikerna för varje utdatatoken som returneras i content i message . |
int |
top_logprobs |
Ett heltal mellan 0 och 20 som anger antalet mest sannolika token som ska returneras vid varje tokenposition, var och en med en associerad loggsannolikhet. logprobs måste anges till true om den här parametern används. |
float |
n |
Hur många alternativ för chattavslut som ska genereras för varje indatameddelande. Observera att du debiteras baserat på antalet genererade token för alla alternativ. | int |
Tillämpa innehållssäkerhet
Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.
I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.
{
"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
}
}
Dricks
Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.
Kommentar
Azure AI-innehållssäkerhet är endast tillgängligt för modeller som distribueras som serverlösa API-slutpunkter.
Fler slutsatsdragningsexempel
Fler exempel på hur du använder Phi-3-familjemodeller finns i följande exempel och självstudier:
beskrivning | Språk | Exempel |
---|---|---|
CURL-begäran | Bash | Länk |
Azure AI-slutsatsdragningspaket för JavaScript | JavaScript | Länk |
Azure AI-slutsatsdragningspaket för Python | Python | Länk |
Python-webbbegäranden | Python | Länk |
OpenAI SDK (experimentell) | Python | Länk |
LangChain | Python | Länk |
LiteLLM | Python | Länk |
Kostnads- och kvotöverväganden för Phi-3-familjemodeller som distribueras som serverlösa API-slutpunkter
Kvot hanteras per distribution. Varje distribution har en hastighetsgräns på 200 000 token per minut och 1 000 API-begäranden per minut. För närvarande begränsar vi dock en distribution per modell per projekt. Kontakta Microsoft Azure Support om de aktuella hastighetsgränserna inte räcker för dina scenarier.
Kostnads- och kvotöverväganden för Phi-3-familjemodeller som distribuerats till hanterad beräkning
Phi-3-familjemodeller som distribueras till hanterad beräkning faktureras baserat på kärntimmarna för den associerade beräkningsinstansen. Kostnaden för beräkningsinstansen bestäms av instansens storlek, antalet instanser som körs och körningens varaktighet.
Det är en bra idé att börja med ett lågt antal instanser och skala upp efter behov. Du kan övervaka kostnaden för beräkningsinstansen i Azure Portal.
Exempel på notebook-fil
Du kan använda den här exempelanteckningsboken för att skapa ett fristående finjusteringsjobb för att förbättra en modells förmåga att sammanfatta dialoger mellan två personer med hjälp av Samsum-datauppsättningen. Träningsdata som används är den ultrachat_200k datauppsättningen, som är uppdelad i fyra delningar som är lämpliga för övervakad finjustering (sft) och generationsrankning (gen). Notebook-filen använder tillgängliga Azure AI-modeller för chattens slutförande (Om du vill använda en annan modell än vad som används i notebook-filen kan du ersätta modellnamnet). Notebook-filen innehåller krav för att konfigurera, välja en modell för att finjustera, skapa tränings- och valideringsdatauppsättningar, konfigurera och skicka finjusteringsjobbet och slutligen skapa en serverlös distribution med hjälp av den finjusterade modellen för exempelinferens.