Compartir a través de


Cómo usar los modelos de chat de Meta Llama

En este artículo, obtendrá información sobre los modelos de chat de Meta Llama y cómo usarlos. Los modelos y herramientas de Meta Llama 2 y 3 son una colección de modelos de texto generativos previamente entrenados y ajustados que van desde 7 mil millones hasta 70 mil millones de parámetros. La familia de modelos también incluye versiones con ajuste preciso optimizadas para casos de uso de diálogo con aprendizaje de refuerzo de comentarios humanos (RLHF).

Modelos de chat de Meta Llama

Los modelos de chat Meta Llama incluyen los siguientes modelos:

La colección de Meta Llama 3.1 de modelos multilingües de lenguaje de gran tamaño (LLMs) es una colección de modelos generativos entrenados previamente y optimizados para instrucciones en tamaños 8B, 70B y 405B (ingreso de texto/salida de texto). Los modelos de solo texto optimizados para instrucciones Llama 3.1 (8B, 70B, 405B) están optimizados para casos de uso de diálogo multilingüe y superan muchos de los modelos de chat de código abierto y cerrado disponibles en pruebas comparativas comunes del sector.

Están disponibles los siguientes modelos:

Requisitos previos

Para usar modelos de chat de Meta Llama con Azure AI Studio, necesita los siguientes requisitos previos:

Implementación de un modelo

Implementación en API sin servidor

Los modelos de chat de Meta Llama se pueden implementar en puntos de conexión de API sin servidor con facturación de pago por uso. Este tipo de implementación proporciona una forma de consumir modelos como API sin alojarlos en su suscripción, al tiempo que mantiene la seguridad y el cumplimiento empresarial que necesitan las organizaciones.

La implementación en un punto de conexión de API sin servidor no requiere cuota de la suscripción. Si el modelo aún no está implementado, use Azure AI Studio, el SDK de Azure Machine Learning para Python, la CLI de Azure o las plantillas de ARM para implementar el modelo como una API sin servidor.

Implementación en un proceso administrado autohospedado

Los modelos de chat Meta Llama se pueden implementar en nuestra solución de inferencia administrada autohospedada, lo que le permite personalizar y controlar todos los detalles sobre cómo se sirve el modelo.

Para la implementación en un proceso administrado autohospedado, debe tener suficiente cuota en la suscripción. Si no tiene suficiente cuota disponible, puede usar el acceso de cuota temporal seleccionando la opción quiero usar la cuota compartida y reconozco que este punto de conexión se eliminará en 168 horas.

El paquete de inferencia instalado

Puede consumir predicciones de este modelo mediante el paquete azure-ai-inference con Python. Para instalar este paquete, necesita los siguientes requisitos previos:

  • Python 3.8 o posterior instalado, incluido pip.
  • Dirección URL del punto de conexión. Para construir la biblioteca cliente, debe pasar la dirección URL del punto de conexión. La dirección URL del punto de conexión tiene el formato https://your-host-name.your-azure-region.inference.ai.azure.com, donde your-host-name es el nombre de host de implementación del modelo único y your-azure-region es la región de Azure donde se implementa el modelo (por ejemplo, eastus2).
  • En función de la preferencia de autenticación y implementación de modelo, necesita una clave para autenticarse en el servicio o en las credenciales de Microsoft Entra ID. La clave es una cadena de 32 caracteres.

Una vez que tenga estos requisitos previos, instale el paquete de inferencia de Azure AI con el siguiente comando:

pip install azure-ai-inference

Más información sobre el Paquete de inferencia y referencia de Azure AI.

Trabajar con finalizaciones de chat

En esta sección, usará API de inferencia de modelos de Azure AI con un modelo de finalizaciones de chat para chat.

Sugerencia

El API de inferencia de modelos de Azure AI permite hablar con la mayoría de los modelos implementados en Azure AI Studio con el mismo código y estructura, incluidos los modelos de chat Meta Llama.

Creación de un cliente para consumir el modelo

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

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

client = ChatCompletionsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Al implementar el modelo en un punto de conexión en línea autohospedado con compatibilidad con Microsoft Entra ID, puede usar el siguiente fragmento de código para crear un cliente.

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

client = ChatCompletionsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
)

Nota:

Actualmente, los puntos de conexión de API sin servidor no admiten el uso de Microsoft Entra ID para la autenticación.

Obtención de las funcionalidades del modelo

La ruta /info devuelve información sobre el modelo que se implementa en el punto de conexión. Devuelva la información del modelo llamando al método siguiente:

model_info = client.get_model_info()

La respuesta es la siguiente:

print("Model name:", model_info.model_name)
print("Model type:", model_info.model_type)
print("Model provider name:", model_info.model_provider_name)
Model name: Meta-Llama-3.1-405B-Instruct
Model type: chat-completions
Model provider name: Meta

Creación de una solicitud de finalización de chat

En el ejemplo siguiente se muestra cómo puede crear una solicitud básica de finalizaciones de chat al modelo.

from azure.ai.inference.models import SystemMessage, UserMessage

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

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

print("Response:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: Meta-Llama-3.1-405B-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

Inspeccione la sección usage de la respuesta para ver el número de tokens usados para el aviso, el número total de tokens generados y el número de tokens usados para la finalización.

Streaming de contenido

De forma predeterminada, la API de finalizaciones devuelve todo el contenido generado en una única respuesta. Si está generando finalizaciones largas, esperar la respuesta puede tardar muchos segundos.

Puede transmitir el contenido para obtenerlo a medida que se genera. El contenido de streaming permite empezar a procesar la finalización a medida que el contenido está disponible. Este modo devuelve un objeto que transmite la respuesta como eventos enviados por el servidor de solo datos. Extraiga fragmentos del campo delta, en lugar del campo de mensaje.

result = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    temperature=0,
    top_p=1,
    max_tokens=2048,
    stream=True,
)

