Como usar modelos de chat do Jais
Importante
Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.
Neste artigo, você aprenderá sobre os modelos de chat do Jais e como usá-los. O Chat do JAIS 30b é um LLM bilíngue auto regressivo para árabe e inglês. As versões ajustadas usam ajuste fino supervisionado (SFT). O modelo está afinado com pares de resposta rápida em árabe e inglês. Os conjuntos de dados de ajuste fino incluíram uma ampla gama de dados instrucionais em vários domínios. O modelo aborda uma ampla gama de tarefas comuns, incluindo resposta a perguntas, geração de código e raciocínio sobre conteúdo textual. Para melhorar o desempenho em árabe, a equipe do Core42 desenvolveu um conjunto de dados em árabe interno e traduziu algumas instruções em inglês de software livre para árabe.
- Comprimento do contexto: o JAIS dá suporte a um comprimento de contexto de 8K.
- Entrada: a entrada do modelo é somente texto.
- Saída: O modelo gera somente texto.
Importante
Os modelos que estão em versão prévia são marcados como versão prévia em seus cartões de modelo no catálogo de modelos.
Modelos de chat Jais
Saiba mais sobre os modelos em seu respectivo cartão de modelo:
Pré-requisitos
Para usar modelos de chat do Jais com o Azure AI Foundry, você precisará dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação para APIs sem servidor
Os modelos de chat do Jais podem ser implantados em pontos de extremidade de API sem servidor com cobrança paga conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se o modelo ainda não estiver implantado, use o portal do Azure AI Foundry, o SDK do Azure Machine Learning para Python, a CLI do Azure ou modelos do ARM para implantar o modelo como uma API sem servidor.
O pacote de inferência instalado
Você pode consumir previsões desse modelo usando o pacote azure-ai-inference
com Python. Para instalar esse pacote, você precisa atender aos seguintes pré-requisitos:
- Python 3.8 ou posterior instalado, incluindo o pip.
- O URL do ponto de extremidade. Para criar a biblioteca de clientes, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name
é o nome de host exclusivo da implantação do modelo eyour-azure-region
é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de atender aos pré-requisitos, instale o pacote de inferência da IA do Azure com o seguinte comando:
pip install azure-ai-inference
Saiba mais sobre o Pacote de inferência da IA do Azure e referências.
Trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo da IA do Azure permite que você converse com a maioria dos modelos implantados no portal do Azure AI Foundry com o mesmo código e estrutura, incluindo modelos de chat Jais.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa um URL de ponto de extremidade e uma chave que são armazenados 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"]),
)
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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: jais-30b-chat
Model type: chat-completions
Model provider name: G42
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar 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: jais-30b-chat
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Inspecione a seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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 conclusões, defina stream=True
ao chamar o modelo.
Para exibir a saída, defina uma função auxiliar a fim de imprimir a transmissão.
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="")
É possível observar como o streaming gera conteúdos:
print_stream(result)
Como explorar outros parâmetros com suporte do cliente de inferência
Confira outros parâmetros que podem ser especificados no cliente de inferência. Para obter uma lista completa de todos os parâmetros com suporte e da documentação correspondente, consulte a Referência da API de inferência de modelo da 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 do Jais não dão suporte à 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 há garantia de que essas saídas estejam em formato JSON válido.
Para transmitir um parâmetro que não está na lista de parâmetros com suporte, faça a transmissão para o modelo subjacente usando parâmetros extras. Consulte Transmitir parâmetros extras ao modelo.
Como transmitir parâmetros extras ao modelo
A API de inferência de modelo da IA do Azure permite transmitir parâmetros extras ao modelo. O exemplo de código a seguir mostra como transmitir o parâmetro extra logprobs
ao modelo.
Antes de transmitir parâmetros extras à API de inferência de modelo da IA do Azure, verifique se o modelo dá suporte a esses parâmetros. Quando a solicitação é feita ao modelo subjacente, o cabeçalho extra-parameters
é transmitido a ele com o valor pass-through
. Esse valor indica que o ponto de extremidade deve transmitir os parâmetros extras ao modelo. O uso de parâmetros extras com o modelo não garante que ele possa realmente lidar com eles. Consulte a documentação do modelo para entender quais parâmetros extras são aceitos.
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
model_extras={
"logprobs": True
}
)
Como aplicar a segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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
Dica
Para saber mais sobre como é possível definir e controlar as configurações de segurança de conteúdo de IA do Azure, consulte a documentação de segurança de conteúdo de IA do Azure.
Modelos de chat Jais
Saiba mais sobre os modelos em seu respectivo cartão de modelo:
Pré-requisitos
Para usar modelos de chat do Jais com o Azure AI Foundry, você precisará dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação para APIs sem servidor
Os modelos de chat do Jais podem ser implantados em pontos de extremidade de API sem servidor com cobrança paga conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se o modelo ainda não estiver implantado, use o portal do Azure AI Foundry, o SDK do Azure Machine Learning para Python, a CLI do Azure ou modelos do ARM para implantar o modelo como uma API sem servidor.
O pacote de inferência instalado
Você pode consumir previsões desse modelo usando o pacote @azure-rest/ai-inference
de npm
. Para instalar esse pacote, você precisa atender aos seguintes pré-requisitos:
- Versões LTS de
Node.js
comnpm
. - O URL do ponto de extremidade. Para criar a biblioteca de clientes, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name
é o nome de host exclusivo da implantação do modelo eyour-azure-region
é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de atender a esses pré-requisitos, instale a biblioteca de inferência do Azure para JavaScript com o seguinte comando:
npm install @azure-rest/ai-inference
Como trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo da IA do Azure permite que você converse com a maioria dos modelos implantados no portal do Azure AI Foundry com o mesmo código e estrutura, incluindo modelos de chat Jais.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa um URL de ponto de extremidade e uma chave que são armazenados 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)
);
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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: jais-30b-chat
Model type: chat-completions
Model provider name: G42
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar 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: jais-30b-chat
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Inspecione a seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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 conclusões, use .asNodeStream()
ao chamar o modelo.
É possível observar como o streaming gera conteúdos:
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 ?? "");
}
}
Como explorar outros parâmetros com suporte do cliente de inferência
Confira outros parâmetros que podem ser especificados no cliente de inferência. Para obter uma lista completa de todos os parâmetros com suporte e da documentação correspondente, consulte a Referência da API de inferência de modelo da 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 do Jais não dão suporte à 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 há garantia de que essas saídas estejam em formato JSON válido.
Para transmitir um parâmetro que não está na lista de parâmetros com suporte, faça a transmissão para o modelo subjacente usando parâmetros extras. Consulte Transmitir parâmetros extras ao modelo.
Como transmitir parâmetros extras ao modelo
A API de inferência de modelo da IA do Azure permite transmitir parâmetros extras ao modelo. O exemplo de código a seguir mostra como transmitir o parâmetro extra logprobs
ao modelo.
Antes de transmitir parâmetros extras à API de inferência de modelo da IA do Azure, verifique se o modelo dá suporte a esses parâmetros. Quando a solicitação é feita ao modelo subjacente, o cabeçalho extra-parameters
é transmitido a ele com o valor pass-through
. Esse valor indica que o ponto de extremidade deve transmitir os parâmetros extras ao modelo. O uso de parâmetros extras com o modelo não garante que ele possa realmente lidar com eles. Consulte a documentação do modelo para entender quais parâmetros extras são aceitos.
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
}
});
Como aplicar a segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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;
}
}
}
Dica
Para saber mais sobre como é possível definir e controlar as configurações de segurança de conteúdo de IA do Azure, consulte a documentação de segurança de conteúdo de IA do Azure.
Modelos de chat Jais
Saiba mais sobre os modelos em seu respectivo cartão de modelo:
Pré-requisitos
Para usar modelos de chat do Jais com o Azure AI Foundry, você precisará dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação para APIs sem servidor
Os modelos de chat do Jais podem ser implantados em pontos de extremidade de API sem servidor com cobrança paga conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se o modelo ainda não estiver implantado, use o portal do Azure AI Foundry, o SDK do Azure Machine Learning para Python, a CLI do Azure ou modelos do ARM para implantar o modelo como uma API sem servidor.
O pacote de inferência instalado
Você pode consumir as previsões desse modelo usando o pacote Azure.AI.Inference
do NuGet. Para instalar esse pacote, você precisa atender aos seguintes pré-requisitos:
- O URL do ponto de extremidade. Para criar a biblioteca de clientes, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name
é o nome de host exclusivo da implantação do modelo eyour-azure-region
é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Depois de atender a esses pré-requisitos, instale a biblioteca de inferência da IA do Azure com o seguinte comando:
dotnet add package Azure.AI.Inference --prerelease
Também é possível realizar a autenticação com o Microsoft Entra ID (antigo Azure Active Directory). Para usar os provedores de credenciais fornecidos com o SDK do Azure, instale o pacote Azure.Identity
:
dotnet add package Azure.Identity
Importe os seguintes namespaces:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
Esse exemplo também usa os seguintes namespaces, mas você nem sempre precisará deles:
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Como trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo da IA do Azure permite que você converse com a maioria dos modelos implantados no portal do Azure AI Foundry com o mesmo código e estrutura, incluindo modelos de chat Jais.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa um URL de ponto de extremidade e uma chave que são armazenados em variáveis de ambiente.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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: jais-30b-chat
Model type: chat-completions
Model provider name: G42
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar 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: jais-30b-chat
Usage:
Prompt tokens: 19
Total tokens: 91
Completion tokens: 72
Inspecione a seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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ões, use o método CompleteStreamingAsync
ao chamar o modelo. Observe que, neste exemplo, a chamada é encapsulada em um método assíncrono.
Para exibir a saída, defina um método assíncrono a fim de 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);
}
}
}
É possível observar como o streaming gera conteúdos:
StreamMessageAsync(client).GetAwaiter().GetResult();
Como explorar outros parâmetros com suporte do cliente de inferência
Confira outros parâmetros que podem ser especificados no cliente de inferência. Para obter uma lista completa de todos os parâmetros com suporte e da documentação correspondente, consulte a Referência da API de inferência de modelo da 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 do Jais não dão suporte à 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 há garantia de que essas saídas estejam em formato JSON válido.
Para transmitir um parâmetro que não está na lista de parâmetros com suporte, faça a transmissão para o modelo subjacente usando parâmetros extras. Consulte Transmitir parâmetros extras ao modelo.
Como transmitir parâmetros extras ao modelo
A API de inferência de modelo da IA do Azure permite transmitir parâmetros extras ao modelo. O exemplo de código a seguir mostra como transmitir o parâmetro extra logprobs
ao modelo.
Antes de transmitir parâmetros extras à API de inferência de modelo da IA do Azure, verifique se o modelo dá suporte a esses parâmetros. Quando a solicitação é feita ao modelo subjacente, o cabeçalho extra-parameters
é transmitido a ele com o valor pass-through
. Esse valor indica que o ponto de extremidade deve transmitir os parâmetros extras ao modelo. O uso de parâmetros extras com o modelo não garante que ele possa realmente lidar com eles. Consulte a documentação do modelo para entender quais parâmetros extras são aceitos.
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}");
Como aplicar a segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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;
}
}
Dica
Para saber mais sobre como é possível definir e controlar as configurações de segurança de conteúdo de IA do Azure, consulte a documentação de segurança de conteúdo de IA do Azure.
Modelos de chat Jais
Saiba mais sobre os modelos em seu respectivo cartão de modelo:
Pré-requisitos
Para usar modelos de chat do Jais com o Azure AI Foundry, você precisará dos seguintes pré-requisitos:
Uma implantação de modelo
Implantação para APIs sem servidor
Os modelos de chat do Jais podem ser implantados em pontos de extremidade de API sem servidor com cobrança paga conforme o uso. Esse tipo de implantação fornece uma maneira de consumir modelos como uma API sem hospedá-los em sua assinatura, ao mesmo tempo que mantém a segurança empresarial e a conformidade que as organizações precisam.
A implantação em um ponto de extremidade de API sem servidor não exige o uso de cotas da sua assinatura. Se o modelo ainda não estiver implantado, use o portal do Azure AI Foundry, o SDK do Azure Machine Learning para Python, a CLI do Azure ou modelos do ARM para implantar o modelo como uma API sem servidor.
Um cliente REST
Os modelos implantados com a API de inferência de modelo da IA do Azure podem ser consumidos com qualquer cliente REST. Para usar o cliente REST, você precisa atender a estes pré-requisitos:
- Para criar as solicitações, você precisa transmitir o URL do ponto de extremidade. O URL do ponto de extremidade tem o formulário
https://your-host-name.your-azure-region.inference.ai.azure.com
, em queyour-host-name`` is your unique model deployment host name and
your-azure-region é a região do Azure em que o modelo é implantado (por exemplo, eastus2). - Dependendo da sua preferência de autenticação e implantação de modelos, você precisará de uma chave para autenticação no serviço ou de credenciais do Microsoft Entra ID. A chave é uma cadeia de caracteres de 32 caracteres.
Como trabalhar com conclusões de chat
Nesta seção, você usa a API de inferência de modelo da IA do Azure com um modelo de conclusões para chat.
Dica
A API de inferência de modelo da IA do Azure permite que você converse com a maioria dos modelos implantados no portal do Azure AI Foundry com o mesmo código e estrutura, incluindo modelos de chat Jais.
Criar um cliente para consumir o modelo
Primeiro, crie o cliente para consumir o modelo. O código a seguir usa um URL de ponto de extremidade e uma chave que são armazenados em variáveis de ambiente.
Como obter os recursos do modelo
A rota /info
retorna informações sobre o modelo que é 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": "jais-30b-chat",
"model_type": "chat-completions",
"model_provider_name": "G42"
}
Como criar uma solicitação de conclusão de chat
O exemplo a seguir mostra como criar uma solicitação básica de conclusões 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 é semelhante ao seguinte e é possível observar as estatísticas de uso do modelo:
{
"id": "0a1234b5de6789f01gh2i345j6789klm",
"object": "chat.completion",
"created": 1718726686,
"model": "jais-30b-chat",
"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 seção usage
na resposta para conferir o número de tokens usados para a solicitação, o número total de tokens gerados e o número de tokens usados para a conclusão.
Como transmitir conteúdos
Por padrão, a API de conclusões retorna todo o conteúdo gerado em uma única resposta. Ao gerar conclusões longas, você pode precisar aguardar a resposta por muitos segundos.
É possível transmitir o conteúdo para recebê-lo à medida que ele é gerado. Ao transmitir o conteúdo, é possível começar a processar a conclusão à medida que ele se torna disponível. Esse modo retorna um objeto que transmite de volta a resposta na forma de eventos somente de dados enviados pelo servidor. 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
}
É possível observar como o streaming gera conteúdos:
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "jais-30b-chat",
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"content": ""
},
"finish_reason": null,
"logprobs": null
}
]
}
A última mensagem no fluxo tem finish_reason
definido, o que indica o motivo da interrupção do processo de geração.
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "jais-30b-chat",
"choices": [
{
"index": 0,
"delta": {
"content": ""
},
"finish_reason": "stop",
"logprobs": null
}
],
"usage": {
"prompt_tokens": 19,
"total_tokens": 91,
"completion_tokens": 72
}
}
Como explorar outros parâmetros com suporte do cliente de inferência
Confira outros parâmetros que podem ser especificados no cliente de inferência. Para obter uma lista completa de todos os parâmetros com suporte e da documentação correspondente, consulte a Referência da API de inferência de modelo da 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": "jais-30b-chat",
"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 do Jais não dão suporte à 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 há garantia de que essas saídas estejam em formato JSON válido.
Para transmitir um parâmetro que não está na lista de parâmetros com suporte, faça a transmissão para o modelo subjacente usando parâmetros extras. Consulte Transmitir parâmetros extras ao modelo.
Como transmitir parâmetros extras ao modelo
A API de inferência de modelo da IA do Azure permite transmitir parâmetros extras ao modelo. O exemplo de código a seguir mostra como transmitir o parâmetro extra logprobs
ao modelo.
Antes de transmitir parâmetros extras à API de inferência de modelo da IA do Azure, verifique se o modelo dá suporte a esses parâmetros. Quando a solicitação é feita ao modelo subjacente, o cabeçalho extra-parameters
é transmitido a ele com o valor pass-through
. Esse valor indica que o ponto de extremidade deve transmitir os parâmetros extras ao modelo. O uso de parâmetros extras com o modelo não garante que ele possa realmente lidar com eles. Consulte a documentação do modelo para entender quais parâmetros extras são aceitos.
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
}
Como aplicar a segurança de conteúdo
A API de inferência de modelo da IA do Azure dá suporte à Segurança de Conteúdo de IA do Azure. Ao usar implantações com a Segurança de Conteúdo de IA do Azure habilitada, as entradas e saídas são transmitidas por um conjunto de modelos de classificação que detectam e impedem a saída de usar conteúdos nocivos. O sistema de filtragem de conteúdo (versão prévia) detecta e toma medidas em categorias específicas de conteúdo potencialmente prejudicial tanto em prompts de entrada quanto em conclusões de saída.
O exemplo a seguir mostra como lidar com eventos quando o modelo detecta conteúdo nocivo na solicitação de entrada e a Segurança de 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
}
}
Dica
Para saber como definir e controlar as configurações da Segurança de Conteúdo de IA do Azure, consulte a Documentação da Segurança de Conteúdo de IA do Azure.
Mais exemplos de inferência
Para obter mais exemplos de como usar modelos do Jais, consulte os seguintes exemplos e tutoriais:
Descrição | Idioma | Amostra |
---|---|---|
Pacote de inferência de IA do Azure para C# | C# | Link |
Pacote de inferência de IA do Azure para JavaScript | JavaScript | Link |
Pacote de inferência da IA do Azure para Python | Python | Link |
Considerações sobre custo e cota dos modelos do Jais implantados como pontos de extremidade de API sem servidor
A cota é gerenciada por implantação. Cada implantação tem um limite de taxa de 200.000 tokens por minuto e 1.000 solicitações de API por minuto. No entanto, atualmente, limitamos uma implantação por modelo e projeto. Entre em contato com o Suporte do Microsoft Azure se os limites de taxa atuais não forem suficientes para seus cenários.
Os modelos do Jais implantados como uma API sem servidor são oferecidos pelo G42 por meio do Azure Marketplace e integrados ao Azure AI Foundry para uso. Você pode encontrar preços do Azure Marketplace ao implantar o modelo.
Sempre que um projeto se inscreve em determinada oferta do Azure Marketplace, um recurso é criado para acompanhar os custos associados ao consumo dele. O mesmo recurso é usado para acompanhar os custos associados à inferência. No entanto, vários medidores estão disponíveis para acompanhar cada cenário de modo independente.
Para obter mais informações sobre como acompanhar os custos, consulte Monitorar os custos dos modelos oferecidos por meio do Azure Marketplace.
Conteúdo relacionado
- API de Inferência do Modelo de IA do Azure
- Como implantar modelos como APIs sem servidor
- Consumir pontos de extremidade de API sem servidor a partir de um projeto ou hub do Azure AI Foundry diferente
- Disponibilidade de região para modelos em pontos de extremidade de API sem servidor
- Como planejar e gerenciar custos (marketplace)