Partager via


API Inférence de modèle Azure AI | Azure Machine Learning

L’inférence de modèle Azure AI est une API qui expose un ensemble commun de fonctionnalités pour les modèles fondamentaux et qui peut être utilisée par les développeurs pour consommer des prédictions d’un ensemble diversifié de modèles, de manière uniforme et cohérente. Les développeurs peuvent communiquer avec différents modèles déployés dans Azure AI Studio sans modifier le code sous-jacent qu’ils utilisent.

Avantages

Les modèles fondamentaux, tels que les modèles de langage, ont fait des progrès remarquables ces dernières années. Ces progrès ont révolutionné différents domaines, notamment le traitement du langage naturel et la vision par ordinateur, et ont donné naissance à des applications telles que les chatbots, les assistants virtuels et les services de traduction de langue.

Bien que les modèles fondamentaux excellent dans des domaines spécifiques, ils ne disposent pas d’un ensemble de fonctionnalités uniforme. Certains modèles sont meilleurs dans une tâche donnée et même dans une même tâche, certains modèles pouvant aborder le problème d’une manière et d’autres modèles d’une manière différente. Les développeurs peuvent tirer parti de cette diversité en utilisant le bon modèle pour la bonne tâche, ce qui leur permet de :

  • Améliorer les performances dans une tâche en aval spécifique.
  • Utiliser des modèles plus efficaces pour des tâches plus simples.
  • Utiliser des modèles plus petits qui peuvent s’exécuter plus rapidement sur des tâches spécifiques.
  • Composer plusieurs modèles pour développer des expériences intelligentes.

Le fait de disposer d'un moyen uniforme de consommer les modèles fondamentaux permet aux développeurs de bénéficier de tous ces avantages sans sacrifier la portabilité ou modifier le code sous-jacent.

Disponibilité

L’API Inférence de modèle Azure AI est disponible dans les modèles suivants :

Modèles déployés sur les points de terminaison d’API serverless :

Modèles déployés sur l’inférence managée :

L’API est compatible avec les modèles de déploiement Azure OpenAI.

Remarque

L’API d’inférence de modèle Azure AI est disponible dans l’inférence gérée (Managed Online Endpoints) pour les modèles déployés après le 24 juin 2024. Pour bénéficier de l’API, redéployez votre point de terminaison si le modèle a été déployé avant cette date.

Fonctionnalités

La section suivante décrit certaines des fonctionnalités que l’API expose. Pour obtenir une spécification complète de l’API, consultez la section de référence.

Modalités

L’API indique comment les développeurs peuvent consommer des prévisions pour les modalités suivantes :

Prise en charge du kit SDK d’inférence

Vous pouvez utiliser des clients d’inférence simplifiés dans le langage de votre choix pour consommer les prédictions des modèles exécutant l’API d’inférence de modèle Azure AI.

Installez le package azure-ai-inference à l’aide de votre gestionnaire de package, par exemple pip :

pip install azure-ai-inference

Vous pouvez ensuite utiliser le package pour consommer le modèle. L’exemple suivant montre comment créer un client pour consommer les complétions de conversation :

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

Si vous utilisez un point de terminaison avec prise en charge de Entra ID, vous pouvez créer votre client comme suit :

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import AzureDefaultCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureDefaultCredential(),
)

Découvrez nos exemples, et lisez la documentation de référence API pour vous lancer.

Extensibilité

L’API Inférence de modèle Azure AI spécifie un ensemble de modalités et de paramètres auxquels les modèles peuvent souscrire. Toutefois, certains modèles peuvent avoir des fonctionnalités autres que celles indiquées par l’API. Dans ce cas, l’API permet au développeur de les transmettre en tant que paramètres supplémentaires dans la charge utile.

En définissant un en-tête extra-parameters: pass-through, l’API tente de transmettre directement un paramètre inconnu au modèle sous-jacent. Si le modèle peut gérer ce paramètre, la requête s’effectue.