Para transmitir finalizaciones, establezca stream=True al llamar al modelo.

Para visualizar la salida, defina una función auxiliar para imprimir la secuencia.

def print_stream(result):
    """
    Prints the chat completion with streaming.
    """
    import time
    for update in result:
        if update.choices:
            print(update.choices[0].delta.content, end="")

Puede visualizar cómo el streaming genera contenido:

print_stream(result)

Exploración de más parámetros admitidos por el cliente de inferencia

Explore otros parámetros que puede especificar en el cliente de inferencia. Para obtener una lista completa de todos los parámetros admitidos y su documentación correspondiente, vea Referencia de la API de inferencia de modelos de Azure AI.

from azure.ai.inference.models import ChatCompletionsResponseFormat

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    presence_penalty=0.1,
    frequency_penalty=0.8,
    max_tokens=2048,
    stop=["<|endoftext|>"],
    temperature=0,
    top_p=1,
    response_format={ "type": ChatCompletionsResponseFormat.TEXT },
)

Advertencia

Meta Llama no admite el formato de salida JSON (response_format = { "type": "json_object" }). Siempre puede pedir al modelo que genere salidas JSON. Sin embargo, no se garantiza que estas salidas sean JSON válidas.

Si desea pasar un parámetro que no está en la lista de parámetros admitidos, puede pasarlo al modelo subyacente mediante parámetros adicionales. Vea Pasar parámetros adicionales al modelo.

Pasar parámetros adicionales al modelo

La API de inferencia de modelos de Azure AI permite pasar parámetros adicionales al modelo. En el ejemplo de código siguiente se muestra cómo pasar el parámetro adicional logprobs al modelo.

Antes de pasar parámetros adicionales a la API de inferencia del modelo de Azure AI, asegúrese de que el modelo admite esos parámetros adicionales. Cuando se realiza la solicitud al modelo subyacente, el encabezado extra-parameters se pasa al modelo con el valor pass-through. Este valor indica al punto de conexión que pase los parámetros adicionales al modelo. El uso de parámetros adicionales con el modelo no garantiza que el modelo pueda controlarlos realmente. Lea la documentación del modelo para comprender qué parámetros adicionales se admiten.

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

Los siguientes parámetros adicionales se pueden pasar a los modelos de chat Meta Llama:

Nombre Description Tipo
n Cuántas terminaciones generar para cada pregunta. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
best_of Genera las terminaciones best_of del lado del servidor y devuelve la mejor (la que tiene la menor probabilidad logarítmica por token). Los resultados no se pueden transmitir. Cuando se usa con n, best_of controla el número de finalizaciones candidatas y n especifica cuántas return—best_of debe ser mayor que n. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
logprobs Un número que indica que se incluyan las probabilidades de registro en los tokens más probables de logprobs, y los tokens elegidos. Por ejemplo, si logprobs es 10, la API devolverá una lista de los 10 tokens más probables. La API siempre devolverá el logprob del token muestreado, por lo que puede haber hasta logprobs+1 elementos en la respuesta. integer
ignore_eos Si se omite el token EOS y continúa generando tokens después de que se genere el token EOS. boolean
use_beam_search Si se va a usar la búsqueda de haz en lugar del muestreo. En tal caso, best_of debe ser mayor que 1 y la temperatura debe ser 0. boolean
stop_token_ids Lista de identificadores para tokens que, cuando se generan, detienen más generación de tokens. La salida devuelta contiene los tokens de detención a menos que los tokens de detención sean tokens especiales. array
skip_special_tokens Si se omiten los tokens especiales en la salida. boolean

Aplicación de la seguridad del contenido

La API de inferencia de modelos de Azure AI admite Seguridad de contenido de Azure AI. Cuando se usan implementaciones con la seguridad de contenido de Azure AI activada, las entradas y las salidas pasan a través de un conjunto de modelos de clasificación destinados a detectar y evitar la salida de contenido perjudicial. El sistema de filtrado de contenido 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 ejemplo siguiente se muestra cómo controlar eventos cuando el modelo detecta contenido perjudicial en el mensaje de entrada y la seguridad del contenido está habilitado.

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage

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 = ex.response.json()
        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
    raise

Sugerencia

Para más información sobre cómo configurar y controlar la configuración de seguridad del contenido de Azure AI, consulte la Documentación de seguridad de contenido de Azure AI.

Nota:

La seguridad del contenido de Azure AI solo está disponible para los modelos implementados como puntos de conexión de API sin servidor.

Modelos de chat de Meta Llama

Los modelos de chat Meta Llama incluyen los siguientes modelos:

La colección de Meta Llama 3.1 de modelos multilingües de lenguaje de gran tamaño (LLMs) es una colección de modelos generativos entrenados previamente y optimizados para instrucciones en tamaños 8B, 70B y 405B (ingreso de texto/salida de texto). Los modelos de solo texto optimizados para instrucciones Llama 3.1 (8B, 70B, 405B) están optimizados para casos de uso de diálogo multilingüe y superan muchos de los modelos de chat de código abierto y cerrado disponibles en pruebas comparativas comunes del sector.

Están disponibles los siguientes modelos:

Requisitos previos

Para usar modelos de chat de Meta Llama con Azure AI Studio, necesita los siguientes requisitos previos:

Implementación de un modelo

Implementación en API sin servidor

Los modelos de chat de Meta Llama se pueden implementar en puntos de conexión de API sin servidor con facturación de pago por uso. Este tipo de implementación proporciona una forma de consumir modelos como API sin alojarlos en su suscripción, al tiempo que mantiene la seguridad y el cumplimiento empresarial que necesitan las organizaciones.

