Comment déployer les modèles de famille Jamba d’AI21 avec Azure AI Studio
Important
Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Dans cet article, vous allez apprendre à utiliser Azure AI Studio pour déployer les modèles de famille Jamba d’AI21 en tant qu’API serverless avec facturation avec paiement à l’utilisation.
Les modèles de famille Jamba sont le modèle Mamba de grande langue basé sur la production d’AI21, qui tire parti de l’architecture hybride Mamba-Transformer d’AI21. Il s’agit d’une version paramétrée par des instructions du modèle SSM (State Space Model) Jamba Transformer hybride structuré d’AI21. Les modèles de famille Jamba sont conçus pour une utilisation commerciale fiable en ce qui concerne la qualité et la performance.
Consultez nos annonces sur les modèles de famille Jamba d’AI21 disponibles maintenant sur le catalogue de modèles AZURE AI via le blog de AI21 et blog Microsoft Tech Community.
Important
Les modèles en préversion comportent la mention préversion sur leur carte de modèle dans le catalogue de modèles.
Déployer les modèles de famille Jamba en tant qu’API serverless
Certains modèles du catalogue de modèles peuvent être déployés en tant qu’API serverless avec une facturation basée sur le paiement à l’utilisation, ce qui permet de les consommer en tant qu’API sans les héberger sur votre abonnement, tout en conservant le niveau de sécurité professionnel et la conformité dont les organisations ont besoin. Cette option de déploiement ne nécessite pas de quota à partir de votre abonnement.
Le modèle AI21-Jamba 1.5 Large déployé en tant qu’API serverless avec facturation de paiement à l’utilisation est proposé par AI21 via la Place de marché Microsoft Azure. AI21 peut modifier ou mettre à jour les conditions d’utilisation et la tarification de ce modèle.
Pour commencer à utiliser Jamba 1.5 en tant qu’API serverless, explorez nos intégrations avec LangChain, LiteLLM, OpenAI et l’API Azure.
Prérequis
Un abonnement Azure avec un moyen de paiement valide. Les abonnements Azure gratuits ou d’essai ne fonctionnent pas. Si vous ne disposez pas d’un abonnement Azure, commencez par créer un compte Azure payant.
Un projet Azure AI Studio. L’offre de modèle de déploiement d’API serverless pour les modèles de famille Jamba est disponible uniquement avec les hubs créés dans ces régions :
- USA Est
- USA Est 2
- Centre-Nord des États-Unis
- États-Unis - partie centrale méridionale
- USA Ouest
- USA Ouest 3
- Suède Centre
Pour obtenir la liste des régions disponibles pour chacun des modèles prenant en charge les déploiements de points de terminaison d’API serverless, consultez Disponibilité des régions pour les modèles dans les points de terminaison d’API serverless.
Les contrôles d’accès en fonction du rôle (RBAC) Azure sont utilisés pour octroyer l’accès aux opérations dans Azure AI Studio. Pour effectuer les étapes décrites dans cet article, votre compte d’utilisateur doit avoir le rôle Propriétaire ou Contributeur pour l’abonnement Azure. Une autre possibilité est que votre compte dispose d’un rôle personnalisé avec les autorisations suivantes :
Sur l’abonnement Azure, pour abonner le projet AI Studio à l’offre de la Place de marché Azure, une fois par projet et par offre :
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
Sur le groupe de ressources – pour créer et utiliser la ressource SaaS :
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
Sur le projet AI Studio, pour déployer des points de terminaison (le rôle Développeur Azure AI contient déjà ces autorisations) :
Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*
Pour plus d’informations sur les autorisations, consultez Contrôle d’accès en fonction du rôle dans Azure AI Studio.
Créer un déploiement
Ces étapes illustrent le déploiement de modèles AI21 Jamba 1.5 Large
ou AI21 Jamba 1.5 Mini
. Pour créer un déploiement :
- Connectez-vous à Azure AI Studio.
- Si vous n’êtes pas déjà dans votre projet, sélectionnez-le.
- Sélectionnez Catalogue de modèles dans le volet de navigation gauche.
Recherchez et sélectionnez un modèle AI21 comme
AI21 Jamba 1.5 Large
,AI21 Jamba 1.5 Mini
ouAI21 Jamba Instruct
pour ouvrir sa page Détails.Sélectionnez Déployer pour ouvrir une fenêtre de déploiement d’API serverless pour le modèle.
Vous pouvez également lancer un déploiement en commençant à partir de la page Modèles + points de terminaison dans AI Studio.
- Dans le volet de navigation gauche de votre projet, sélectionnez Mes ressources>Modèles + points de terminaison.
- Sélectionnez Déployer le modèle>Déployer le modèle de base.
- Recherchez et sélectionnez un modèle AI21 comme
AI21 Jamba 1.5 Large
,AI21 Jamba 1.5 Mini
ouAI21 Jamba Instruct
pour ouvrir la page Détails du modèle. - Sélectionnez Confirmer pour ouvrir une fenêtre de déploiement d’API serverless pour le modèle.
Votre projet actuel est spécifié pour le déploiement. Pour déployer les modèles de famille AI21-Jamba, votre projet doit se trouver dans l’une des régions répertoriées dans la section Prérequis.
Dans l’Assistant Déploiement, sélectionnez le lien vers les Conditions d’utilisation de la Place de marché Azure pour en savoir plus sur les conditions d’utilisation.
Sélectionnez l’onglet Tarification et conditions pour en savoir plus sur la tarification du modèle sélectionné.
Sélectionnez le bouton S’abonner et déployer. Si c’est la première fois que vous déployez le modèle dans le projet, vous devez vous abonner à votre projet pour l’offre particulière. Cette étape nécessite que votre compte dispose des autorisations sur l’abonnement Azure et sur le groupe de ressources qui sont répertoriées dans les Prérequis. Chaque projet a son propre abonnement à l’offre du modèle spécifique de la Place de marché Azure, ce qui vous permet de contrôler et de suivre les dépenses. Actuellement, vous ne pouvez avoir qu’un seul déploiement pour chaque modèle au sein d’un projet.
Une fois que vous avez abonné le projet à l’offre spécifique de la Place de marché Azure, les déploiements suivants de la même offre dans le même projet ne nécessitent pas un nouvel abonnement. Si ce scénario s’applique à vous, vous devez sélectionner l’option Continuer à déployer.
Donnez un nom au déploiement. Ce nom va faire partie de l’URL de l’API de déploiement. Cette URL doit être unique dans chaque région Azure.
Sélectionnez Déployer. Une fois que le déploiement est prêt, vous êtes redirigé vers la page Déploiements.
Revenez à la page Déploiements, sélectionnez le déploiement souhaité et notez l’URL cible du point de terminaison et la clé secrète. Pour plus d’informations sur l’utilisation des API, consultez la section Référence.
-
Vous pouvez toujours trouver les détails, l’URL et les clés d’accès du point de terminaison en accédant au Centre de gestion de votre projet à partir du volet de navigation gauche. Ensuite, sélectionnez Modèles + points de terminaison.
Pour en savoir plus sur la facturation des modèles de famille AI21-Jamba déployés en tant qu’API serverless avec facturation basée sur le paiement à l’utilisation, consultez Considérations relatives au coût et au quota pour Jamba Instruct déployées en tant qu’API serverless.
Consommer des modèles de famille Jamba en tant qu’API serverless
Vous pouvez consommer des modèles de famille Jamba comme suit :
Dans le volet de navigation gauche de votre projet, sélectionnez Mes ressources>Modèles + points de terminaison.
Recherchez et sélectionnez le déploiement que vous avez créé.
Copiez l’URL cible et la valeur clé.
Effectuez une requête d’API.
Pour plus d’informations sur l’utilisation des API, consultez la section Référence.
Référence pour les modèles de famille Jamba déployés en tant qu’API serverless
Les modèles de famille Jamba acceptent les deux API suivantes :
- L’API Inférence de modèle Azure AI sur la route
/chat/completions
pour la conversation multitour ou la réponse aux questions à tour unique. Cette API est prise en charge, car les modèles de famille Jamba sont affinés pour la saisie semi-automatique des conversations. - Client Azure d’AI21. Pour plus d’informations sur le point de terminaison REST appelé, consultez la documentation REST d’AI21.
API Inférence de modèle Azure AI
Le schéma API Inférence de modèle Azure AI est disponible dans l’article Informations de référence pour les achèvements de conversation, et une spécification OpenAPI peut être obtenue à partir du point de terminaison lui-même.
Les conversations à tour unique et multitour ont le même format de demande et de réponse, sauf que la réponse aux questions (à tour unique) n’implique qu’un seul message utilisateur dans la demande, tandis que la conversation multitour nécessite que vous envoyiez l’intégralité de l’historique des messages de conversation dans chaque demande.
Dans une conversation multitour, le thread de message a les attributs suivants :
- Inclut tous les messages de l’utilisateur et du modèle, classés du plus ancien au plus récent.
- Les messages alternent entre les messages de rôle
user
etassistant
. - Le thread de message commence éventuellement par un message système pour fournir le contexte.
Le pseudocode suivant est un exemple de la pile de messages pour le quatrième appel dans une demande de conversation qui inclut un message système initial.
[
{"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"}
]
Client Azure d’AI21
Utilisez la méthode POST
pour envoyer la requête à l’itinéraire /v1/chat/completions
:
Requête
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
Schéma de requête
La charge utile est une chaîne au format JSON contenant les paramètres suivants :
Clé | Type | Obligatoire/Par défaut | Valeurs autorisées | Description |
---|---|---|---|---|
model |
string |
Y | Doit être jamba-1.5-large ou jamba-1.5-mini ou jamba-instruct |
|
messages |
list[object] |
Y | Liste d’objets, un par message, du plus ancien au plus récent. Le message le plus ancien peut être le rôle system . Tous les messages ultérieurs doivent alterner entre les rôles user et assistant. Consultez la définition de l’objet de message ci-dessous. |
|
max_tokens |
integer |
N 4096 |
0 – 4 096 | Nombre maximal de jetons à autoriser pour chaque message de réponse généré. En règle générale, la meilleure façon de limiter la longueur de sortie consiste à fournir une limite de longueur dans le prompt système (par exemple, « limitez vos réponses à trois phrases ») |
temperature |
float |
N 1 |
0,0 – 2,0 | Quantité de variantes à fournir dans chaque réponse. La définition de cette valeur sur 0 garantit la même réponse à la même question à chaque fois. La définition d’une valeur plus élevée encourage davantage de variantes. Modifie la distribution à partir de laquelle les jetons sont échantillonnés. Nous recommandons de modifier ceci ou top_p , mais pas les deux. |
top_p |
float |
N 1 |
0 <valeur<=1,0 | Limitez le pool de jetons suivants à chaque étape au N centile supérieur des jetons possibles, où 1,0 signifie le pool de tous les jetons possibles, et 0,01 signifie le pool des seuls jetons suivants les plus probables. |
stop |
string OU list[string] |
N |
"" | Chaîne ou liste de chaînes contenant le ou les mots où l’API doit cesser de générer la sortie. Les nouvelles lignes sont autorisées en tant que "\n". Le texte retourné ne contient pas la séquence d’arrêt. |
n |
integer |
N 1 |
1 – 16 | Nombre de réponses à générer pour chaque prompt. Avec le terrain de jeu d’Azure AI studio, n=1 car nous travaillons sur le terrain de jeu multi-réponse. |
stream |
boolean |
N False |
True OU False |
Indique s’il faut activer le streaming. Si la valeur est true, les résultats sont retournés un jeton à la fois. Si la valeur est true, n doit être 1, qui est automatiquement défini. |
tools |
array[tool] |
N | "" | Une liste de tools que le modèle peut appeler. Actuellement, seules les fonctions sont prises en charge en tant qu’outil. Utilisez cette option afin de fournir une liste des fonctions pour lesquelles le modèle peut générer des entrées JSON. Un maximum de 128 fonctions sont prises en charge. |
response_format |
object |
N null |
"" | Le paramètre sur { "type": "json_object" } active le mode JSON, ce qui garantit que le message généré par le modèle est un JSON valide. |
documents |
array[document] |
N | "" | Une liste de documents pertinentes du modèle peut mettre en place ses réponses, si l’utilisateur l’indique explicitement dans l’invite. Agit essentiellement comme une extension de l’invite, avec la possibilité d’ajouter des métadonnées. chaque document est un dictionnaire. |
L’objet messages
contient les champs suivants :
role
: [chaîne, obligatoire] Auteur ou objectif du message. Une des valeurs suivantes :user
: entrée fournie par l’utilisateur. Toutes les instructions fournies ici qui entrent en conflit avec les instructions fournies dans le promptsystem
sont prioritaires par rapport aux instructions de promptsystem
.assistant
: réponse générée par le modèle.system
: instructions initiales pour fournir des conseils généraux concernant le ton et la voix du message généré. Un message système initial est facultatif, mais recommandé pour fournir des conseils concernant le ton de la conversation. Par exemple, « Vous êtes un chatbot utile avec des connaissances en sciences de la terre et un charmant accent anglais. »
content
: [chaîne, obligatoire] Contenu du message.
L’objet tool
contient les champs suivants :
type
(obligatoire ; str) : type de l’outil. Actuellement, seule la « fonction » est prise en charge.function
(obligatoire ; objet) : détails de la fonction.name
(obligatoire ; str) : nom de la fonction à appeler.description
(facultatif ; str) : description de ce que fait la fonction.parameters
(objet facultatif) : paramètres acceptés par la fonction, décrits comme un objet json Schema.
L’objet document
contient les champs suivants :
id
(facultatif ; str) : identificateur unique. sera lié à des citations. jusqu’à 128 caractères.content
(obligatoire ; str) : contenu du documentmetadata
(facultatif ; tableau de métadonnées )key
(obligatoire ; str) : type de métadonnées, comme « auteur », « date », « url », etc. Il doit s’agir des éléments que le modèle comprend.value
(obligatoire ; str) : valeur des métadonnées
Exemple de requête
exemple de tour unique Jamba 1.5 grand et 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
}
exemple de tour unique Jamba 1.5 grand et Jamba 1.5 mini avec des documents
{
"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
}
Exemple de conversation (quatrième demande contenant la troisième réponse de l’utilisateur)
{
"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
}
Schéma de réponse
La réponse dépend légèrement du fait que le résultat est diffusé en streaming ou non.
Dans un résultat non diffusé en streaming, toutes les réponses sont fournies ensemble dans une réponse unique, qui inclut également une propriété usage
.
Dans un résultat diffusé en streaming :
- Chaque réponse inclut un seul jeton dans le champ
choices
. - La structure d’objet
choices
est différente. - Seule la dernière réponse inclut un objet
usage
. - La réponse entière est encapsulée dans un objet
data
. - L’objet de réponse final est
data: [DONE]
.
La charge utile de réponse est un dictionnaire avec les champs suivants.
Clé | Type | Description |
---|---|---|
id |
string |
Identificateur unique de la requête. |
model |
string |
Nom du modèle utilisé. |
choices |
list[object ] |
Texte de réponse généré par le modèle. Pour une réponse sans streaming, il s’agit d’une liste avec des éléments n . Pour une réponse avec streaming, il s’agit d’un objet unique contenant un seul jeton. Consultez la description de l’objet ci-dessous. |
usage |
object |
Statistiques d’utilisation pour la demande d’achèvement. Voir les détails ci-dessous. |
L’objet de réponse choices
contient la réponse générée par le modèle. L’objet contient les champs suivants :
Clé | Type | Description |
---|---|---|
index |
integer |
Index de base zéro du message dans la liste des messages. Peut ne pas correspondre à la position dans la liste. Pour les messages diffusés en streaming, il s’agit toujours de zéro. |
message OU delta |
object |
Message généré (ou jeton dans une réponse avec streaming). Même type d’objet que décrit dans la demande, avec deux changements : - Dans une réponse sans streaming, cet objet est appelé message . - Dans une réponse avec streaming, il est appelé delta , et contient message ou role , mais jamais les deux. |
finish_reason |
string |
La raison pour laquelle le modèle a cessé de générer des jetons : - stop : le modèle a atteint un point d’arrêt naturel, ou une séquence d’arrêt fournie. - length : le nombre maximal de jetons a été atteint. - content_filter : la réponse générée a enfreint une stratégie d’IA responsable. - null : streaming uniquement. Dans une réponse avec streaming, toutes les réponses à l’exception de la dernière seront null . |
L’objet de réponse message
contient la réponse générée par le modèle. L’objet contient les champs suivants :
Clé | Type | Description |
---|---|---|
role |
string |
Rôle de l’auteur de ce message. |
content |
string or null |
Contenu du message. |
tool_calls |
array or null |
L’outil appelle généré par le modèle. |
L’objet de réponse tool_calls
contient la réponse générée par le modèle. L’objet contient les champs suivants :
Clé | Type | Description |
---|---|---|
id |
string |
ID de l’appel de l’outil. |
type |
string |
Type de l'outil. Actuellement, seul function est pris en charge. |
function |
object |
Fonction appelée par le modèle. |
L’objet de réponse function
contient la réponse générée par le modèle. L’objet contient les champs suivants :
Clé | Type | Description |
---|---|---|
name |
string |
Nom de la fonction à appeler. |
arguments |
string |
Arguments à utiliser pour appeler la fonction, tels qu’ils sont générés par le modèle au format JSON. |
L’objet de réponse usage
contient les champs suivants.
Clé | Type | Value |
---|---|---|
prompt_tokens |
integer |
Nombre de jetons dans l’invite. Notez que le nombre de jetons de prompt inclut des jetons supplémentaires ajoutés par le système pour mettre en forme la liste de prompts en une chaîne unique, comme requis par le modèle. Le nombre de jetons supplémentaires est généralement proportionnel au nombre de messages dans le thread, et doit être relativement faible. |
completion_tokens |
integer |
Nombre de jetons générés lors de la saisie semi-automatique. |
total_tokens |
integer |
Nombre total de jetons. |
Exemple de réponse sans streaming
{
"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
}
}
Exemple de réponse avec streaming
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]
Coûts et quotas
Considérations relatives au coût et au quota pour les modèles de famille Jamba déployés en tant qu’API serverless
Les modèles de famille Jamba sont déployés en tant qu’API serverless et sont proposés par AI21 via la Place de marché Azure et intégrés à Azure AI Studio pour une utilisation. Vous trouverez la tarification de la Place de marché Azure lors du déploiement ou de l’optimisation des modèles.
Chaque fois qu’un espace de travail s’abonne à une offre de modèle donnée provenant de la Place de marché Azure, une nouvelle ressource est créée pour suivre les coûts associés à sa consommation. La même ressource est utilisée pour suivre les coûts associés à l’inférence et à l’optimisation ; plusieurs compteurs sont cependant disponibles pour suivre chaque scénario indépendamment.
Pour plus d’informations sur le suivi des coûts, consultez Surveiller les coûts des modèles proposés via la Place de marché Azure.
Le quota est géré par déploiement. Chaque déploiement a une limite de débit de 200 000 jetons par minute et 1 000 requêtes d’API par minute. Toutefois, nous limitons actuellement un déploiement par modèle par projet. Contactez le Support Microsoft Azure si les limites de débit actuelles ne suffisent pas pour vos scénarios.
Filtrage du contenu
Les modèles déployés en tant qu’API serverless sont protégés par Azure AI Sécurité du Contenu. Avec Azure AI Sécurité du Contenu activé, l’invite et la complétion sont soumises à un ensemble de modèles de classification visant à détecter et à empêcher la production d’un contenu nuisible. Le système de filtrage de contenu (préversion) détecte et prend des mesures sur des catégories spécifiques de contenu potentiellement dangereux dans les invites d’entrée et les exécutions de sortie. En savoir plus sur Azure AI Sécurité du Contenu.