L’exemple suivant montre une requête qui transmet le paramètre safe_prompt pris en charge par Mistral-Large, qui n’est pas spécifié dans l’API Inférence de modèle Azure AI :

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    model_extras={
        "safe_mode": True
    }
)

print(response.choices[0].message.content)

Conseil

Lorsque vous utilisez le Kit de développement logiciel (SDK) d’inférence Azure AI, l’utilisation de model_extras configure pour vous la requête avec extra-parameters: pass-through automatiquement.

Remarque

La valeur par défaut de extra-parameters est error, qui retourne une erreur si un paramètre supplémentaire est indiqué dans la charge utile. Vous pouvez également définir extra-parameters: drop pour abandonner n’importe quel paramètre inconnu dans la requête. Utilisez cette fonctionnalité si vous envoyez des requêtes avec des paramètres supplémentaires que vous savez non pris en charge par le modèle, mais que vous voulez quand même que la requête s’effectue. L’indication du paramètre seed en est un exemple typique.

Modèles avec un ensemble hétéroclite de fonctionnalités

L’API Inférence de modèle Azure AI indique un ensemble général de fonctionnalités, mais chacun des modèles peut décider de les implémenter ou non. Une erreur spécifique est retournée dans les cas où le modèle ne peut pas prendre en charge un paramètre spécifique.

L’exemple suivant montre la réponse d’une requête de complétion de conversation indiquant le paramètre reponse_format et demandant une réponse au format JSON. Dans l’exemple, étant donné que le modèle ne prend pas en charge cette fonctionnalité, une erreur 422 est retournée à l’utilisateur.

import json
from azure.ai.inference.models import SystemMessage, UserMessage, ChatCompletionsResponseFormatJSON
from azure.core.exceptions import HttpResponseError

try:
    response = client.complete(
        messages=[
            SystemMessage(content="You are a helpful assistant."),
            UserMessage(content="How many languages are in the world?"),
        ],
        response_format=ChatCompletionsResponseFormatJSON()
    )
except HttpResponseError as ex:
    if ex.status_code == 422:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "detail" in response:
            for offending in response["detail"]:
                param = ".".join(offending["loc"])
                value = offending["input"]
                print(
                    f"Looks like the model doesn't support the parameter '{param}' with value '{value}'"
                )
    else:
        raise ex

Conseil

Vous pouvez inspecter la propriété detail.loc pour comprendre l’emplacement du paramètre incriminé et detail.input pour voir la valeur qui a été transmise dans la requête.

Sécurité du contenu

L’API d’inférence du modèle Azure AI prend en charge Azure AI Sécurité du Contenu. Lorsque vous utilisez des déploiements avec Azure AI Sécurité du Contenu activé, les entrées et les sorties passent par un ensemble de modèles de classification visant à détecter et à empêcher la sortie de contenu dangereux. Le système de filtrage de contenu (préversion) détecte des catégories spécifiques de contenu potentiellement nuisible dans les requêtes d’entrée et les saisies semi-automatiques de sortie, et prend les mesures correspondantes.

L’exemple suivant montre la réponse d’une demande de saisie semi-automatique de conversation qui a déclenché la sécurité du contenu.

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

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 = json.loads(ex.response._content.decode('utf-8'))
        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 ex
    else:
        raise ex

Mise en route

L’API d’inférence de modèle Azure AI est prise en charge dans certains modèles déployés en tant que points de terminaison d’API serverless et points de terminaison en ligne gérés. Déployez l’un des modèles pris en charge, puis utilisez exactement le même code pour consommer ses prédictions.

La bibliothèque de client azure-ai-inference effectue l’inférence ainsi que les complétions de conversation, pour les modèles IA déployés par Azure AI Studio et Azure Machine Learning studio. Elle prend en charge les points de terminaison d’API serverless et les points de terminaison de calcul gérés (anciennement appelés points de terminaison en ligne gérés).

Découvrez nos exemples, et lisez la documentation de référence API pour vous lancer.