La implementación en un punto de conexión de API sin servidor no requiere cuota de la suscripción. Si el modelo aún no está implementado, use Azure AI Studio, el SDK de Azure Machine Learning para Python, la CLI de Azure o las plantillas de ARM para implementar el modelo como una API sin servidor.

Implementación en un proceso administrado autohospedado

Los modelos de chat Meta Llama se pueden implementar en nuestra solución de inferencia administrada autohospedada, lo que le permite personalizar y controlar todos los detalles sobre cómo se sirve el modelo.

Para la implementación en un proceso administrado autohospedado, debe tener suficiente cuota en la suscripción. Si no tiene suficiente cuota disponible, puede usar el acceso de cuota temporal seleccionando la opción quiero usar la cuota compartida y reconozco que este punto de conexión se eliminará en 168 horas.

El paquete de inferencia instalado

Puede consumir predicciones de este modelo mediante el paquete @azure-rest/ai-inference de npm. Para instalar este paquete, necesita los siguientes requisitos previos:

  • Versiones LTS de Node.js con npm.
  • Dirección URL del punto de conexión. Para construir la biblioteca cliente, debe pasar la dirección URL del punto de conexión. La dirección URL del punto de conexión tiene el formato https://your-host-name.your-azure-region.inference.ai.azure.com, donde your-host-name es el nombre de host de implementación del modelo único y your-azure-region es la región de Azure donde se implementa el modelo (por ejemplo, eastus2).
  • En función de la preferencia de autenticación y implementación de modelo, necesita una clave para autenticarse en el servicio o en las credenciales de Microsoft Entra ID. La clave es una cadena de 32 caracteres.

Una vez que tenga estos requisitos previos, instale la biblioteca de Inferencia de Azure para JavaScript con el siguiente comando:

npm install @azure-rest/ai-inference

Trabajar con finalizaciones de chat

En esta sección, usará API de inferencia de modelos de Azure AI con un modelo de finalizaciones de chat para chat.

Sugerencia

El API de inferencia de modelos de Azure AI permite hablar con la mayoría de los modelos implementados en Azure AI Studio con el mismo código y estructura, incluidos los modelos de chat Meta Llama.

Creación de un cliente para consumir el modelo

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT, 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

Al implementar el modelo en un punto de conexión en línea autohospedado con compatibilidad con Microsoft Entra ID, puede usar el siguiente fragmento de código para crear un cliente.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { DefaultAzureCredential }  from "@azure/identity";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT, 
    new DefaultAzureCredential()
);

Nota:

Actualmente, los puntos de conexión de API sin servidor no admiten el uso de Microsoft Entra ID para la autenticación.

Obtención de las funcionalidades del modelo

La ruta /info devuelve información sobre el modelo que se implementa en el punto de conexión. Devuelva la información del modelo llamando al método siguiente:

var model_info = await client.path("/info").get()

La respuesta es la siguiente:

console.log("Model name: ", model_info.body.model_name)
console.log("Model type: ", model_info.body.model_type)
console.log("Model provider name: ", model_info.body.model_provider_name)
Model name: Meta-Llama-3.1-405B-Instruct
Model type: chat-completions
Model provider name: Meta

Creación de una solicitud de finalización de chat

En el ejemplo siguiente se muestra cómo puede crear una solicitud básica de finalizaciones de chat al modelo.

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    body: {
        messages: messages,
    }
});

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log("Response: ", response.body.choices[0].message.content);
console.log("Model: ", response.body.model);
console.log("Usage:");
console.log("\tPrompt tokens:", response.body.usage.prompt_tokens);
console.log("\tTotal tokens:", response.body.usage.total_tokens);
console.log("\tCompletion tokens:", response.body.usage.completion_tokens);
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: Meta-Llama-3.1-405B-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

Inspeccione la sección usage de la respuesta para ver el número de tokens usados para el aviso, el número total de tokens generados y el número de tokens usados para la finalización.

Streaming de contenido

De forma predeterminada, la API de finalizaciones devuelve todo el contenido generado en una única respuesta. Si está generando finalizaciones largas, esperar la respuesta puede tardar muchos segundos.

Puede transmitir el contenido para obtenerlo a medida que se genera. El contenido de streaming permite empezar a procesar la finalización a medida que el contenido está disponible. Este modo devuelve un objeto que transmite la respuesta como eventos enviados por el servidor de solo datos. Extraiga fragmentos del campo delta, en lugar del campo de mensaje.

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    body: {
        messages: messages,
    }
}).asNodeStream();

Para transmitir finalizaciones, use .asNodeStream() al llamar al modelo.

Puede visualizar cómo el streaming genera contenido:

var stream = response.body;
if (!stream) {
    stream.destroy();
    throw new Error(`Failed to get chat completions with status: ${response.status}`);
}

if (response.status !== "200") {
    throw new Error(`Failed to get chat completions: ${response.body.error}`);
}

var sses = createSseStream(stream);

for await (const event of sses) {
    if (event.data === "[DONE]") {
        return;
    }
    for (const choice of (JSON.parse(event.data)).choices) {
        console.log(choice.delta?.content ?? "");
    }
}

Exploración de más parámetros admitidos por el cliente de inferencia

Explore otros parámetros que puede especificar en el cliente de inferencia. Para obtener una lista completa de todos los parámetros admitidos y su documentación correspondiente, vea Referencia de la API de inferencia de modelos de Azure AI.

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    body: {
        messages: messages,
        presence_penalty: "0.1",
        frequency_penalty: "0.8",
        max_tokens: 2048,
        stop: ["<|endoftext|>"],
        temperature: 0,
        top_p: 1,
        response_format: { type: "text" },
    }
});

