Partager via


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 :

  1. Connectez-vous à Azure AI Studio.
  2. Si vous n’êtes pas déjà dans votre projet, sélectionnez-le.
  3. Sélectionnez Catalogue de modèles dans le volet de navigation gauche.
  1. Recherchez et sélectionnez un modèle AI21 comme AI21 Jamba 1.5 Large, AI21 Jamba 1.5 Mini ou AI21 Jamba Instruct pour ouvrir sa page Détails.

  2. Sélectionnez Déployer pour ouvrir une fenêtre de déploiement d’API serverless pour le modèle.

  3. Vous pouvez également lancer un déploiement en commençant à partir de la page Modèles + points de terminaison dans AI Studio.

    1. Dans le volet de navigation gauche de votre projet, sélectionnez Mes ressources>Modèles + points de terminaison.
    2. Sélectionnez Déployer le modèle>Déployer le modèle de base.
    3. Recherchez et sélectionnez un modèle AI21 comme AI21 Jamba 1.5 Large, AI21 Jamba 1.5 Mini ou AI21 Jamba Instruct pour ouvrir la page Détails du modèle.
    4. Sélectionnez Confirmer pour ouvrir une fenêtre de déploiement d’API serverless pour le modèle.
  4. 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.

  5. 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.

  6. Sélectionnez l’onglet Tarification et conditions pour en savoir plus sur la tarification du modèle sélectionné.

  7. 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.

  8. 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.

  9. 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.

  10. Sélectionnez Déployer. Une fois que le déploiement est prêt, vous êtes redirigé vers la page Déploiements.

  11. 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.

  12. 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 :

  1. Dans le volet de navigation gauche de votre projet, sélectionnez Mes ressources>Modèles + points de terminaison.

  2. Recherchez et sélectionnez le déploiement que vous avez créé.

  3. Copiez l’URL cible et la valeur clé.

  4. 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 et assistant.
  • 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 prompt system sont prioritaires par rapport aux instructions de prompt system.
    • 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 document
  • metadata (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.