Så här distribuerar du Jamba-familjemodeller för AI21 med Azure AI Studio
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 hur du använder Azure AI Studio för att distribuera JAMBA-familjemodeller för AI21 som ett serverlöst API med betala per användning-fakturering.
Jamba-familjemodellerna är AI21:s Mamba-baserade Mamba-baserade storspråksmodell (LLM) i produktionsklass som utnyttjar AI21:s Mamba-Transformer-hybridarkitektur. Det är en instruktionsjusterad version av AI21:s Hybrid Structured State Space Model (SSM) transformator Jamba-modell. Jamba-familjemodellerna är byggda för tillförlitlig kommersiell användning med avseende på kvalitet och prestanda.
Se våra meddelanden om AI21:s Jamba-familjemodeller som nu är tillgängliga i Azure AI Model Catalog via AI21:s blogg och Microsoft Tech Community Blog.
Viktigt!
Modeller som är i förhandsversion markeras som förhandsversioner på sina modellkort i modellkatalogen.
Distribuera Jamba-familjemodellerna som ett serverlöst API
Vissa modeller i modellkatalogen kan distribueras som ett serverlöst API med betala per användning-fakturering, vilket ger ett sätt att använda dem som ett API utan att vara värd för dem i din prenumeration, samtidigt som företagets säkerhets- och efterlevnadsorganisationer behöver det. Det här distributionsalternativet kräver inte kvot från din prenumeration.
AI21-Jamba 1.5 Large-modellen som distribueras som ett serverlöst API med betala per användning-fakturering erbjuds av AI21 via Microsoft Azure Marketplace. AI21 kan ändra eller uppdatera användningsvillkoren och prissättningen för den här modellen.
För att komma igång med Jamba 1.5 large distribuerad som ett serverlöst API kan du utforska våra integreringar med LangChain, LiteLLM, OpenAI och Azure API.
Förutsättningar
En Azure-prenumeration med en giltig betalningsmetod. Kostnadsfria azure-prenumerationer eller utvärderingsprenumerationer fungerar inte. Om du inte har en Azure-prenumeration skapar du ett betalt Azure-konto för att börja.
En AI Studio-hubb. Det serverlösa API-modelldistributionserbjudandet för Jamba-familjemodeller är endast tillgängligt med hubbar som skapats i dessa regioner:
- East US
- USA, östra 2
- USA, norra centrala
- USA, södra centrala
- USA, västra
- USA, västra 3
- Sverige, centrala
En lista över regioner som är tillgängliga för var och en av modellerna som stöder serverlösa API-slutpunktsdistributioner finns i Regiontillgänglighet för modeller i serverlösa API-slutpunkter.
Ett Azure AI Studio-projekt.
Rollbaserade åtkomstkontroller i Azure (Azure RBAC) används för att bevilja åtkomst till åtgärder i Azure AI Studio. Om du vill utföra stegen i den här artikeln måste ditt användarkonto tilldelas rollen ägare eller deltagare för Azure-prenumerationen. Alternativt kan ditt konto tilldelas en anpassad roll som har följande behörigheter:
I Azure-prenumerationen – för att prenumerera på AI Studio-projektet till Azure Marketplace-erbjudandet, en gång för varje projekt, per erbjudande:
Microsoft.MarketplaceOrdering/agreements/offers/plans/read
Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
Microsoft.SaaS/register/action
I resursgruppen – för att skapa och använda SaaS-resursen:
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
I AI Studio-projektet – för att distribuera slutpunkter (rollen Azure AI Developer innehåller redan dessa behörigheter):
Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*
Mer information om behörigheter finns i Rollbaserad åtkomstkontroll i Azure AI Studio.
Skapa en ny distribution
De här stegen visar distributionen av AI21 Jamba 1.5 Large
eller AI21 Jamba 1.5 Mini
modellerna. Så här skapar du en distribution:
Logga in på Azure AI Studio.
Välj Modellkatalog i det vänstra sidofältet.
Sök efter och välj en AI21-modell som
AI21 Jamba 1.5 Large
ellerAI21 Jamba Instruct
AI21 Jamba 1.5 Mini
för att öppna sidan Information.Välj Distribuera för att öppna ett serverlöst API-distributionsfönster för modellen.
Du kan också initiera en distribution genom att starta från ditt projekt i AI Studio.
I det vänstra sidofältet i projektet väljer du Komponenter>Distributioner.
Välj + Skapa distribution.
Sök efter och välj en AI21-modell som
AI21 Jamba 1.5 Large
ellerAI21 Jamba Instruct
AI21 Jamba 1.5 Mini
för att öppna sidan Modellinformation.Välj Bekräfta för att öppna ett serverlöst API-distributionsfönster för modellen.
Välj det projekt där du vill distribuera din modell. Om du vill distribuera AI21-Jamba-familjemodellerna måste projektet finnas i någon av de regioner som anges i avsnittet Förutsättningar .
I distributionsguiden väljer du länken till Azure Marketplace-villkor för att lära dig mer om användningsvillkoren.
Välj fliken Priser och villkor för att lära dig mer om priser för den valda modellen.
Välj knappen Prenumerera och Distribuera. Om det här är första gången du distribuerar modellen i projektet måste du prenumerera på ditt projekt för det specifika erbjudandet. Det här steget kräver att ditt konto har behörigheter för Azure-prenumerationer och resursgruppsbehörigheter som anges i förhandskraven. Varje projekt har en egen prenumeration på det specifika Azure Marketplace-erbjudandet för modellen, vilket gör att du kan styra och övervaka utgifter. För närvarande kan du bara ha en distribution för varje modell i ett projekt.
När du prenumererar på projektet för det specifika Azure Marketplace-erbjudandet behöver efterföljande distributioner av samma erbjudande i samma projekt inte prenumerera igen. Om det här scenariot gäller för dig finns det alternativet Fortsätt att distribuera för att välja.
Ge distributionen ett namn. Det här namnet blir en del av URL:en för distributions-API:et. Den här URL:en måste vara unik i varje Azure-region.
Välj distribuera. Vänta tills distributionen är klar och du omdirigeras till sidan Distributioner.
Gå tillbaka till sidan Distributioner, välj distributionen och notera slutpunktens mål-URL och den hemliga nyckeln. Mer information om hur du använder API:er finns i avsnittet Referens .
Du hittar alltid slutpunktens information, URL och åtkomstnycklar genom att gå till sidan Projektöversikt . Välj sedan Distributioner av komponenter>i det vänstra sidofältet i projektet.
Information om fakturering för AI21-Jamba-familjemodeller som distribuerats som ett serverlöst API med tokenbaserad betalning per användning finns i Kostnads- och kvotöverväganden för Jamba Instruct distribuerat som ett serverlöst API.
Använda Jamba-familjemodeller som ett serverlöst API
Du kan använda Jamba-familjemodeller på följande sätt:
På sidan Projektöversikt går du till det vänstra sidofältet och väljer Komponenter>Distributioner.
Leta upp och välj den distribution som du skapade.
Kopiera mål-URL:en och nyckelvärdet.
Gör en API-begäran.
Mer information om hur du använder API:erna finns i referensavsnittet.
Referens för Jamba-familjemodeller som distribuerats som ett serverlöst API
Jamba-familjemodeller accepterar båda dessa API:er:
- Api:et för Azure AI-modellinferens på vägen
/chat/completions
för chatt med flera svängar eller frågor med en enda tur. Det här API:et stöds eftersom Jamba-familjemodeller är finjusterade för att chatten ska slutföras. - AI21:s Azure-klient. Mer information om REST-slutpunkten som anropas finns i AI21:s REST-dokumentation.
API för azure AI-modellinferens
Azure AI-modellens slutsatsdragnings-API-schema finns i referensen för artikeln Om chattslutningar och en OpenAPI-specifikation kan hämtas från själva slutpunkten.
Chatt med en tur och flera svängar har samma format för begäran och svar, förutom att svar på frågor (enkel tur) endast omfattar ett meddelande från en enskild användare i begäran, medan chatt med flera svar kräver att du skickar hela chattmeddelandehistoriken i varje begäran.
I en chatt med flera svängar har meddelandetråden följande attribut:
- Innehåller alla meddelanden från användaren och modellen, ordnade från äldsta till nyaste.
- Meddelanden växlar mellan
user
ochassistant
rollmeddelanden - Alternativt börjar meddelandetråden med ett systemmeddelande för att ge kontext.
Följande pseudokod är ett exempel på meddelandestacken för det fjärde anropet i en chattbegäran som innehåller ett första systemmeddelande.
[
{"role": "system", "message": "Some contextual information here"},
{"role": "user", "message": "User message 1"},
{"role": "assistant", "message": "System response 1"},
{"role": "user", "message": "User message 2"},
{"role": "assistant"; "message": "System response 2"},
{"role": "user", "message": "User message 3"},
{"role": "assistant", "message": "System response 3"},
{"role": "user", "message": "User message 4"}
]
AI21:s Azure-klient
Använd metoden POST
för att skicka begäran till /v1/chat/completions
vägen:
Begär
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
Schema för begäran
Payload är en JSON-formaterad sträng som innehåller följande parametrar:
Nyckel | Typ | Obligatoriskt/standard | Tillåtna värden | beskrivning |
---|---|---|---|---|
model |
string |
Y | Måste vara jamba-1.5-large eller jamba-1.5-mini jamba-instruct |
|
messages |
list[object] |
Y | En lista över objekt, ett per meddelande, från äldsta till nyaste. Det äldsta meddelandet kan vara rollen system . Alla senare meddelanden måste växla mellan användar- och assistentroller. Se definitionen för meddelandeobjektet nedan. |
|
max_tokens |
integer |
N 4096 |
0 – 4096 | Det maximala antalet token som tillåts för varje genererat svarsmeddelande. Det bästa sättet att begränsa utdatalängden är vanligtvis genom att ange en längdgräns i systemprompten (till exempel "begränsa dina svar till tre meningar") |
temperature |
float |
N 1 |
0.0 – 2.0 | Hur mycket variation som ska anges i varje svar. Om du anger värdet till 0 får du samma svar på samma fråga varje gång. Att ange ett högre värde uppmuntrar till mer variation. Ändrar fördelningen från vilken token samplas. Vi rekommenderar att du ändrar detta eller top_p , men inte båda. |
top_p |
float |
N 1 |
0 <värde<=1,0 | Begränsa poolen med nästa token i varje steg till den översta N-percentilen för möjliga token, där 1,0 innebär poolen med alla möjliga token, och 0,01 innebär endast poolen med de mest sannolika nästa token. |
stop |
string OR list[string] |
N |
"" | Sträng eller lista över strängar som innehåller de ord där API:et ska sluta generera utdata. Newlines tillåts som "\n". Den returnerade texten innehåller inte stoppsekvensen. |
n |
integer |
N 1 |
1 – 16 | Hur många svar som ska genereras för varje fråga. Med Azure AI Studio Playground n=1 arbetar vi på Playground med flera svar. |
stream |
boolean |
N False |
True OR False |
Om du vill aktivera direktuppspelning. Om sant returneras resultatet en token i taget. Om värdet är true n måste det vara 1, vilket anges automatiskt. |
tools |
array[tool] |
N | "" | En lista över tools modellen kan anropa. För närvarande stöds endast funktioner som ett verktyg. Använd detta för att ange en lista över funktioner som modellen kan generera JSON-indata för. Högst 128 funktioner stöds. |
response_format |
object |
N null |
"" | Inställningen för att { "type": "json_object" } aktivera JSON-läge, vilket garanterar att meddelandet som modellen genererar är giltigt JSON. |
documents |
array[document] |
N | "" | En lista över relevanta documents modellen kan grunda sina svar på, om användaren uttryckligen säger det i prompten. Fungerar i princip som ett tillägg till prompten, med möjlighet att lägga till metadata. varje dokument är en ordlista. |
Objektet messages
har följande fält:
role
: [sträng, krävs] Författaren eller syftet med meddelandet. Något av följande värden:user
: Indata som tillhandahålls av användaren. Alla instruktioner som anges här som står i konflikt med instruktionerna i promptensystem
har företräde framför anvisningarna försystem
fråga.assistant
: Ett svar som genereras av modellen.system
: Inledande instruktioner för att ge allmän vägledning om tonen och rösten för det genererade meddelandet. Ett första systemmeddelande är valfritt, men vi rekommenderar att du ger vägledning om chattens ton. Till exempel " Du är en användbar chattrobot med en bakgrund inom geovetenskap och en charmig fransk accent."
content
: [sträng, krävs] Innehållet i meddelandet.
Objektet tool
har följande fält:
type
(obligatoriskt; str) – Typen av verktyg. För närvarande stöds endast "funktion".function
(obligatoriskt; objekt) – funktionsinformationen.name
(obligatoriskt; str) – Namnet på den funktion som ska anropas.description
(valfritt; str) – En beskrivning av vad funktionen gör.parameters
(valfritt; objekt) – de parametrar som funktionen accepterar, som beskrivs som ett JSON-schemaobjekt.
Objektet document
har följande fält:
id
(valfritt; str) – unik identifierare. länkas till i citationshänvisningar. upp till 128 tecken.content
(obligatoriskt; str) – innehållet i dokumentetmetadata
(valfritt; matris med Metadata)key
(obligatoriskt; str) – typ av metadata, till exempel "författare", "datum", "url" osv. Bör vara saker som modellen förstår.value
(obligatoriskt; str) – värdet för metadata
Exempel på begäran
Exempel på ensvängs jamba 1,5 stor och Jamba 1,5 mini
{
"model":"jamba-1.5-large", <jamba-1.5-large|jamba-1.5-mini>
"messages":[
{
"role":"user",
"content":"I need help with your product. Can you please assist?"
}
],
"temperature":1,
"top_p":1,
"n":1,
"stop":"\n",
"stream":false
}
Exempel på en sväng Jamba 1.5 large och Jamba 1.5 mini med dokument
{
"model":"jamba-1.5-large", <jamba-1.5-large|jamba-1.5-mini>
"messages":[
{
"role":"system",
"content":'''<documents>
# Documents
You can use the following documents for reference:
## Document ID: 0
Text: Harry Potter is a series of seven fantasy novels written by British author J. K. Rowling.
## Document ID: 1
Text: The Great Gatsby is a novel by American writer F. Scott Fitzgerald.
</documents>'''},
{
"role":"user",
"content":"Who wrote Harry Potter?"
}
],
"temperature":0.4,
"top_p":1,
"n":1,
"stop":"\n",
"stream":false
}
Chattexempel (fjärde begäran som innehåller svar från tredje användare)
{
"model": "jamba-instruct",
"messages": [
{"role": "system",
"content": "You are a helpful genie just released from a bottle. You start the conversation with 'Thank you for freeing me! I grant you one wish.'"},
{"role":"user",
"content":"I want a new car"},
{"role":"assistant",
"content":"🚗 Great choice, I can definitely help you with that! Before I grant your wish, can you tell me what kind of car you're looking for?"},
{"role":"user",
"content":"A corvette"},
{"role":"assistant",
"content":"Great choice! What color and year?"},
{"role":"user",
"content":"1963 black split window Corvette"}
],
"n":3
}
Svarsschema
Svaret beror något på om resultatet strömmas eller inte.
I ett icke-strömmat resultat levereras alla svar tillsammans i ett enda svar, vilket även innehåller en usage
egenskap.
I ett strömmat resultat
- Varje svar innehåller en enda token i fältet
choices
. - Objektstrukturen
choices
är annorlunda. - Endast det sista svaret innehåller ett
usage
objekt. - Hela svaret är inslaget i ett
data
objekt. - Det slutliga svarsobjektet är
data: [DONE]
.
Svarsnyttolasten är en ordlista med följande fält.
Nyckel | Typ | Beskrivning |
---|---|---|
id |
string |
En unik identifierare för begäran. |
model |
string |
Namnet på den modell som används. |
choices |
list[object ] |
Den modellgenererade svarstexten. För ett icke-strömmande svar är det en lista med n objekt. För ett direktuppspelningssvar är det ett enda objekt som innehåller en enda token. Se objektbeskrivningen nedan. |
usage |
object |
Användningsstatistik för slutförandebegäran. Mer information finns nedan. |
Svarsobjektet choices
innehåller det modellgenererade svaret. Objektet har följande fält:
Nyckel | Typ | Beskrivning |
---|---|---|
index |
integer |
Nollbaserat index för meddelandet i listan med meddelanden. Kanske inte motsvarar positionen i listan. För strömmade meddelanden är detta alltid noll. |
message OR delta |
object |
Det genererade meddelandet (eller token i ett direktuppspelningssvar). Samma objekttyp som beskrivs i begäran med två ändringar: – I ett icke-strömmande svar kallas message det här objektet . – I ett direktuppspelningssvar kallas delta det , och innehåller antingen message eller role men aldrig båda. |
finish_reason |
string |
Anledningen till att modellen slutade generera token: - stop : Modellen nådde en naturlig stopppunkt eller en angivet stoppsekvens. - length : Maximalt antal token har nåtts. - content_filter : Det genererade svaret bröt mot en ansvarsfull AI-princip. - null : Endast direktuppspelning. I ett direktuppspelningssvar blir null alla svar utom det sista . |
Svarsobjektet message
innehåller det modellgenererade svaret. Objektet har följande fält:
Nyckel | Typ | Beskrivning |
---|---|---|
role |
string |
Rollen som författare till det här meddelandet. |
content |
string or null |
Innehållet i meddelandet. |
tool_calls |
array or null |
Verktyget anropar som genereras av modellen. |
Svarsobjektet tool_calls
innehåller det modellgenererade svaret. Objektet har följande fält:
Nyckel | Typ | Beskrivning |
---|---|---|
id |
string |
ID:t för verktygsanropet. |
type |
string |
Verktygets typ. För närvarande stöds endast function . |
function |
object |
Den funktion som modellen anropade. |
Svarsobjektet function
innehåller det modellgenererade svaret. Objektet har följande fält:
Nyckel | Typ | Beskrivning |
---|---|---|
name |
string |
Namnet på funktionen som ska anropas. |
arguments |
string |
Argumenten för att anropa funktionen med, som genereras av modellen i JSON-format. |
Svarsobjektet usage
innehåller följande fält.
Nyckel | Type | Värde |
---|---|---|
prompt_tokens |
integer |
Antal token i prompten. Observera att antalet prompttoken innehåller extra token som lagts till av systemet för att formatera promptlistan till en enda sträng enligt modellens krav. Antalet extra token är vanligtvis proportionellt mot antalet meddelanden i tråden och bör vara relativt litet. |
completion_tokens |
integer |
Antal token som genererats i slutförandet. |
total_tokens |
integer |
Totalt antal token. |
Exempel på icke-direktuppspelningssvar
{
"id":"cmpl-524c73beb8714d878e18c3b5abd09f2a",
"choices":[
{
"index":0,
"message":{
"role":"assistant",
"content":"The human nose can detect over 1 trillion different scents, making it one of the most sensitive smell organs in the animal kingdom."
},
"finishReason":"stop"
}
],
"created": 1717487036,
"usage":{
"promptTokens":116,
"completionTokens":30,
"totalTokens":146
}
}
Exempel på direktuppspelningssvar
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"role": "assistant"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": ""}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": " The"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": " first e"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "mpe"}, "created": 1717487336, "finish_reason": null}]}
... 115 responses omitted for sanity ...
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "me"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "."}, "created": 1717487336,"finish_reason": "stop"}], "usage": {"prompt_tokens": 107, "completion_tokens": 121, "total_tokens": 228}}
data: [DONE]
Kostnad och kvoter
Kostnads- och kvotöverväganden för Jamba-familjemodeller som distribueras som ett serverlöst API
Jamba-familjemodellerna distribueras som ett serverlöst API och erbjuds av AI21 via Azure Marketplace och integreras med Azure AI Studio för användning. Du hittar priser för Azure Marketplace när du distribuerar eller finjusterar modeller.
Varje gång en arbetsyta prenumererar på ett visst modellerbjudande från Azure Marketplace skapas en ny resurs för att spåra de kostnader som är kopplade till förbrukningen. Samma resurs används för att spåra kostnader som är kopplade till slutsatsdragning och finjustering. Flera mätare är dock tillgängliga för att spåra varje scenario oberoende av varandra.
Mer information om hur du spårar kostnader finns i Övervaka kostnader för modeller som erbjuds via Azure Marketplace.
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.
Innehållsfiltrering
Modeller som distribueras som ett serverlöst API skyddas av Azure AI-innehållssäkerhet. Med Azure AI-innehållssäkerhet aktiverat passerar både prompten och slutförandet 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. Läs mer om Azure AI Content Safety.