Advertencia

Meta Llama no admite el formato de salida JSON (response_format = { "type": "json_object" }). Siempre puede pedir al modelo que genere salidas JSON. Sin embargo, no se garantiza que estas salidas sean JSON válidas.

Si desea pasar un parámetro que no está en la lista de parámetros admitidos, puede pasarlo al modelo subyacente mediante parámetros adicionales. Vea Pasar parámetros adicionales al modelo.

Pasar parámetros adicionales al modelo

La API de inferencia de modelos de Azure AI permite pasar parámetros adicionales al modelo. En el ejemplo de código siguiente se muestra cómo pasar el parámetro adicional logprobs al modelo.

Antes de pasar parámetros adicionales a la API de inferencia del modelo de Azure AI, asegúrese de que el modelo admite esos parámetros adicionales. Cuando se realiza la solicitud al modelo subyacente, el encabezado extra-parameters se pasa al modelo con el valor pass-through. Este valor indica al punto de conexión que pase los parámetros adicionales al modelo. El uso de parámetros adicionales con el modelo no garantiza que el modelo pueda controlarlos realmente. Lea la documentación del modelo para comprender qué parámetros adicionales se admiten.

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    headers: {
        "extra-params": "pass-through"
    },
    body: {
        messages: messages,
        logprobs: true
    }
});

Los siguientes parámetros adicionales se pueden pasar a los modelos de chat Meta Llama:

Nombre Description Tipo
n Cuántas terminaciones generar para cada pregunta. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
best_of Genera las terminaciones best_of del lado del servidor y devuelve la mejor (la que tiene la menor probabilidad logarítmica por token). Los resultados no se pueden transmitir. Cuando se usa con n, best_of controla el número de finalizaciones candidatas y n especifica cuántas return—best_of debe ser mayor que n. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
logprobs Un número que indica que se incluyan las probabilidades de registro en los tokens más probables de logprobs, y los tokens elegidos. Por ejemplo, si logprobs es 10, la API devolverá una lista de los 10 tokens más probables. La API siempre devolverá el logprob del token muestreado, por lo que puede haber hasta logprobs+1 elementos en la respuesta. integer
ignore_eos Si se omite el token EOS y continúa generando tokens después de que se genere el token EOS. boolean
use_beam_search Si se va a usar la búsqueda de haz en lugar del muestreo. En tal caso, best_of debe ser mayor que 1 y la temperatura debe ser 0. boolean
stop_token_ids Lista de identificadores para tokens que, cuando se generan, detienen más generación de tokens. La salida devuelta contiene los tokens de detención a menos que los tokens de detención sean tokens especiales. array
skip_special_tokens Si se omiten los tokens especiales en la salida. boolean

Aplicación de la seguridad del contenido

La API de inferencia de modelos de Azure AI admite Seguridad de contenido de Azure AI. Cuando se usan implementaciones con la seguridad de contenido de Azure AI activada, las entradas y las salidas pasan a través de un conjunto de modelos de clasificación destinados a detectar y evitar la salida de contenido perjudicial. El sistema de filtrado de contenido 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 ejemplo siguiente se muestra cómo controlar eventos cuando el modelo detecta contenido perjudicial en el mensaje de entrada y la seguridad del contenido está habilitado.

try {
    var messages = [
        { role: "system", content: "You are an AI assistant that helps people find information." },
        { role: "user", content: "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills." },
    ];

    var response = await client.path("/chat/completions").post({
        body: {
            messages: messages,
        }
    });

    console.log(response.body.choices[0].message.content);
}
catch (error) {
    if (error.status_code == 400) {
        var response = JSON.parse(error.response._content);
        if (response.error) {
            console.log(`Your request triggered an ${response.error.code} error:\n\t ${response.error.message}`);
        }
        else
        {
            throw error;
        }
    }
}

Sugerencia

Para más información sobre cómo configurar y controlar la configuración de seguridad del contenido de Azure AI, consulte la Documentación de seguridad de contenido de Azure AI.

Nota:

La seguridad del contenido de Azure AI solo está disponible para los modelos implementados como puntos de conexión de API sin servidor.

Modelos de chat de Meta Llama

Los modelos de chat Meta Llama incluyen los siguientes modelos:

La colección de Meta Llama 3.1 de modelos multilingües de lenguaje de gran tamaño (LLMs) es una colección de modelos generativos entrenados previamente y optimizados para instrucciones en tamaños 8B, 70B y 405B (ingreso de texto/salida de texto). Los modelos de solo texto optimizados para instrucciones Llama 3.1 (8B, 70B, 405B) están optimizados para casos de uso de diálogo multilingüe y superan muchos de los modelos de chat de código abierto y cerrado disponibles en pruebas comparativas comunes del sector.

Están disponibles los siguientes modelos:

Requisitos previos

Para usar modelos de chat de Meta Llama con Azure AI Studio, necesita los siguientes requisitos previos:

Implementación de un modelo

Implementación en API sin servidor

Los modelos de chat de Meta Llama se pueden implementar en puntos de conexión de API sin servidor con facturación de pago por uso. Este tipo de implementación proporciona una forma de consumir modelos como API sin alojarlos en su suscripción, al tiempo que mantiene la seguridad y el cumplimiento empresarial que necesitan las organizaciones.

La implementación en un punto de conexión de API sin servidor no requiere cuota de la suscripción. Si el modelo aún no está implementado, use Azure AI Studio, el SDK de Azure Machine Learning para Python, la CLI de Azure o las plantillas de ARM para implementar el modelo como una API sin servidor.

Implementación en un proceso administrado autohospedado

