Partilhar via


Como implantar o modelo Jamba-Instruct do AI21 com o Azure AI Studio

Importante

Alguns dos recursos descritos neste artigo podem estar disponíveis apenas na visualização. 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 o modelo Jamba-Instruct do AI21 como uma API sem servidor com cobrança pré-paga.

O modelo Jamba Instruct é 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. O modelo Jamba Instruct é construído para uso comercial confiável em relação à qualidade e desempenho.

Implantar o modelo Jamba Instruct 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-Instruct 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 Instruct implantado como uma API sem servidor, explore nossas integrações com LangChain, LiteLLM, OpenAI e a API do Azure.

Gorjeta

Veja nossos anúncios do modelo Jamba-Instruct do AI21 disponível 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.

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 hub AI Studio. A oferta de implantação de modelo de API sem servidor para o Jamba Instruct só está disponível com hubs 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.

  • Um projeto do Azure AI Studio.

  • 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 do AI21-Jamba-Instruct. Para criar uma implantação:

  1. Entre no Azure AI Studio.
  2. Selecione Catálogo de modelos na barra lateral esquerda.
  3. Procure e selecione AI21-Jamba-Instruct para abrir sua página Detalhes.
  4. Selecione Implantar para abrir uma janela de implantação de API sem servidor para o modelo.
  5. Como alternativa, você pode iniciar uma implantação iniciando a partir do seu projeto no AI Studio.
    1. Na barra lateral esquerda do seu projeto, selecione Implantações de componentes>.
    2. Selecione + Criar implantação.
    3. Procure e selecione AI21-Jamba-Instruct. para abrir a página Detalhes do modelo.
    4. Selecione Confirmar para abrir uma janela de implantação de API sem servidor para o modelo.
  6. Selecione o projeto no qual você deseja implantar seu modelo. Para implantar o modelo AI21-Jamba-Instruct, seu projeto deve estar em uma das regiões listadas na seção Pré-requisitos .
  7. No assistente de implantação, selecione o link para Termos do Azure Marketplace para saber mais sobre os termos de uso.
  8. Selecione a guia Preços e termos para saber mais sobre os preços do modelo selecionado.
  9. 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.
  10. 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.
  11. 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.
  12. Selecione Implementar. Aguarde até que a implantação esteja pronta e você seja redirecionado para a página Implantações.
  13. Retorne à página Implantações, selecione a implantação e anote a URL 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 .
  14. Você sempre pode encontrar os detalhes, a URL e as chaves de acesso do ponto de extremidade navegando até a página de visão geral do projeto. Em seguida, na barra lateral esquerda do seu projeto, selecione Implantações de componentes>.

Para saber mais sobre o faturamento do modelo AI21-Jamba-Instruct implantado como uma API sem servidor com faturamento baseado em token pré-pago, consulte Considerações de custo e cota para Jamba Instruct implantado como uma API sem servidor.

Consuma o Jamba Instruct como uma API sem servidor

Você pode consumir os modelos Jamba Instruct da seguinte maneira:

  1. Na página Visão geral do projeto, vá para a barra lateral esquerda e selecione Implantações de componentes>.

  2. Localize e selecione a implantação que você criou.

  3. Copie o URL de destino e o valor da chave .

  4. 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 Jamba Instruct implantado como uma API sem servidor

Os modelos Jamba Instruct 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 o Jamba Instruct é ajustado 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 e assistant 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-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.

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 as system instruções dadas no prompt têm precedência sobre as system 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.

Exemplo de solicitação

Exemplo de volta única

{
    "model": "jamba-instruct",
    "messages": [
    {
      "role":"user",
      "content":"Who was the first emperor of rome?"}
  ],
    "temperature": 0.8,
    "max_tokens": 512
}

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.
created integer O carimbo de data/hora Unix (em segundos) de quando a conclusão foi criada.
object string O tipo de objeto, que é sempre chat.completion.
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 messagede .
- Em uma resposta de streaming, ele é chamado deltade , 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 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 o Jamba Instruct implantado como uma API sem servidor

O modelo Jamba Instruct é implantado como uma API sem servidor e é oferecido pelo AI21 por meio do Azure Marketplace e integrado 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 deteta e age 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.