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:
- Familia de modelos Cohere Embed V3
- Familia de modelos Cohere Command R
- La familia de modelos Meta Llama 2 chat
- La familia de modelos Meta Llama 3 instruct
- Mistral-Small
- Mistral-Large
- Familia de modelos Jais
- Familia de modelos Jamba
- Familia de modelos Phi-3
Modelos implementados en inferencia administrada:
- La familia de modelos Meta Llama 3 instruct
- Familia de modelos Phi-3
- Familia mixtral de modelos
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:
- Obtener información: devuelve la información sobre el modelo implementado en el punto de conexión.
- Inserciones de texto: crea un vector de inserción que representa el texto de entrada.
- Finalizaciones de texto: crea una finalización para la solicitud y los parámetros proporcionados.
- Finalizaciones de chat: crea una respuesta de modelo para la conversación de chat dada.
- Inserciones de imágenes: crea un vector de inserción que representa el texto de entrada y la imagen.
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.