Los modelos de chat Meta Llama se pueden implementar en nuestra solución de inferencia administrada autohospedada, lo que le permite personalizar y controlar todos los detalles sobre cómo se sirve el modelo.

Para la implementación en un proceso administrado autohospedado, debe tener suficiente cuota en la suscripción. Si no tiene suficiente cuota disponible, puede usar el acceso de cuota temporal seleccionando la opción quiero usar la cuota compartida y reconozco que este punto de conexión se eliminará en 168 horas.

El paquete de inferencia instalado

Puede consumir predicciones de este modelo mediante el paquete Azure.AI.Inference de Nuget. Para instalar este paquete, necesita los siguientes requisitos previos:

  • Dirección URL del punto de conexión. Para construir la biblioteca cliente, debe pasar la dirección URL del punto de conexión. La dirección URL del punto de conexión tiene el formato https://your-host-name.your-azure-region.inference.ai.azure.com, donde your-host-name es el nombre de host de implementación del modelo único y your-azure-region es la región de Azure donde se implementa el modelo (por ejemplo, eastus2).
  • En función de la preferencia de autenticación y implementación de modelo, necesita una clave para autenticarse en el servicio o en las credenciales de Microsoft Entra ID. La clave es una cadena de 32 caracteres.

Una vez que tenga estos requisitos previos, instale la biblioteca de inferencia de Azure AI con el siguiente comando:

dotnet add package Azure.AI.Inference --prerelease

También puede autenticarse con el Microsoft Entra ID (anteriormente Azure Active Directory). Para usar proveedores de credenciales proporcionados con el SDK de Azure, instale el paquete de Azure.Identity :

dotnet add package Azure.Identity

Importe los siguientes espacios de nombres:

using Azure;
using Azure.Identity;
using Azure.AI.Inference;

En este ejemplo también se usan los siguientes espacios de nombres, pero es posible que no siempre los necesite:

using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;

Trabajar con finalizaciones de chat

En esta sección, usará API de inferencia de modelos de Azure AI con un modelo de finalizaciones de chat para chat.

Sugerencia

El API de inferencia de modelos de Azure AI permite hablar con la mayoría de los modelos implementados en Azure AI Studio con el mismo código y estructura, incluidos los modelos de chat Meta Llama.

Creación de un cliente para consumir el modelo

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

ChatCompletionsClient client = new ChatCompletionsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);

Al implementar el modelo en un punto de conexión en línea autohospedado con compatibilidad con Microsoft Entra ID, puede usar el siguiente fragmento de código para crear un cliente.

client = new ChatCompletionsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new DefaultAzureCredential(includeInteractiveCredentials: true)
);

Nota:

Actualmente, los puntos de conexión de API sin servidor no admiten el uso de Microsoft Entra ID para la autenticación.

Obtención de las funcionalidades del modelo

La ruta /info devuelve información sobre el modelo que se implementa en el punto de conexión. Devuelva la información del modelo llamando al método siguiente:

Response<ModelInfo> modelInfo = client.GetModelInfo();

La respuesta es la siguiente:

Console.WriteLine($"Model name: {modelInfo.Value.ModelName}");
Console.WriteLine($"Model type: {modelInfo.Value.ModelType}");
Console.WriteLine($"Model provider name: {modelInfo.Value.ModelProviderName}");
Model name: Meta-Llama-3.1-405B-Instruct
Model type: chat-completions
Model provider name: Meta

Creación de una solicitud de finalización de chat

En el ejemplo siguiente se muestra cómo puede crear una solicitud básica de finalizaciones de chat al modelo.

ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
};

Response<ChatCompletions> response = client.Complete(requestOptions);

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens}");
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: Meta-Llama-3.1-405B-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

Inspeccione la sección usage de la respuesta para ver el número de tokens usados para el aviso, el número total de tokens generados y el número de tokens usados para la finalización.

Streaming de contenido

De forma predeterminada, la API de finalizaciones devuelve todo el contenido generado en una única respuesta. Si está generando finalizaciones largas, esperar la respuesta puede tardar muchos segundos.

Puede transmitir el contenido para obtenerlo a medida que se genera. El contenido de streaming permite empezar a procesar la finalización a medida que el contenido está disponible. Este modo devuelve un objeto que transmite la respuesta como eventos enviados por el servidor de solo datos. Extraiga fragmentos del campo delta, en lugar del campo de mensaje.

static async Task StreamMessageAsync(ChatCompletionsClient client)
{
    ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
    {
        Messages = {
            new ChatRequestSystemMessage("You are a helpful assistant."),
            new ChatRequestUserMessage("How many languages are in the world? Write an essay about it.")
        },
        MaxTokens=4096
    };

    StreamingResponse<StreamingChatCompletionsUpdate> streamResponse = await client.CompleteStreamingAsync(requestOptions);

    await PrintStream(streamResponse);
}

Para transmitir finalizaciones, use CompleteStreamingAsync método al llamar al modelo. Observe que en este ejemplo, la llamada se ajusta en un método asincrónico.

Para visualizar la salida, defina un método asincrónico para imprimir la secuencia en la consola.

static async Task PrintStream(StreamingResponse<StreamingChatCompletionsUpdate> response)
{
    await foreach (StreamingChatCompletionsUpdate chatUpdate in response)
    {
        if (chatUpdate.Role.HasValue)
        {
            Console.Write($"{chatUpdate.Role.Value.ToString().ToUpperInvariant()}: ");
        }
        if (!string.IsNullOrEmpty(chatUpdate.ContentUpdate))
        {
            Console.Write(chatUpdate.ContentUpdate);
        }
    }
}

Puede visualizar cómo el streaming genera contenido:

StreamMessageAsync(client).GetAwaiter().GetResult();

