Partilhar via


Como usar a família de modelos Meta Llama

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Neste artigo, você aprenderá sobre a família de modelos Meta Llama e como usá-los. Os modelos e ferramentas Meta Llama são uma coleção de modelos de raciocínio generativo de texto e imagem de IA pré-treinados e ajustados - variando em escala de SLMs (modelos 1B, 3B Base e Instruct) para inferência no dispositivo e borda - a LLMs de médio porte (modelos 7B, 8B e 70B Base e Instruct) e modelos de alto desempenho como Meta Llama 3.1 405B Instruct para geração de dados sintéticos e casos de uso de destilação.

Veja nossos anúncios dos modelos da família Llama 3.2 da Meta, disponíveis agora no Catálogo de Modelos de IA do Azure através do blog da Meta e do Blog da Comunidade Tecnológica da Microsoft.

Importante

Os modelos que estão em pré-visualização são marcados como pré-visualização nos respetivos cartões de modelo no catálogo de modelos.

Família de modelos Meta Llama

A família de modelos Meta Llama inclui os seguintes modelos:

A coleção Llama 3.2 de SLMs e modelos de raciocínio de imagem já está disponível. Em breve, o Llama 3.2 11B Vision Instruct e o Llama 3.2 90B Vision Instruct estarão disponíveis como um endpoint de API sem servidor via Models-as-a-Service. A partir de hoje, os seguintes modelos estarão disponíveis para implantação por meio de computação gerenciada:

  • Lama 3,2 1B
  • Lama 3,2 3B
  • Lama 3.2 1B Instruir
  • Llama 3.2 3B Instruir
  • Guarda Lama 3 1B
  • Llama Guarda 11B Visão
  • Llama 3.2 11B Visão Instruir
  • Llama 3.2 90B Vision Instruct estão disponíveis para implantação de computação gerenciada.

Pré-requisitos

Para usar modelos Meta Llama com o Azure AI Studio, você precisa dos seguintes pré-requisitos:

Uma implantação de modelo

Implantação em APIs sem servidor

Os modelos Meta Llama podem ser implantados em endpoints de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.

A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.

Implantação em uma computação gerenciada auto-hospedada

Os modelos Meta Llama podem ser implantados em nossa solução de inferência gerenciada auto-hospedada, que permite personalizar e controlar todos os detalhes sobre como o modelo é servido.

Para implantação em uma computação gerenciada auto-hospedada, você deve ter cota suficiente em sua assinatura. Se você não tiver cota suficiente disponível, você pode usar nosso acesso à cota temporária selecionando a opção Quero usar a cota compartilhada e reconheço que esse ponto de extremidade será excluído em 168 horas.

O pacote de inferência instalado

Você pode consumir previsões desse modelo usando o azure-ai-inference pacote com Python. Para instalar este pacote, você precisa dos seguintes pré-requisitos:

  • Python 3.8 ou posterior instalado, incluindo pip.
  • O URL do ponto de extremidade. Para construir a biblioteca do cliente, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato https://your-host-name.your-azure-region.inference.ai.azure.com, onde your-host-name é o nome exclusivo do host de implantação do modelo e your-azure-region é a região do Azure onde o modelo é implantado (por exemplo, eastus2).
  • Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.

Depois de ter esses pré-requisitos, instale o pacote de inferência do Azure AI com o seguinte comando:

pip install azure-ai-inference

Leia mais sobre o pacote de inferência e a referência da IA do Azure.

Trabalhar com finalizações de chat

Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.

Gorjeta

A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Studio com o mesmo código e estrutura, incluindo modelos Meta Llama Instruct - modelos de raciocínio somente texto ou imagem.

Criar um cliente para consumir o modelo

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

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"]),
)

Ao implantar o modelo em um ponto de extremidade online auto-hospedado com suporte ao Microsoft Entra ID , você pode usar o trecho de código a seguir para criar um 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

