Compartir vía


API de inferencia de modelos de Azure AI | Azure Machine Learning

La inferencia de modelos de Azure AI es una API que expone un conjunto común de funcionalidades para los modelos fundamentales y que los desarrolladores pueden usar para consumir predicciones de un conjunto diverso de modelos de forma uniforme y coherente. Los desarrolladores pueden hablar con diferentes modelos implementados en Inteligencia artificial de Azure Studio sin cambiar el código subyacente que usan.

Ventajas

Los modelos fundamentales, como los modelos de lenguaje, han hecho avances notables en los últimos años. Estos avances han revolucionado varios campos, incluidos el procesamiento de lenguaje natural y Computer Vision, y han habilitado aplicaciones como bots de chat, asistentes virtuales y servicios de traducción de idiomas.

Aunque los modelos fundamentales destacan en dominios específicos, carecen de un conjunto uniforme de funcionalidades. Algunos modelos son mejores en tareas específicas e incluso en la misma tarea, algunos modelos pueden abordar el problema de una manera, mientras que otros en otra. Los desarrolladores pueden beneficiarse de esta diversidad mediante el modelo adecuado para el trabajo adecuado, lo que les permite:

  • Mejorar el rendimiento en una tarea de bajada específica.
  • Usar modelos más eficaces para tareas más sencillas.
  • Usar modelos más pequeños que se puedan ejecutar más rápido en tareas específicas.
  • Componer varios modelos para desarrollar experiencias inteligentes.

Tener una forma uniforme de consumir modelos básicos permite a los desarrolladores obtener todas esas ventajas sin sacrificar la portabilidad ni cambiar el código subyacente.

Disponibilidad

La API de inferencia de modelos de Azure AI está disponible en los siguientes modelos:

Modelos implementados en puntos de conexión de API sin servidor:

Modelos implementados en inferencia administrada:

La API es compatible con las implementaciones de modelos de Azure OpenAI.

Nota:

La API de inferencia de modelos de Azure AI está disponible en la inferencia administrada (puntos de conexión en línea administrados) para los modelos implementados después del 24 de junio de 2024. Para avanzar en la API, vuelva a implementar el punto de conexión si el modelo se ha implementado antes de esa fecha.

Funcionalidades

En la sección siguiente se describen algunas de las funcionalidades que expone la API. Para obtener una especificación completa de la API, vea la sección de referencia.

Modalidades

La API indica cómo los desarrolladores pueden consumir predicciones para las siguientes modalidades:

Compatibilidad con el SDK de inferencia

Puede usar clientes de inferencia simplificados en el lenguaje que prefiera para consumir predicciones de modelos que ejecutan la API de inferencia de modelos de Azure AI.

Instale el paquete azure-ai-inference mediante el administrador de paquetes, como pip:

pip install azure-ai-inference

A continuación, puede usar el paquete para consumir el modelo. En el ejemplo siguiente se muestra cómo crear un cliente para consumir finalizaciones de chat:

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 usa un punto de conexión compatible con Entra ID, puede crear el cliente de la siguiente manera:

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

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

Explore nuestros ejemplos y lea la documentación de referencia de API para empezar a trabajar.

Extensibilidad

La API de inferencia de modelos de Azure AI especifica un conjunto de modalidades y parámetros a los que los modelos pueden suscribirse. Sin embargo, algunos modelos pueden tener más funcionalidades que indica la API. En esos casos, la API permite al desarrollador pasarlos como parámetros adicionales en la carga.

Al establecer un encabezado extra-parameters: pass-through, la API intentará pasar cualquier parámetro desconocido directamente al modelo subyacente. Si el modelo puede controlar ese parámetro, se completa la solicitud.

En el ejemplo siguiente se muestra una solicitud que pasa el parámetro safe_prompt admitido por Mistral-Large, que no se especifica en la API de inferencia de modelos de 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)

Sugerencia

Al utilizar el SDK de inferencia de Azure AI, el uso de model_extras configura la solicitud con extra-parameters: pass-through automáticamente.

Nota:

El valor predeterminado de extra-parameters es error que devuelve un error si se indica un parámetro adicional en la carga. Como alternativa, puede establecer extra-parameters: drop para quitar cualquier parámetro desconocido en la solicitud. Use esta funcionalidad en caso de que se envíen solicitudes con parámetros adicionales que sabe que el modelo no admitirá, pero quiere que la solicitud se complete de todos modos. Un ejemplo típico de esto es indicar el parámetro seed.

Modelos con un conjunto dispar de funcionalidades

La API de inferencia de modelos de Azure AI indica un conjunto general de funcionalidades, pero cada uno de los modelos puede decidir implementarlas o no. Se devuelve un error específico en aquellos casos en los que el modelo no puede admitir un parámetro específico.

En el ejemplo siguiente se muestra la respuesta de una solicitud de finalización del chat que indica el parámetro reponse_format y se solicita una respuesta en formato JSON. En el ejemplo, dado que el modelo no admite dicha funcionalidad, se devuelve un error 422 al usuario.

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

Sugerencia

Puede inspeccionar la propiedad detail.loc para comprender la ubicación del parámetro infractor y detail.input para ver el valor que se pasó en la solicitud.

Seguridad del contenido

La API de inferencia de modelos de Azure AI admite Seguridad del contenido de Azure AI. Si usa implementaciones con Seguridad del contenido de Azure AI, tanto las entradas como las salidas pasan por un conjunto de modelos de clasificación destinados a detectar y evitar la salida de contenido dañino. El sistema de filtrado de contenido (versión preliminar) detecta y toma medidas en categorías específicas de contenido potencialmente perjudicial tanto en solicitudes de entrada como en finalizaciones de salida.

En el siguiente ejemplo se muestra la respuesta de una solicitud de finalización de chat que ha desencadenado la seguridad del contenido.

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

Introducción

Actualmente, la API de inferencia de modelos de Azure AI se admite en determinados modelos implementados como puntos de conexión de API sin servidor y puntos de conexión en línea administrados. Implemente cualquiera de los modelos admitidos y use el mismo código exacto para consumir sus predicciones.

La biblioteca cliente azure-ai-inference realiza la inferencia, incluidas las finalizaciones de chat, para los modelos de inteligencia artificial implementados por Azure AI Studio y Azure Machine Learning Studio. Admite puntos de conexión de API sin servidor y puntos de conexión de proceso administrados (anteriormente conocidos como puntos de conexión en línea administrados).

Explore nuestros ejemplos y lea la documentación de referencia de API para empezar a trabajar.