Exploración de más parámetros admitidos por el cliente de inferencia

Explore otros parámetros que puede especificar en el cliente de inferencia. Para obtener una lista completa de todos los parámetros admitidos y su documentación correspondiente, vea Referencia de la API de inferencia de modelos de Azure AI.

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    PresencePenalty = 0.1f,
    FrequencyPenalty = 0.8f,
    MaxTokens = 2048,
    StopSequences = { "<|endoftext|>" },
    Temperature = 0,
    NucleusSamplingFactor = 1,
    ResponseFormat = new ChatCompletionsResponseFormatText()
};

response = client.Complete(requestOptions);
Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");

Advertencia

Meta Llama no admite el formato de salida JSON (response_format = { "type": "json_object" }). Siempre puede pedir al modelo que genere salidas JSON. Sin embargo, no se garantiza que estas salidas sean JSON válidas.

Si desea pasar un parámetro que no está en la lista de parámetros admitidos, puede pasarlo al modelo subyacente mediante parámetros adicionales. Vea Pasar parámetros adicionales al modelo.

Pasar parámetros adicionales al modelo

La API de inferencia de modelos de Azure AI permite pasar parámetros adicionales al modelo. En el ejemplo de código siguiente se muestra cómo pasar el parámetro adicional logprobs al modelo.

Antes de pasar parámetros adicionales a la API de inferencia del modelo de Azure AI, asegúrese de que el modelo admite esos parámetros adicionales. Cuando se realiza la solicitud al modelo subyacente, el encabezado extra-parameters se pasa al modelo con el valor pass-through. Este valor indica al punto de conexión que pase los parámetros adicionales al modelo. El uso de parámetros adicionales con el modelo no garantiza que el modelo pueda controlarlos realmente. Lea la documentación del modelo para comprender qué parámetros adicionales se admiten.

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    AdditionalProperties = { { "logprobs", BinaryData.FromString("true") } },
};

response = client.Complete(requestOptions, extraParams: ExtraParameters.PassThrough);
Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");

Los siguientes parámetros adicionales se pueden pasar a los modelos de chat Meta Llama:

Nombre Description Tipo
n Cuántas terminaciones generar para cada pregunta. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
best_of Genera las terminaciones best_of del lado del servidor y devuelve la mejor (la que tiene la menor probabilidad logarítmica por token). Los resultados no se pueden transmitir. Cuando se usa con n, best_of controla el número de finalizaciones candidatas y n especifica cuántas return—best_of debe ser mayor que n. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
logprobs Un número que indica que se incluyan las probabilidades de registro en los tokens más probables de logprobs, y los tokens elegidos. Por ejemplo, si logprobs es 10, la API devolverá una lista de los 10 tokens más probables. La API siempre devolverá el logprob del token muestreado, por lo que puede haber hasta logprobs+1 elementos en la respuesta. integer
ignore_eos Si se omite el token EOS y continúa generando tokens después de que se genere el token EOS. boolean
use_beam_search Si se va a usar la búsqueda de haz en lugar del muestreo. En tal caso, best_of debe ser mayor que 1 y la temperatura debe ser 0. boolean
stop_token_ids Lista de identificadores para tokens que, cuando se generan, detienen más generación de tokens. La salida devuelta contiene los tokens de detención a menos que los tokens de detención sean tokens especiales. array
skip_special_tokens Si se omiten los tokens especiales en la salida. boolean

Aplicación de la seguridad del contenido

La API de inferencia de modelos de Azure AI admite Seguridad de contenido de Azure AI. Cuando se usan implementaciones con la seguridad de contenido de Azure AI activada, las entradas y las salidas pasan a través de un conjunto de modelos de clasificación destinados a detectar y evitar la salida de contenido perjudicial. El sistema de filtrado de contenido 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 ejemplo siguiente se muestra cómo controlar eventos cuando el modelo detecta contenido perjudicial en el mensaje de entrada y la seguridad del contenido está habilitado.

try
{
    requestOptions = new ChatCompletionsOptions()
    {
        Messages = {
            new ChatRequestSystemMessage("You are an AI assistant that helps people find information."),
            new ChatRequestUserMessage(
                "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
            ),
        },
    };

    response = client.Complete(requestOptions);
    Console.WriteLine(response.Value.Choices[0].Message.Content);
}
catch (RequestFailedException ex)
{
    if (ex.ErrorCode == "content_filter")
    {
        Console.WriteLine($"Your query has trigger Azure Content Safety: {ex.Message}");
    }
    else
    {
        throw;
    }
}

Sugerencia

Para más información sobre cómo configurar y controlar la configuración de seguridad del contenido de Azure AI, consulte la Documentación de seguridad de contenido de Azure AI.

Nota:

La seguridad del contenido de Azure AI solo está disponible para los modelos implementados como puntos de conexión de API sin servidor.

Modelos de chat de Meta Llama

Los modelos de chat Meta Llama incluyen los siguientes modelos:

La colección de Meta Llama 3.1 de modelos multilingües de lenguaje de gran tamaño (LLMs) es una colección de modelos generativos entrenados previamente y optimizados para instrucciones en tamaños 8B, 70B y 405B (ingreso de texto/salida de texto). Los modelos de solo texto optimizados para instrucciones Llama 3.1 (8B, 70B, 405B) están optimizados para casos de uso de diálogo multilingüe y superan muchos de los modelos de chat de código abierto y cerrado disponibles en pruebas comparativas comunes del sector.

Están disponibles los siguientes modelos:

Requisitos previos

Para usar modelos de chat de Meta Llama con Azure AI Studio, necesita los siguientes requisitos previos:

Implementación de un modelo

Implementación en API sin servidor