Atualmente, os pontos de extremidade de API sem servidor não oferecem suporte ao uso do Microsoft Entra ID para autenticação.

Obtenha as capacidades do modelo

A /info rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:

model_info = client.get_model_info()

A resposta é a seguinte:

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

Criar uma solicitação de conclusão de bate-papo

O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o 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?"),
    ],
)

A resposta é a seguinte, onde você pode ver as estatísticas de uso do 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

Inspecione a usage seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.

Transmitir conteúdo

Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.

Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.

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 finalizações, defina stream=True quando você chamar o modelo.

Para visualizar a saída, defina uma função auxiliar para imprimir o fluxo.

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="")

Você pode visualizar como o streaming gera conteúdo:

print_stream(result)

Explore mais parâmetros suportados pelo cliente de inferência

Explore outros parâmetros que você pode especificar no cliente de inferência. Para obter uma lista completa de todos os parâmetros suportados e sua documentação correspondente, consulte Referência da API de Inferência de Modelo de IA do Azure.

from azure.ai.inference.models import ChatCompletionsResponseFormatText

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": ChatCompletionsResponseFormatText() },
)

Aviso

Os modelos Meta Llama não suportam a formatação de saída JSON (response_format = { "type": "json_object" }). Você sempre pode solicitar que o modelo gere saídas JSON. No entanto, não é garantido que tais saídas sejam JSON válidas.

Se quiser passar um parâmetro que não esteja na lista de parâmetros suportados, você pode passá-lo para o modelo subjacente usando parâmetros extras. Consulte Passar parâmetros extras para o modelo.

Passar parâmetros extras para o modelo

A API de Inferência de Modelo de IA do Azure permite que você passe parâmetros extras para o modelo. O exemplo de código a seguir mostra como passar o parâmetro logprobs extra para o modelo.

Antes de passar parâmetros extras para a API de inferência de modelo de IA do Azure, verifique se seu modelo oferece suporte a esses parâmetros extras. Quando a solicitação é feita para o modelo subjacente, o cabeçalho extra-parameters é passado para o modelo com o valor pass-through. Esse valor diz ao ponto de extremidade para passar os parâmetros extras para o modelo. O uso de parâmetros extras com o modelo não garante que o modelo possa realmente lidar com eles. Leia a documentação do modelo para entender quais parâmetros extras são suportados.

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

Os seguintes parâmetros extras podem ser passados para os modelos Meta Llama:

Nome Descrição Type
n Quantas finalizações gerar para cada prompt. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
best_of Gera best_of finalizações do lado do servidor e retorna o melhor (aquele com a menor probabilidade de log por token). Os resultados não podem ser transmitidos. Quando usado com no , best_of controla o número de candidatos concluídos e n especifica quantos devem retornar — best_of deve ser maior que n. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
logprobs Um número que indica para incluir as probabilidades de log nos tokens mais prováveis logprobs e os tokens escolhidos. Por exemplo, se logprobs for 10, a API retornará uma lista dos 10 tokens mais prováveis. a API sempre retornará o logprob do token amostrado, portanto, pode haver até elementos logprobs+1 na resposta. integer
ignore_eos Se o token deve ser ignorado e continuar gerando EOS tokens depois que o EOS token é gerado. boolean
use_beam_search Se deve usar a pesquisa de feixe em vez de amostragem. Nesse caso, best_of deve ser maior que 1 e a temperatura deve ser 0. boolean
stop_token_ids Lista de IDs para tokens que, quando gerados, interrompem a geração de tokens. A saída retornada contém os tokens stop, a menos que os tokens stop sejam tokens especiais. array
skip_special_tokens Se deve ignorar tokens especiais na saída. boolean

Aplicar a segurança do conteúdo

A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.

O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.

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

Gorjeta

Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.

Nota

A segurança de conteúdo da IA do Azure só está disponível para modelos implantados como pontos de extremidade de API sem servidor.

Modelos Meta Llama

