Partilhar via


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:

  1. Entre no Azure AI Studio.
  2. Se ainda não estiver no seu projeto, selecione-o.
  3. Selecione Catálogo de modelos no painel de navegação esquerdo.
  1. Procure e selecione um modelo AI21 como AI21 Jamba 1.5 Large ou AI21 Jamba 1.5 Mini AI21 Jamba Instruct para abrir sua página Detalhes.

  2. Selecione Implantar para abrir uma janela de implantação de API sem servidor para o modelo.

  3. Como alternativa, você pode iniciar uma implantação iniciando a partir da página Modelos + pontos de extremidade no AI Studio.

    1. No painel de navegação esquerdo do seu projeto, selecione Meus ativos>Modelos + pontos de extremidade.
    2. Selecione + Implantar modelo>Implantar modelo base.
    3. Procure e selecione um modelo AI21 como AI21 Jamba 1.5 Large ou AI21 Jamba 1.5 Mini 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.
  4. 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 .

  5. No assistente de implantação, selecione o link para Termos do Azure Marketplace para saber mais sobre os termos de uso.

  6. Selecione a guia Preços e termos para saber mais sobre os preços do modelo selecionado.

  7. 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.

  8. 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.

  9. 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.

  10. Selecione Implementar. Aguarde até que a implantação esteja pronta e você seja redirecionado para a página Implantações.

  11. 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 .

  12. 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:

  1. No painel de navegação esquerdo do seu projeto, selecione Meus ativos>Modelos + pontos de extremidade.

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

  3. Copie o URI 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 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 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-1.5-large ou jamba-1.5-minijamba-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 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.

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 documento
  • metadata (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 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 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.