Los modelos de chat de Meta Llama se pueden implementar en puntos de conexión de API sin servidor con facturación de pago por uso. Este tipo de implementación proporciona una forma de consumir modelos como API sin alojarlos en su suscripción, al tiempo que mantiene la seguridad y el cumplimiento empresarial que necesitan las organizaciones.

La implementación en un punto de conexión de API sin servidor no requiere cuota de la suscripción. Si el modelo aún no está implementado, use Azure AI Studio, el SDK de Azure Machine Learning para Python, la CLI de Azure o las plantillas de ARM para implementar el modelo como una API sin servidor.

Implementación en un proceso administrado autohospedado

Los modelos de chat Meta Llama se pueden implementar en nuestra solución de inferencia administrada autohospedada, lo que le permite personalizar y controlar todos los detalles sobre cómo se sirve el modelo.

Para la implementación en un proceso administrado autohospedado, debe tener suficiente cuota en la suscripción. Si no tiene suficiente cuota disponible, puede usar el acceso de cuota temporal seleccionando la opción quiero usar la cuota compartida y reconozco que este punto de conexión se eliminará en 168 horas.

Un cliente REST

Los modelos implementados con la API de inferencia de modelos de Azure AI pueden consumirse usando cualquier cliente REST. Para usar el cliente REST, necesita los siguientes requisitos previos:

  • Para construir las solicitudes, debe pasar la dirección URL del punto de conexión. La dirección URL del punto de conexión tiene el formato https://your-host-name.your-azure-region.inference.ai.azure.com, donde your-host-name`` is your unique model deployment host name and your-azure-region`` es la región de Azure donde se implementa el modelo (por ejemplo, eastus2).
  • En función de la preferencia de autenticación y implementación de modelo, necesita una clave para autenticarse en el servicio o en las credenciales de Microsoft Entra ID. La clave es una cadena de 32 caracteres.

Trabajar con finalizaciones de chat

En esta sección, usará API de inferencia de modelos de Azure AI con un modelo de finalizaciones de chat para chat.

Sugerencia

El API de inferencia de modelos de Azure AI permite hablar con la mayoría de los modelos implementados en Azure AI Studio con el mismo código y estructura, incluidos los modelos de chat Meta Llama.

Creación de un cliente para consumir el modelo

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

Al implementar el modelo en un punto de conexión en línea autohospedado con compatibilidad con Microsoft Entra ID, puede usar el siguiente fragmento de código para crear un cliente.

Nota:

Actualmente, los puntos de conexión de API sin servidor no admiten el uso de Microsoft Entra ID para la autenticación.

Obtención de las funcionalidades del modelo

La ruta /info devuelve información sobre el modelo que se implementa en el punto de conexión. Devuelva la información del modelo llamando al método siguiente:

GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json

La respuesta es la siguiente:

{
    "model_name": "Meta-Llama-3.1-405B-Instruct",
    "model_type": "chat-completions",
    "model_provider_name": "Meta"
}

Creación de una solicitud de finalización de chat

En el ejemplo siguiente se muestra cómo puede crear una solicitud básica de finalizaciones de chat al modelo.

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ]
}

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "Meta-Llama-3.1-405B-Instruct",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.",
                "tool_calls": null
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

Inspeccione la sección usage de la respuesta para ver el número de tokens usados para el aviso, el número total de tokens generados y el número de tokens usados para la finalización.

Streaming de contenido

De forma predeterminada, la API de finalizaciones devuelve todo el contenido generado en una única respuesta. Si está generando finalizaciones largas, esperar la respuesta puede tardar muchos segundos.

Puede transmitir el contenido para obtenerlo a medida que se genera. El contenido de streaming permite empezar a procesar la finalización a medida que el contenido está disponible. Este modo devuelve un objeto que transmite la respuesta como eventos enviados por el servidor de solo datos. Extraiga fragmentos del campo delta, en lugar del campo de mensaje.

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "stream": true,
    "temperature": 0,
    "top_p": 1,
    "max_tokens": 2048
}

Puede visualizar cómo el streaming genera contenido:

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "Meta-Llama-3.1-405B-Instruct",
    "choices": [
        {
            "index": 0,
            "delta": {
                "role": "assistant",
                "content": ""
            },
            "finish_reason": null,
            "logprobs": null
        }
    ]
}