Os modelos Meta Llama incluem os seguintes modelos:

A coleção Meta Llama 3.1 de modelos linguísticos multilingues (LLMs) é uma coleção de modelos generativos pré-treinados e ajustados para instruções nos tamanhos 8B, 70B e 405B (entrada e saída de texto). Os modelos de texto ajustado às instruções Llama 3.1 (8B, 70B, 405B) são otimizados para casos de uso de diálogo multilíngue e superam muitos dos modelos de bate-papo fechado e de código aberto disponíveis em benchmarks comuns do setor.

Estão disponíveis os seguintes modelos:

Pré-requisitos

Para usar modelos Meta Llama com o Azure AI Studio, você precisa dos seguintes pré-requisitos:

Uma implantação de modelo

Implantação em APIs sem servidor

Os modelos Meta Llama podem ser implantados em endpoints de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.

A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.

Implantação em uma computação gerenciada auto-hospedada

Os modelos Meta Llama podem ser implantados em nossa solução de inferência gerenciada auto-hospedada, que permite personalizar e controlar todos os detalhes sobre como o modelo é servido.

Para implantação em uma computação gerenciada auto-hospedada, você deve ter cota suficiente em sua assinatura. Se você não tiver cota suficiente disponível, você pode usar nosso acesso à cota temporária selecionando a opção Quero usar a cota compartilhada e reconheço que esse ponto de extremidade será excluído em 168 horas.

O pacote de inferência instalado

Você pode consumir previsões desse modelo usando o @azure-rest/ai-inference pacote de npm. Para instalar este pacote, você precisa dos seguintes pré-requisitos:

  • Versões LTS do Node.js com npm.
  • O URL do ponto de extremidade. Para construir a biblioteca do cliente, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato https://your-host-name.your-azure-region.inference.ai.azure.com, onde your-host-name é o nome exclusivo do host de implantação do modelo e your-azure-region é a região do Azure onde o modelo é implantado (por exemplo, eastus2).
  • Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.

Depois de ter esses pré-requisitos, instale a biblioteca de inferência do Azure para JavaScript com o seguinte comando:

npm install @azure-rest/ai-inference

Trabalhar com finalizações de chat

Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.

Gorjeta

A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Studio com o mesmo código e estrutura, incluindo modelos Meta Llama.

Criar um cliente para consumir o modelo

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

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)
);

Ao implantar o modelo em um ponto de extremidade online auto-hospedado com suporte ao Microsoft Entra ID , você pode usar o trecho de código a seguir para criar um 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

Atualmente, os pontos de extremidade de API sem servidor não oferecem suporte ao uso do Microsoft Entra ID para autenticação.

Obtenha as capacidades do modelo

A /info rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:

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

A resposta é a seguinte:

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

Criar uma solicitação de conclusão de bate-papo

O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o 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,
    }
});

A resposta é a seguinte, onde você pode ver as estatísticas de uso do 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

Inspecione a usage seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.

Transmitir conteúdo

Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.

Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.

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 finalizações, use .asNodeStream() quando chamar o modelo.

Você pode visualizar como o streaming gera conteúdo:

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 ?? "");
    }
}

Explore mais parâmetros suportados pelo cliente de inferência

Explore outros parâmetros que você pode especificar no cliente de inferência. Para obter uma lista completa de todos os parâmetros suportados e sua documentação correspondente, consulte Referência da API de Inferência de Modelo de IA do Azure.

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" },
    }
});

Aviso

Os modelos Meta Llama não suportam a formatação de saída JSON (response_format = { "type": "json_object" }). Você sempre pode solicitar que o modelo gere saídas JSON. No entanto, não é garantido que tais saídas sejam JSON válidas.

Se quiser passar um parâmetro que não esteja na lista de parâmetros suportados, você pode passá-lo para o modelo subjacente usando parâmetros extras. Consulte Passar parâmetros extras para o modelo.

Passar parâmetros extras para o modelo

