Como implantar os modelos da família Jamba do AI21 com o Azure AI Studio
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á a usar o Azure AI Studio para implantar os modelos da família Jamba do AI21 como uma API sem servidor com cobrança pré-paga.
Os modelos da família Jamba são o modelo de linguagem grande (LLM) baseado em Mamba de nível de produção do AI21, que aproveita a arquitetura híbrida Mamba-Transformer do AI21. É uma versão ajustada às instruções do transformador híbrido modelo de espaço de estado estruturado (SSM) modelo Jamba do AI21. Os modelos da família Jamba são construídos para uso comercial confiável em relação à qualidade e desempenho.
Veja nossos anúncios dos modelos da família Jamba do AI21 disponíveis agora no Catálogo de Modelos de IA do Azure por meio do blog do AI21 e do Blog da Comunidade de Tecnologia 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.
Implante os modelos da família Jamba como uma API sem servidor
Certos modelos no catálogo de modelos podem ser implantados como uma API sem servidor com faturamento pré-pago, fornecendo uma maneira de consumi-los como uma API sem hospedá-los em sua assinatura, mantendo a segurança corporativa e a conformidade de que as organizações precisam. Essa opção de implantação não exige cota da sua assinatura.
O modelo AI21-Jamba 1.5 Large implantado como uma API sem servidor com faturamento pré-pago é oferecido pelo AI21 por meio do Microsoft Azure Marketplace. O AI21 pode alterar ou atualizar os termos de uso e preços deste modelo.
Para começar a usar o Jamba 1.5 large implantado como uma API sem servidor, explore nossas integrações com LangChain, LiteLLM, OpenAI e a API do Azure.
Pré-requisitos
Uma subscrição do Azure com um método de pagamento válido. As subscrições gratuitas ou de avaliação do Azure não funcionarão. Se você não tiver uma assinatura do Azure, crie uma conta paga do Azure para começar.
Um projeto do Azure AI Studio. A oferta de implantação de modelo de API sem servidor para modelos da família Jamba só está disponível com projetos criados nestas regiões:
- E.U.A. Leste
- E.U.A. Leste 2
- E.U.A. Centro-Norte
- E.U.A. Centro-Sul
- E.U.A. Oeste
- EUA Oeste 3
- Suécia Central
Para obter uma lista das regiões disponíveis para cada um dos modelos que suportam implementações de ponto final de API sem servidor, consulte Disponibilidade regional para modelos em pontos finais de API sem servidor.
Os controles de acesso baseados em função do Azure (Azure RBAC) são usados para conceder acesso a operações no Azure AI Studio. Para executar os passos neste artigo, sua conta de utilizador deve ter atribuída a função de proprietário ou contribuinte para a subscrição do Azure. Em alternativa, pode ser atribuída à sua conta uma função personalizada com as seguintes permissões:
Na subscrição do Azure — para subscrever o projeto AI Studio na oferta do Azure Marketplace, uma vez para cada projeto, por oferta:
Microsoft.MarketplaceOrdering/agreements/offers/plans/read
Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
Microsoft.SaaS/register/action
No grupo de recursos — para criar e utilizar o recurso SaaS:
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
No projeto AI Studio — para implantar pontos de extremidade (a função Desenvolvedor de IA do Azure já contém essas permissões):
Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*
Para obter mais informações sobre permissões, consulte Controle de acesso baseado em função no Azure AI Studio.
Criar uma nova implantação
Essas etapas demonstram a implantação de AI21 Jamba 1.5 Large
ou AI21 Jamba 1.5 Mini
modelos. Para criar uma implantação:
- Entre no Azure AI Studio.
- Se ainda não estiver no seu projeto, selecione-o.
- Selecione Catálogo de modelos no painel de navegação esquerdo.
Procure e selecione um modelo AI21 como
AI21 Jamba 1.5 Large
ouAI21 Jamba 1.5 Mini
AI21 Jamba Instruct
para abrir sua página Detalhes.Selecione Implantar para abrir uma janela de implantação de API sem servidor para o modelo.
Como alternativa, você pode iniciar uma implantação iniciando a partir da página Modelos + pontos de extremidade no AI Studio.
- No painel de navegação esquerdo do seu projeto, selecione Meus ativos>Modelos + pontos de extremidade.
- Selecione + Implantar modelo>Implantar modelo base.
- Procure e selecione um modelo AI21 como
AI21 Jamba 1.5 Large
ouAI21 Jamba 1.5 Mini
AI21 Jamba Instruct
para abrir a página Detalhes do modelo. - Selecione Confirmar para abrir uma janela de implantação de API sem servidor para o modelo.
Seu projeto atual é especificado para a implantação. Para implantar com êxito os modelos da família AI21-Jamba, seu projeto deve estar em uma das regiões listadas na seção Pré-requisitos .
No assistente de implantação, selecione o link para Termos do Azure Marketplace para saber mais sobre os termos de uso.
Selecione a guia Preços e termos para saber mais sobre os preços do modelo selecionado.
Selecione o botão Inscrever-se e Implantar . Se esta é a primeira vez que você implanta o modelo no projeto, você tem que inscrever seu projeto para a oferta específica. Esta etapa requer que sua conta tenha as permissões de assinatura do Azure e as permissões de grupo de recursos listadas nos Pré-requisitos. Cada projeto tem a sua própria subscrição para a oferta específica do Azure Marketplace do modelo, que lhe permite controlar e monitorizar os gastos. Atualmente, você pode ter apenas uma implantação para cada modelo dentro de um projeto.
Depois de inscrever o projeto para a oferta específica do Azure Marketplace, as implantações subsequentes da mesma oferta no mesmo projeto não exigem assinatura novamente. Se esse cenário se aplicar a você, há uma opção Continuar a implantar para selecionar.
Dê um nome à implantação. Esse nome se torna parte da URL da API de implantação. Essa URL deve ser exclusiva em cada região do Azure.
Selecione Implementar. Aguarde até que a implantação esteja pronta e você seja redirecionado para a página Implantações.
Retorne à página Implantações, selecione a implantação e anote o URI de destino do ponto de extremidade e a chave secreta. Para obter mais informações sobre como usar as APIs, consulte a seção Referência .
-
Você sempre pode encontrar os detalhes, a URL e as teclas de acesso do ponto de extremidade navegando até o Centro de gerenciamento do seu projeto no painel de navegação esquerdo. Em seguida, selecione Modelos + pontos de extremidade.
Para saber mais sobre o faturamento para os modelos da família AI21-Jamba implantados como uma API sem servidor com faturamento baseado em token pré-pago, consulte Considerações de custo e cota para o Jamba Instruct implantado como uma API sem servidor.
Consuma modelos da família Jamba como uma API sem servidor
Você pode consumir os modelos da família Jamba da seguinte maneira:
No painel de navegação esquerdo do seu projeto, selecione Meus ativos>Modelos + pontos de extremidade.
Localize e selecione a implantação que você criou.
Copie o URI de destino e o valor da chave .
Faça uma solicitação de API.
Para obter mais informações sobre como usar as APIs, consulte a seção de referência .
Referência para modelos da família Jamba implantados como uma API sem servidor
Os modelos da família Jamba aceitam ambas as APIs:
- A API de Inferência de Modelo de IA do Azure na rota
/chat/completions
para bate-papo de várias voltas ou resposta a perguntas de turno único. Esta API é suportada porque os modelos da família Jamba são ajustados para a conclusão do chat. - Cliente do Azure do AI21. Para obter mais informações sobre o ponto de extremidade REST que está sendo chamado, visite a documentação REST do AI21.
API de inferência de modelo de IA do Azure
O esquema da API de inferência de modelo de IA do Azure pode ser encontrado na referência para o artigo Conclusão de bate-papo e uma especificação OpenAPI pode ser obtida do próprio ponto de extremidade.
O bate-papo de turno único e o bate-papo de turno múltiplo têm o mesmo formato de solicitação e resposta, exceto que a resposta a perguntas (turno único) envolve apenas uma única mensagem de usuário na solicitação, enquanto o bate-papo de turno múltiplo exige que você envie todo o histórico de mensagens de bate-papo em cada solicitação.
Em um bate-papo de várias voltas, o histórico de mensagens tem os seguintes atributos:
- Inclui todas as mensagens do utilizador e do modelo, ordenadas da mais antiga para a mais recente.
- As mensagens alternam entre
user
eassistant
as mensagens de função - Opcionalmente, o histórico de mensagens começa com uma mensagem do sistema para fornecer contexto.
O pseudocódigo a seguir é um exemplo da pilha de mensagens para a quarta chamada em uma solicitação de chat que inclui uma mensagem inicial do sistema.
[
{"role": "system", "message": "Some contextual information here"},
{"role": "user", "message": "User message 1"},
{"role": "assistant", "message": "System response 1"},
{"role": "user", "message": "User message 2"},
{"role": "assistant"; "message": "System response 2"},
{"role": "user", "message": "User message 3"},
{"role": "assistant", "message": "System response 3"},
{"role": "user", "message": "User message 4"}
]
Cliente Azure do AI21
Use o método POST
para enviar a solicitação para a /v1/chat/completions
rota:
Pedir
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
Esquema de solicitação
Payload é uma cadeia de caracteres formatada JSON que contém os seguintes parâmetros:
Chave | Type | Obrigatório/Padrão | Valores permitidos | Description |
---|---|---|---|---|
model |
string |
Y | Deve ser jamba-1.5-large ou jamba-1.5-mini jamba-instruct |
|
messages |
list[object] |
Y | Uma lista de objetos, um por mensagem, do mais antigo ao mais recente. A mensagem mais antiga pode ser a função system . Todas as mensagens posteriores devem alternar entre as funções de usuário e assistente. Consulte a definição de objeto de mensagem abaixo. |
|
max_tokens |
integer |
N 4096 |
0 – 4096 | O número máximo de tokens a serem permitidos para cada mensagem de resposta gerada. Normalmente, a melhor maneira de limitar o comprimento da saída é fornecendo um limite de comprimento no prompt do sistema (por exemplo, "limite suas respostas a três frases") |
temperature |
float |
N 1 |
0.0 – 2.0 | Quanta variação fornecer em cada resposta. Definir esse valor como 0 garante a mesma resposta para a mesma pergunta sempre. Definir um valor mais alto incentiva mais variação. Modifica a distribuição a partir da qual os tokens são amostrados. Recomendamos alterar este ou top_p , mas não ambos. |
top_p |
float |
N 1 |
<0 valor<=1,0 | Limite o pool de tokens seguintes em cada etapa ao percentil N superior de tokens possíveis, onde 1.0 significa o pool de todos os tokens possíveis e 0.01 significa o pool de apenas os próximos tokens mais prováveis. |
stop |
string OU list[string] |
N |
"" | String ou lista de strings contendo a(s) palavra(s) onde a API deve parar de gerar saída. Novas linhas são permitidas como "\n". O texto retornado não conterá a sequência de parada. |
n |
integer |
N 1 |
1 – 16 | Quantas respostas gerar para cada prompt. Com o Azure AI Studio's Playground, n=1 enquanto trabalhamos no Playground de várias respostas. |
stream |
boolean |
N False |
True OU False |
Se o streaming deve ser habilitado. Se verdadeiro, os resultados são retornados um token de cada vez. Se definido como true, n deve ser 1, que é definido automaticamente. |
tools |
array[tool] |
N | "" | Uma lista do tools modelo pode chamar. Atualmente, apenas funções são suportadas como ferramenta. Use isso para fornecer uma lista de funções para as quais o modelo pode gerar entradas JSON. Um máximo de 128 funções são suportadas. |
response_format |
object |
N null |
"" | Configuração para { "type": "json_object" } habilitar o modo JSON, que garante que a mensagem gerada pelo modelo seja JSON válida. |
documents |
array[document] |
N | "" | Uma lista de relevantes documents no modelo pode fundamentar suas respostas, se o usuário o disser explicitamente no prompt. Atua essencialmente como uma extensão para o prompt, com a capacidade de adicionar metadados. Cada documento é um dicionário. |
O messages
objeto tem os seguintes campos:
role
: [string, required] O autor ou a finalidade da mensagem. Um dos seguintes valores:user
: Entrada fornecida pelo usuário. Quaisquer instruções dadas aqui que entrem em conflito com assystem
instruções dadas no prompt têm precedência sobre assystem
instruções do prompt.assistant
: Uma resposta gerada pelo modelo.system
: Instruções iniciais para fornecer orientação geral sobre o tom e a voz da mensagem gerada. Uma mensagem inicial do sistema é opcional, mas recomendada para fornecer orientação sobre o tom do bate-papo. Por exemplo: "Você é um chatbot útil com formação em ciências da terra e um charmoso sotaque francês."
content
: [string, required] O conteúdo da mensagem.
O tool
objeto tem os seguintes campos:
type
(obrigatório; str) - O tipo da ferramenta. Atualmente, apenas "função" é suportada.function
(obrigatório; objeto) - Os detalhes da função.name
(required; str) - O nome da função a ser chamada.description
(opcional; str) - Uma descrição do que a função faz.parameters
(opcional; objeto) - Os parâmetros que a função aceita, descritos como um objeto de esquema JSON.
O document
objeto tem os seguintes campos:
id
(opcional; str) - identificador único. serão vinculados em citações. até 128 caracteres.content
(obrigatório; str) - o conteúdo do documentometadata
(opcional; matriz de Metadados)key
(obrigatório; str) - tipo de metadados, como 'autor', 'data', 'url', etc. Devem ser coisas que o modelo entende.value
(required; str) - valor dos metadados
Exemplo de solicitação
Exemplo de turno único Jamba 1.5 grande e Jamba 1.5 mini
{
"model":"jamba-1.5-large", <jamba-1.5-large|jamba-1.5-mini>
"messages":[
{
"role":"user",
"content":"I need help with your product. Can you please assist?"
}
],
"temperature":1,
"top_p":1,
"n":1,
"stop":"\n",
"stream":false
}
Exemplo de turno único Jamba 1.5 grande e Jamba 1.5 mini com documentos
{
"model":"jamba-1.5-large", <jamba-1.5-large|jamba-1.5-mini>
"messages":[
{
"role":"system",
"content":'''<documents>
# Documents
You can use the following documents for reference:
## Document ID: 0
Text: Harry Potter is a series of seven fantasy novels written by British author J. K. Rowling.
## Document ID: 1
Text: The Great Gatsby is a novel by American writer F. Scott Fitzgerald.
</documents>'''},
{
"role":"user",
"content":"Who wrote Harry Potter?"
}
],
"temperature":0.4,
"top_p":1,
"n":1,
"stop":"\n",
"stream":false
}
Exemplo de bate-papo (quarta solicitação contendo a terceira resposta do usuário)
{
"model": "jamba-instruct",
"messages": [
{"role": "system",
"content": "You are a helpful genie just released from a bottle. You start the conversation with 'Thank you for freeing me! I grant you one wish.'"},
{"role":"user",
"content":"I want a new car"},
{"role":"assistant",
"content":"🚗 Great choice, I can definitely help you with that! Before I grant your wish, can you tell me what kind of car you're looking for?"},
{"role":"user",
"content":"A corvette"},
{"role":"assistant",
"content":"Great choice! What color and year?"},
{"role":"user",
"content":"1963 black split window Corvette"}
],
"n":3
}
Esquema de resposta
A resposta depende ligeiramente se o resultado é transmitido ou não.
Em um resultado não transmitido, todas as respostas são entregues juntas em uma única resposta, que também inclui uma usage
propriedade.
Em um resultado transmitido,
- Cada resposta inclui um único token no
choices
campo. - A
choices
estrutura do objeto é diferente. - Apenas a última resposta inclui um
usage
objeto. - Toda a resposta é encapsulada em um
data
objeto. - O objeto de resposta final é
data: [DONE]
.
A carga útil de resposta é um dicionário com os seguintes campos.
Chave | Tipo | Description |
---|---|---|
id |
string |
Um identificador exclusivo para a solicitação. |
model |
string |
Nome do modelo utilizado. |
choices |
list[object ] |
O texto de resposta gerado pelo modelo. Para uma resposta sem streaming, é uma lista com n itens. Para uma resposta de streaming, é um único objeto que contém um único token. Veja a descrição do objeto abaixo. |
usage |
object |
Estatísticas de utilização do pedido de conclusão. Veja mais detalhes abaixo. |
O choices
objeto response contém a resposta gerada pelo modelo. O objeto tem os seguintes campos:
Chave | Tipo | Description |
---|---|---|
index |
integer |
Índice baseado em zero da mensagem na lista de mensagens. Pode não corresponder à posição na lista. Para mensagens transmitidas, isso é sempre zero. |
message OU delta |
object |
A mensagem gerada (ou token em uma resposta de streaming). Mesmo tipo de objeto descrito na solicitação com duas alterações: - Em uma resposta sem streaming, esse objeto é chamado message de . - Em uma resposta de streaming, ele é chamado delta de , e contém um ou message mas role nunca ambos. |
finish_reason |
string |
A razão pela qual o modelo parou de gerar tokens: - stop : O modelo atingiu um ponto de paragem natural, ou uma sequência de paragem fornecida. - length : O número máximo de tokens foi atingido. - content_filter : A resposta gerada violou uma política de IA responsável. - null : Apenas streaming. Em uma resposta de streaming, todas as respostas, exceto a última, serão null . |
O message
objeto response contém a resposta gerada pelo modelo. O objeto tem os seguintes campos:
Chave | Tipo | Description |
---|---|---|
role |
string |
O papel do autor desta mensagem. |
content |
string or null |
O conteúdo da mensagem. |
tool_calls |
array or null |
As chamadas da ferramenta geradas pelo modelo. |
O tool_calls
objeto response contém a resposta gerada pelo modelo. O objeto tem os seguintes campos:
Chave | Tipo | Description |
---|---|---|
id |
string |
O ID da chamada da ferramenta. |
type |
string |
O tipo da ferramenta. Atualmente, apenas function é suportado. |
function |
object |
A função que o modelo chamou. |
O function
objeto response contém a resposta gerada pelo modelo. O objeto tem os seguintes campos:
Chave | Tipo | Description |
---|---|---|
name |
string |
O nome da função a ser chamada. |
arguments |
string |
Os argumentos com os quais chamar a função, conforme gerado pelo modelo no formato JSON. |
O usage
objeto de resposta contém os seguintes campos.
Chave | Type | valor |
---|---|---|
prompt_tokens |
integer |
Número de tokens no prompt. Observe que a contagem de tokens de prompt inclui tokens extras adicionados pelo sistema para formatar a lista de prompts em uma única cadeia de caracteres, conforme exigido pelo modelo. O número de tokens extras é normalmente proporcional ao número de mensagens no thread e deve ser relativamente pequeno. |
completion_tokens |
integer |
Número de tokens gerados na conclusão. |
total_tokens |
integer |
Total de tokens. |
Exemplo de resposta sem streaming
{
"id":"cmpl-524c73beb8714d878e18c3b5abd09f2a",
"choices":[
{
"index":0,
"message":{
"role":"assistant",
"content":"The human nose can detect over 1 trillion different scents, making it one of the most sensitive smell organs in the animal kingdom."
},
"finishReason":"stop"
}
],
"created": 1717487036,
"usage":{
"promptTokens":116,
"completionTokens":30,
"totalTokens":146
}
}
Exemplo de resposta de streaming
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"role": "assistant"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": ""}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": " The"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": " first e"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "mpe"}, "created": 1717487336, "finish_reason": null}]}
... 115 responses omitted for sanity ...
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "me"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "."}, "created": 1717487336,"finish_reason": "stop"}], "usage": {"prompt_tokens": 107, "completion_tokens": 121, "total_tokens": 228}}
data: [DONE]
Custo e quotas
Considerações sobre custo e cota para modelos da família Jamba implantados como uma API sem servidor
Os modelos da família Jamba são implantados como uma API sem servidor e são oferecidos pelo AI21 por meio do Azure Marketplace e integrados ao estúdio de IA do Azure para uso. Pode obter os preços do Azure Marketplace quando implementar ou otimizar os modelos.
Sempre que uma área de trabalho subscreve uma determinada oferta de modelo 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 e à otimização; 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.
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.
Filtragem de conteúdos
Os modelos implantados como uma API sem servidor são protegidos pela segurança de conteúdo da IA do Azure. Com a segurança de conteúdo de IA do Azure habilitada, tanto o prompt quanto a conclusão 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. Saiba mais sobre a Segurança de Conteúdo do Azure AI.