El último mensaje de la secuencia ha establecido finish_reason, lo que indica el motivo para que se detenga el proceso de generación.

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "Meta-Llama-3.1-405B-Instruct",
    "choices": [
        {
            "index": 0,
            "delta": {
                "content": ""
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

Exploración de más parámetros admitidos por el cliente de inferencia

Explore otros parámetros que puede especificar en el cliente de inferencia. Para obtener una lista completa de todos los parámetros admitidos y su documentación correspondiente, vea Referencia de la API de inferencia de modelos de Azure AI.

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "presence_penalty": 0.1,
    "frequency_penalty": 0.8,
    "max_tokens": 2048,
    "stop": ["<|endoftext|>"],
    "temperature" :0,
    "top_p": 1,
    "response_format": { "type": "text" }
}
{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "Meta-Llama-3.1-405B-Instruct",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.",
                "tool_calls": null
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

Advertencia

Meta Llama no admite el formato de salida JSON (response_format = { "type": "json_object" }). Siempre puede pedir al modelo que genere salidas JSON. Sin embargo, no se garantiza que estas salidas sean JSON válidas.

Si desea pasar un parámetro que no está en la lista de parámetros admitidos, puede pasarlo al modelo subyacente mediante parámetros adicionales. Vea Pasar parámetros adicionales al modelo.

Pasar parámetros adicionales al modelo

La API de inferencia de modelos de Azure AI permite pasar parámetros adicionales al modelo. En el ejemplo de código siguiente se muestra cómo pasar el parámetro adicional logprobs al modelo.

Antes de pasar parámetros adicionales a la API de inferencia del modelo de Azure AI, asegúrese de que el modelo admite esos parámetros adicionales. Cuando se realiza la solicitud al modelo subyacente, el encabezado extra-parameters se pasa al modelo con el valor pass-through. Este valor indica al punto de conexión que pase los parámetros adicionales al modelo. El uso de parámetros adicionales con el modelo no garantiza que el modelo pueda controlarlos realmente. Lea la documentación del modelo para comprender qué parámetros adicionales se admiten.

POST /chat/completions HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
extra-parameters: pass-through
{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "logprobs": true
}

Los siguientes parámetros adicionales se pueden pasar a los modelos de chat Meta Llama:

Nombre Description Tipo
n Cuántas terminaciones generar para cada pregunta. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
best_of Genera las terminaciones best_of del lado del servidor y devuelve la mejor (la que tiene la menor probabilidad logarítmica por token). Los resultados no se pueden transmitir. Cuando se usa con n, best_of controla el número de finalizaciones candidatas y n especifica cuántas return—best_of debe ser mayor que n. Nota: Dado que este parámetro genera muchas finalizaciones, puede consumir rápidamente la cuota de tokens. integer
logprobs Un número que indica que se incluyan las probabilidades de registro en los tokens más probables de logprobs, y los tokens elegidos. Por ejemplo, si logprobs es 10, la API devolverá una lista de los 10 tokens más probables. La API siempre devolverá el logprob del token muestreado, por lo que puede haber hasta logprobs+1 elementos en la respuesta. integer
ignore_eos Si se omite el token EOS y continúa generando tokens después de que se genere el token EOS. boolean
use_beam_search Si se va a usar la búsqueda de haz en lugar del muestreo. En tal caso, best_of debe ser mayor que 1 y la temperatura debe ser 0. boolean
stop_token_ids Lista de identificadores para tokens que, cuando se generan, detienen más generación de tokens. La salida devuelta contiene los tokens de detención a menos que los tokens de detención sean tokens especiales. array
skip_special_tokens Si se omiten los tokens especiales en la salida. boolean

Aplicación de la seguridad del contenido

La API de inferencia de modelos de Azure AI admite Seguridad de contenido de Azure AI. Cuando se usan implementaciones con la seguridad de contenido de Azure AI activada, las entradas y las salidas pasan a través de un conjunto de modelos de clasificación destinados a detectar y evitar la salida de contenido perjudicial. El sistema de filtrado de contenido 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 ejemplo siguiente se muestra cómo controlar eventos cuando el modelo detecta contenido perjudicial en el mensaje de entrada y la seguridad del contenido está habilitado.

{
    "messages": [
        {
            "role": "system",
            "content": "You are an AI assistant that helps people find information."
        },
                {
            "role": "user",
            "content": "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
        }
    ]
}
{
    "error": {
        "message": "The response was filtered due to the prompt triggering Microsoft's content management policy. Please modify your prompt and retry.",
        "type": null,
        "param": "prompt",
        "code": "content_filter",
        "status": 400
    }
}

Sugerencia

Para más información sobre cómo configurar y controlar la configuración de seguridad del contenido de Azure AI, consulte la Documentación de seguridad de contenido de Azure AI.

Nota:

La seguridad del contenido de Azure AI solo está disponible para los modelos implementados como puntos de conexión de API sin servidor.

Más ejemplos de inferencia

Para obtener más ejemplos de cómo usar Meta Llama, vea los ejemplos y tutoriales siguientes:

Descripción Idioma Muestra
Solicitud CURL Bash Vínculo
Paquete de inferencia de Azure AI para JavaScript JavaScript Vínculo
Paquete de inferencia de Azure AI para Python Python Vínculo
Solicitudes web de Python Python Vínculo
SDK de OpenAI (experimental) Python Vínculo
LangChain Python Vínculo
LiteLLM Python Vínculo

Consideraciones de costo y cuota para la familia de modelos Meta Llama implementados como puntos de conexión de API sin servidor

La cuota se administra por implementación. Cada implementación tiene un límite de velocidad de 200 000 tokens por minuto y 1000 solicitudes de API por minuto. Sin embargo, actualmente limitamos una implementación por modelo por proyecto. Póngase en contacto con el Soporte técnico de Microsoft Azure si los límites de velocidad actuales no son suficientes para sus escenarios.

Los modelos de Meta Llama implementados como API sin servidor los ofrece Meta a través de Azure Marketplace y se integran con Inteligencia artificial de Azure Studio para su uso. Puedes encontrar los precios de Azure Marketplace al implementar modelos.

Cada vez que un proyecto se suscribe a una oferta determinada de Azure Marketplace, se crea un nuevo recurso para realizar un seguimiento de los costos asociados a su consumo. El mismo recurso se usa para hacer un seguimiento de los costos asociados con la inferencia; sin embargo, hay varios medidores disponibles para hacer un seguimiento de cada escenario de forma independiente.

Para más información sobre cómo realizar un seguimiento de los costos, consulte Supervisión de los costos de los modelos ofrecidos en Azure Marketplace.

Consideraciones de costo y cuota para la familia de modelos Meta Llama implementados en el proceso administrado

Los modelos Meta Llama implementados en el proceso administrado se facturan en función de las horas principales de la instancia de proceso asociada. El costo de la instancia de proceso viene determinado por el tamaño de la instancia, el número de instancias en ejecución y la duración de la ejecución.

Se recomienda empezar con un número bajo de instancias y escalar verticalmente según sea necesario. Puede supervisar el costo de la instancia de proceso en Azure Portal.