A API de Inferência de Modelo de IA do Azure permite que você passe parâmetros extras para o modelo. O exemplo de código a seguir mostra como passar o parâmetro logprobs extra para o modelo.

Antes de passar parâmetros extras para a API de inferência de modelo de IA do Azure, verifique se seu modelo oferece suporte a esses parâmetros extras. Quando a solicitação é feita para o modelo subjacente, o cabeçalho extra-parameters é passado para o modelo com o valor pass-through. Esse valor diz ao ponto de extremidade para passar os parâmetros extras para o modelo. O uso de parâmetros extras com o modelo não garante que o modelo possa realmente lidar com eles. Leia a documentação do modelo para entender quais parâmetros extras são suportados.

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
    }
});

Os seguintes parâmetros extras podem ser passados para os modelos Meta Llama:

Nome Descrição Type
n Quantas finalizações gerar para cada prompt. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
best_of Gera best_of finalizações do lado do servidor e retorna o melhor (aquele com a menor probabilidade de log por token). Os resultados não podem ser transmitidos. Quando usado com no , best_of controla o número de candidatos concluídos e n especifica quantos devem retornar — best_of deve ser maior que n. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
logprobs Um número que indica para incluir as probabilidades de log nos tokens mais prováveis logprobs e os tokens escolhidos. Por exemplo, se logprobs for 10, a API retornará uma lista dos 10 tokens mais prováveis. a API sempre retornará o logprob do token amostrado, portanto, pode haver até elementos logprobs+1 na resposta. integer
ignore_eos Se o token deve ser ignorado e continuar gerando EOS tokens depois que o EOS token é gerado. boolean
use_beam_search Se deve usar a pesquisa de feixe em vez de amostragem. Nesse caso, best_of deve ser maior que 1 e a temperatura deve ser 0. boolean
stop_token_ids Lista de IDs para tokens que, quando gerados, interrompem a geração de tokens. A saída retornada contém os tokens stop, a menos que os tokens stop sejam tokens especiais. array
skip_special_tokens Se deve ignorar tokens especiais na saída. boolean

Aplicar a segurança do conteúdo

A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.

O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.

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;
        }
    }
}

Gorjeta

Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.

Nota

A segurança de conteúdo da IA do Azure só está disponível para modelos implantados como pontos de extremidade de API sem servidor.

Modelos Meta Llama

Os modelos Meta Llama incluem os seguintes modelos:

A coleção Meta Llama 3.1 de modelos linguísticos multilingues (LLMs) é uma coleção de modelos generativos pré-treinados e ajustados para instruções nos tamanhos 8B, 70B e 405B (entrada e saída de texto). Os modelos somente texto ajustado às instruções Llama 3.1 (8B, 70B, 405B) são otimizados para casos de uso de diálogo multilíngue e superam muitos dos modelos abertos e fechados disponíveis em benchmarks comuns do setor.

Estão disponíveis os seguintes modelos:

Pré-requisitos

Para usar modelos Meta Llama com o Azure AI Studio, você precisa dos seguintes pré-requisitos:

Uma implantação de modelo

Implantação em APIs sem servidor

Os modelos Meta Llama podem ser implantados em endpoints de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.

A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.

Implantação em uma computação gerenciada auto-hospedada

Os modelos Meta Llama podem ser implantados em nossa solução de inferência gerenciada auto-hospedada, que permite personalizar e controlar todos os detalhes sobre como o modelo é servido.

Para implantação em uma computação gerenciada auto-hospedada, você deve ter cota suficiente em sua assinatura. Se você não tiver cota suficiente disponível, você pode usar nosso acesso à cota temporária selecionando a opção Quero usar a cota compartilhada e reconheço que esse ponto de extremidade será excluído em 168 horas.

O pacote de inferência instalado

