Usar el punto de conexión de inferencia del modelo de Azure AI para consumir modelos
Artículo
La inferencia del modelo de Azure AI en los servicios de Azure AI permite a los clientes consumir los modelos más eficaces de los proveedores de modelos insignia mediante un único punto de conexión y las mismas credenciales. Esto significa que puede cambiar entre modelos y consumirlos desde la aplicación sin cambiar una sola línea de código.
En este artículo se explica cómo usar el punto de conexión de inferencia para invocarlos.
Puntos de conexión
Los servicios de Azure AI exponen varios puntos de conexión en función del tipo de trabajo que busca:
Punto de conexión de inferencia del modelo de Azure AI
Punto de conexión de Azure OpenAI
El punto de conexión de inferencia de Azure AI (normalmente con el formato https://<resource-name>.services.ai.azure.com/models) permite a los clientes usar un único punto de conexión con la misma autenticación y esquema para generar inferencia para los modelos implementados en el recurso. Todos los modelos admiten esta funcionalidad. Este punto de conexión sigue la API de inferencia del modelo de Azure AI.
Los modelos de Azure OpenAI implementados en los servicios de IA también admiten la API de Azure OpenAI (normalmente con el formato https://<resource-name>.openai.azure.com). Este punto de conexión expone las funcionalidades completas de los modelos de OpenAI y admite más características, como asistentes, subprocesos, archivos e inferencia por lotes.
Usar la funcionalidad de enrutamiento en el punto de conexión de inferencia del modelo de Azure AI
El punto de conexión de inferencia enruta las solicitudes a una implementación determinada mediante la coincidencia del parámetro name dentro de la solicitud con el nombre de la implementación. Esto significa que las implementaciones funcionan como un alias de un modelo determinado en determinadas configuraciones. Esta flexibilidad le permite implementar un modelo determinado varias veces en el servicio, pero en configuraciones diferentes si es necesario.
Por ejemplo, si crea una implementación denominada Mistral-large, esta implementación se puede invocar como:
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
model = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)
Instale el paquete @azure-rest/ai-inference mediante npm:
npm install @azure-rest/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 ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";
const client = new ModelClient(
"https://<resource>.services.ai.azure.com/models",
new AzureKeyCredential(process.env.AZUREAI_ENDPOINT_KEY)
);
using Azure;
using Azure.Identity;
using 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:
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
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:
ChatCompletionsClient client = new ChatCompletionsClientBuilder()
.credential(new AzureKeyCredential("{key}"))
.endpoint("{endpoint}")
.buildClient();
Use la sección de referencia para explorar el diseño de la API y qué parámetros están disponibles. Por ejemplo, en la sección de referencia de Finalizaciones de chat se detalla cómo usar la ruta /chat/completions para generar predicciones basadas en instrucciones con formato de chat. Tenga en cuenta que la ruta de acceso /models se incluye en la raíz de la dirección URL:
Solicitar
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
api-key: <api-key>
Content-Type: application/json
Para un modelo de chat, puede crear una solicitud de la siguiente manera:
from azure.ai.inference.models import SystemMessage, UserMessage
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="Explain Riemann's conjecture in 1 paragraph"),
],
model="mistral-large"
)
print(response.choices[0].message.content)
var messages = [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "Explain Riemann's conjecture in 1 paragraph" },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
model: "mistral-large"
}
});
console.log(response.choices[0].message.content)
requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are a helpful assistant."),
new ChatRequestUserMessage("Explain Riemann's conjecture in 1 paragraph")
},
Model = "mistral-large"
};
response = client.Complete(requestOptions);
Console.WriteLine($"Response: {response.Value.Content}");
List<ChatRequestMessage> chatMessages = new ArrayList<>();
chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant"));
chatMessages.add(new ChatRequestUserMessage("Explain Riemann's conjecture in 1 paragraph"));
ChatCompletions chatCompletions = client.complete(new ChatCompletionsOptions(chatMessages));
for (ChatChoice choice : chatCompletions.getChoices()) {
ChatResponseMessage message = choice.getMessage();
System.out.println("Response:" + message.getContent());
}
Solicitud
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
api-key: <api-key>
Content-Type: application/json
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant"
},
{
"role": "user",
"content": "Explain Riemann's conjecture in 1 paragraph"
}
],
"model": "mistral-large"
}
Si especifica un nombre de modelo que no coincide con ninguna implementación de modelo determinada, obtendrá un error que indica que el modelo no existe. Puede controlar qué modelos están disponibles para los usuarios mediante la creación de implementaciones de modelo, como se explica en Agregar y configurar implementaciones de modelo.
Autenticación sin clave
Los modelos implementados en la inferencia de modelos de Servicios de Azure AI admiten la autorización sin clave mediante Microsoft Entra ID. La autorización sin clave mejora la seguridad, simplifica la experiencia del usuario, reduce la complejidad operativa y proporciona una sólida compatibilidad de cumplimiento para el desarrollo moderno. Lo convierte en una opción segura para las organizaciones que adoptan soluciones de administración de identidades seguras y escalables.
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 con Entra ID:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=DefaultAzureCredential(),
credential_scopes=["https://cognitiveservices.azure.com/.default"],
)
Instale el paquete @azure-rest/ai-inference mediante npm:
npm install @azure-rest/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 con Entra ID:
import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { DefaultAzureCredential } from "@azure/identity";
const clientOptions = { credentials: { "https://cognitiveservices.azure.com" } };
const client = new ModelClient(
"https://<resource>.services.ai.azure.com/models",
new DefaultAzureCredential(),
clientOptions,
);
Instale la biblioteca de inferencia de Azure AI con el siguiente comando:
using Azure;
using Azure.Identity;
using 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 con Entra ID:
TokenCredential credential = new DefaultAzureCredential();
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions();
BearerTokenAuthenticationPolicy tokenPolicy = new BearerTokenAuthenticationPolicy(credential, new string[] { "https://cognitiveservices.azure.com/.default" });
clientOptions.AddPolicy(tokenPolicy, HttpPipelinePosition.PerRetry);
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
credential,
clientOptions.
);
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:
TokenCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
ChatCompletionsClient client = new ChatCompletionsClientBuilder()
.credential(defaultCredential)
.endpoint("https://<resource>.services.ai.azure.com/models")
.buildClient();
Use la sección de referencia para explorar el diseño de la API y qué parámetros están disponibles e indicar el token de autenticación en el encabezado Authorization. Por ejemplo, en la sección de referencia de Finalizaciones de chat se detalla cómo usar la ruta /chat/completions para generar predicciones basadas en instrucciones con formato de chat. Tenga en cuenta que la ruta de acceso /models se incluye en la raíz de la dirección URL:
Solicitar
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
Authorization: Bearer <bearer-token>
Content-Type: application/json
Los tokens deben emitirse con el ámbito https://cognitiveservices.azure.com/.default.
Con fines de prueba, la manera más fácil de obtener un token válido para la cuenta de usuario es usar la CLI de Azure. En una consola, ejecute el siguiente comando de la CLI de Azure:
az account get-access-token --resource https://cognitiveservices.azure.com --query "accessToken" --output tsv