Você pode consumir previsões desse modelo usando o Azure.AI.Inference pacote do NuGet. Para instalar este pacote, você precisa dos seguintes pré-requisitos:

  • O URL do ponto de extremidade. Para construir a biblioteca do cliente, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato https://your-host-name.your-azure-region.inference.ai.azure.com, onde your-host-name é o nome exclusivo do host de implantação do modelo e your-azure-region é a região do Azure onde o modelo é implantado (por exemplo, eastus2).
  • Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.

Depois de ter esses pré-requisitos, instale a biblioteca de inferência do Azure AI com o seguinte comando:

dotnet add package Azure.AI.Inference --prerelease

Você também pode autenticar com o Microsoft Entra ID (anteriormente Azure Ative Directory). Para usar provedores de credenciais fornecidos com o SDK do Azure, instale o Azure.Identity pacote:

dotnet add package Azure.Identity

Importe os seguintes namespaces:

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

Este exemplo também usa os seguintes namespaces, mas nem sempre você pode precisar deles:

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

Trabalhar com finalizações de chat

Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.

Gorjeta

A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Studio com o mesmo código e estrutura, incluindo modelos de chat Meta Llama.

Criar um cliente para consumir o modelo

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

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

Ao implantar o modelo em um ponto de extremidade online auto-hospedado com suporte ao Microsoft Entra ID , você pode usar o trecho de código a seguir para criar um cliente.

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

Nota

Atualmente, os pontos de extremidade de API sem servidor não oferecem suporte ao uso do Microsoft Entra ID para autenticação.

Obtenha as capacidades do modelo

A /info rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:

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

A resposta é a seguinte:

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

Criar uma solicitação de conclusão de bate-papo

O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o 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);

A resposta é a seguinte, onde você pode ver as estatísticas de uso do 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

Inspecione a usage seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.

Transmitir conteúdo

Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.

Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.

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 conclusão, use CompleteStreamingAsync o método quando você chamar o modelo. Observe que, neste exemplo, a chamada é encapsulada em um método assíncrono.

Para visualizar a saída, defina um método assíncrono para imprimir o fluxo no console.

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);
        }
    }
}

Você pode visualizar como o streaming gera conteúdo:

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

Explore mais parâmetros suportados pelo cliente de inferência

Explore outros parâmetros que você pode especificar no cliente de inferência. Para obter uma lista completa de todos os parâmetros suportados e sua documentação correspondente, consulte Referência da API de Inferência de Modelo de IA do Azure.

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}");

Aviso

Os modelos Meta Llama não suportam a formatação de saída JSON (response_format = { "type": "json_object" }). Você sempre pode solicitar que o modelo gere saídas JSON. No entanto, não é garantido que tais saídas sejam JSON válidas.

Se quiser passar um parâmetro que não esteja na lista de parâmetros suportados, você pode passá-lo para o modelo subjacente usando parâmetros extras. Consulte Passar parâmetros extras para o modelo.

Passar parâmetros extras para o modelo

A API de Inferência de Modelo de IA do Azure permite que você passe parâmetros extras para o modelo. O exemplo de código a seguir mostra como passar o parâmetro logprobs extra para o modelo.

Antes de passar parâmetros extras para a API de inferência de modelo de IA do Azure, verifique se seu modelo oferece suporte a esses parâmetros extras. Quando a solicitação é feita para o modelo subjacente, o cabeçalho extra-parameters é passado para o modelo com o valor pass-through. Esse valor diz ao ponto de extremidade para passar os parâmetros extras para o modelo. O uso de parâmetros extras com o modelo não garante que o modelo possa realmente lidar com eles. Leia a documentação do modelo para entender quais parâmetros extras são suportados.

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}");

Os seguintes parâmetros extras podem ser passados para os modelos Meta Llama:

Nome Descrição Type
n Quantas finalizações gerar para cada prompt. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
best_of Gera best_of finalizações do lado do servidor e retorna o melhor (aquele com a menor probabilidade de log por token). Os resultados não podem ser transmitidos. Quando usado com no , best_of controla o número de candidatos concluídos e n especifica quantos devem retornar — best_of deve ser maior que n. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
logprobs Um número que indica para incluir as probabilidades de log nos tokens mais prováveis logprobs e os tokens escolhidos. Por exemplo, se logprobs for 10, a API retornará uma lista dos 10 tokens mais prováveis. a API sempre retornará o logprob do token amostrado, portanto, pode haver até elementos logprobs+1 na resposta. integer
ignore_eos Se o token deve ser ignorado e continuar gerando EOS tokens depois que o EOS token é gerado. boolean
use_beam_search Se deve usar a pesquisa de feixe em vez de amostragem. Nesse caso, best_of deve ser maior que 1 e a temperatura deve ser 0. boolean
stop_token_ids Lista de IDs para tokens que, quando gerados, interrompem a geração de tokens. A saída retornada contém os tokens stop, a menos que os tokens stop sejam tokens especiais. array
skip_special_tokens Se deve ignorar tokens especiais na saída. boolean

Aplicar a segurança do conteúdo

A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.

O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.

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;
    }
}

Gorjeta

Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.

Nota

A segurança de conteúdo da IA do Azure só está disponível para modelos implantados como pontos de extremidade de API sem servidor.

Modelos de chat Meta Llama

Os modelos de chat Meta Llama incluem os seguintes modelos:

A coleção Meta Llama 3.1 de modelos linguísticos multilingues (LLMs) é uma coleção de modelos generativos pré-treinados e ajustados para instruções nos tamanhos 8B, 70B e 405B (entrada e saída de texto). Os modelos de texto ajustado às instruções Llama 3.1 (8B, 70B, 405B) são otimizados para casos de uso de diálogo multilíngue e superam muitos dos modelos de bate-papo fechado e de código aberto disponíveis em benchmarks comuns do setor.

Estão disponíveis os seguintes modelos:

Pré-requisitos

Para usar modelos Meta Llama com o Azure AI Studio, você precisa dos seguintes pré-requisitos:

Uma implantação de modelo

Implantação em APIs sem servidor

Os modelos de bate-papo Meta Llama podem ser implantados em endpoints de API sem servidor com faturamento pré-pago. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, mantendo a segurança e a conformidade corporativas de que as organizações precisam.

A implantação em um ponto de extremidade de API sem servidor não requer cota da sua assinatura. Se o seu modelo ainda não estiver implantado, use o Azure AI Studio, o SDK do Azure Machine Learning para Python, a CLI do Azure ou os modelos ARM para implantar o modelo como uma API sem servidor.

Implantação em uma computação gerenciada auto-hospedada

Os modelos Meta Llama podem ser implantados em nossa solução de inferência gerenciada auto-hospedada, que permite personalizar e controlar todos os detalhes sobre como o modelo é servido.

Para implantação em uma computação gerenciada auto-hospedada, você deve ter cota suficiente em sua assinatura. Se você não tiver cota suficiente disponível, você pode usar nosso acesso à cota temporária selecionando a opção Quero usar a cota compartilhada e reconheço que esse ponto de extremidade será excluído em 168 horas.

Um cliente REST

Os modelos implantados com a API de inferência de modelo de IA do Azure podem ser consumidos usando qualquer cliente REST. Para usar o cliente REST, você precisa dos seguintes pré-requisitos:

  • Para construir as solicitações, você precisa passar a URL do ponto de extremidade. A URL do ponto de extremidade tem o formato https://your-host-name.your-azure-region.inference.ai.azure.com, onde your-host-name`` is your unique model deployment host name and your-azure-region'' é a região do Azure onde o modelo é implantado (por exemplo, eastus2).
  • Dependendo da implantação do modelo e da preferência de autenticação, você precisa de uma chave para autenticar no serviço ou credenciais de ID do Microsoft Entra. A chave é uma cadeia de caracteres de 32 caracteres.

Trabalhar com finalizações de chat

Nesta seção, você usa a API de inferência de modelo de IA do Azure com um modelo de conclusão de chat para bate-papo.

Gorjeta

A API de inferência de modelo de IA do Azure permite que você converse com a maioria dos modelos implantados no Azure AI Studio com o mesmo código e estrutura, incluindo modelos de chat Meta Llama.

Criar um cliente para consumir o modelo

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

Ao implantar o modelo em um ponto de extremidade online auto-hospedado com suporte ao Microsoft Entra ID , você pode usar o trecho de código a seguir para criar um cliente.

Nota

Atualmente, os pontos de extremidade de API sem servidor não oferecem suporte ao uso do Microsoft Entra ID para autenticação.

Obtenha as capacidades do modelo

A /info rota retorna informações sobre o modelo implantado no ponto de extremidade. Retorne as informações do modelo chamando o seguinte método:

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

A resposta é a seguinte:

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

Criar uma solicitação de conclusão de bate-papo

O exemplo a seguir mostra como você pode criar uma solicitação básica de conclusão de chat para o modelo.

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

A resposta é a seguinte, onde você pode ver as estatísticas de uso do 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
    }
}

Inspecione a usage seção na resposta para ver o número de tokens usados para o prompt, o número total de tokens gerados e o número de tokens usados para a conclusão.

Transmitir conteúdo

Por padrão, a API de conclusão retorna todo o conteúdo gerado em uma única resposta. Se você estiver gerando longas conclusões, esperar pela resposta pode levar muitos segundos.

Você pode transmitir o conteúdo para obtê-lo à medida que ele está sendo gerado. O streaming de conteúdo permite que você comece a processar a conclusão à medida que o conteúdo fica disponível. Esse modo retorna um objeto que transmite a resposta como eventos enviados pelo servidor somente dados. Extraia partes do campo delta, em vez do campo de mensagem.

{
    "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
}

Você pode visualizar como o streaming gera conteúdo:

{
    "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
        }
    ]
}

A última mensagem no fluxo foi finish_reason definida, indicando o motivo para o processo de geração parar.

{
    "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
    }
}

Explore mais parâmetros suportados pelo cliente de inferência

Explore outros parâmetros que você pode especificar no cliente de inferência. Para obter uma lista completa de todos os parâmetros suportados e sua documentação correspondente, consulte Referência da API de Inferência de Modelo de IA do Azure.

{
    "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
    }
}

Aviso

Os modelos Meta Llama não suportam a formatação de saída JSON (response_format = { "type": "json_object" }). Você sempre pode solicitar que o modelo gere saídas JSON. No entanto, não é garantido que tais saídas sejam JSON válidas.

Se quiser passar um parâmetro que não esteja na lista de parâmetros suportados, você pode passá-lo para o modelo subjacente usando parâmetros extras. Consulte Passar parâmetros extras para o modelo.

Passar parâmetros extras para o modelo

A API de Inferência de Modelo de IA do Azure permite que você passe parâmetros extras para o modelo. O exemplo de código a seguir mostra como passar o parâmetro logprobs extra para o modelo.

Antes de passar parâmetros extras para a API de inferência de modelo de IA do Azure, verifique se seu modelo oferece suporte a esses parâmetros extras. Quando a solicitação é feita para o modelo subjacente, o cabeçalho extra-parameters é passado para o modelo com o valor pass-through. Esse valor diz ao ponto de extremidade para passar os parâmetros extras para o modelo. O uso de parâmetros extras com o modelo não garante que o modelo possa realmente lidar com eles. Leia a documentação do modelo para entender quais parâmetros extras são suportados.

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
}

Os seguintes parâmetros extras podem ser passados para os modelos de chat Meta Llama:

Nome Descrição Type
n Quantas finalizações gerar para cada prompt. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
best_of Gera best_of finalizações do lado do servidor e retorna o melhor (aquele com a menor probabilidade de log por token). Os resultados não podem ser transmitidos. Quando usado com no , best_of controla o número de candidatos concluídos e n especifica quantos devem retornar — best_of deve ser maior que n. Nota: Como esse parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de token. integer
logprobs Um número que indica para incluir as probabilidades de log nos tokens mais prováveis logprobs e os tokens escolhidos. Por exemplo, se logprobs for 10, a API retornará uma lista dos 10 tokens mais prováveis. a API sempre retornará o logprob do token amostrado, portanto, pode haver até elementos logprobs+1 na resposta. integer
ignore_eos Se o token deve ser ignorado e continuar gerando EOS tokens depois que o EOS token é gerado. boolean
use_beam_search Se deve usar a pesquisa de feixe em vez de amostragem. Nesse caso, best_of deve ser maior que 1 e a temperatura deve ser 0. boolean
stop_token_ids Lista de IDs para tokens que, quando gerados, interrompem a geração de tokens. A saída retornada contém os tokens stop, a menos que os tokens stop sejam tokens especiais. array
skip_special_tokens Se deve ignorar tokens especiais na saída. boolean

Aplicar a segurança do conteúdo

A API de inferência de modelo de IA do Azure dá suporte à segurança de conteúdo de IA do Azure. Quando você usa implantações com a segurança de conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo (visualização) deteta e executa ações em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída.

O exemplo a seguir mostra como manipular eventos quando o modelo deteta conteúdo prejudicial no prompt de entrada e a segurança do conteúdo está habilitada.

{
    "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
    }
}

Gorjeta

Para saber mais sobre como você pode configurar e controlar as configurações de segurança de conteúdo do Azure AI, consulte a documentação de segurança de conteúdo do Azure AI.

Nota

A segurança de conteúdo da IA do Azure só está disponível para modelos implantados como pontos de extremidade de API sem servidor.

Mais exemplos de inferência

Para obter mais exemplos de como usar modelos Meta Llama, consulte os seguintes exemplos e tutoriais:

Description Linguagem Exemplo
Pedido CURL Bash Ligação
Pacote Azure AI Inference para JavaScript JavaScript Ligação
Pacote de inferência do Azure AI para Python Python Ligação
Solicitações da Web Python Python Ligação
OpenAI SDK (experimental) Python Ligação
LangChain Python Ligação
LiteLLM Python Ligação

Considerações sobre custo e cota para modelos Meta Llama implantados como pontos de extremidade de API sem servidor

A quota é gerida por implementação. Cada implementação tem um limite de taxa de 200 000 tokens por minuto e 1000 pedidos de API por minuto. No entanto, atualmente, limitamos uma implementação por modelo por projeto. Contacte o Suporte do Microsoft Azure se os limites de taxa atuais não forem suficientes para os seus cenários.

Os modelos Meta Llama implantados como uma API sem servidor são oferecidos pela Meta por meio do Azure Marketplace e integrados ao Azure AI Studio para uso. Pode obter os preços do Azure Marketplace quando implementar o modelo.

Sempre que um projeto subscreve uma determinada oferta do Azure Marketplace, é criado um novo recurso para controlar os custos associados ao seu consumo. O mesmo recurso é usado para monitorizar os custos associados à inferência; no entanto, estão disponíveis vários medidores para monitorizar cada cenário de forma independente.

Para obter mais informações sobre como controlar os custos, consulte Monitorizar custos dos modelos oferecidos através do Azure Marketplace.

Considerações sobre custo e cota para modelos Meta Llama implantados em computação gerenciada

Os modelos Meta Llama implantados na computação gerenciada são cobrados com base nas horas principais da instância de computação associada. O custo da instância de computação é determinado pelo tamanho da instância, pelo número de instâncias em execução e pela duração da execução.

É uma boa prática começar com um número baixo de instâncias e aumentar a escala conforme necessário. Você pode monitorar o custo da instância de computação no portal do Azure.