API de Inferência de Modelo de IA do Azure | Estúdio de IA do Azure

Importante

Alguns dos recursos descritos nesse artigo podem estar disponíveis apenas na versão prévia. 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.

A Inferência do Modelo de IA do Azure é uma API que expõe um conjunto comum de recursos para modelos fundamentais e que pode ser usada pelos desenvolvedores para consumir previsões de um conjunto diversificado de modelos de maneira uniforme e consistente. Os desenvolvedores pode conversar com diferentes modelos implantados no Estúdio de IA do Azure sem alterar o código subjacente que estão usando.

Benefícios

Modelos fundamentais, como modelos de linguagem, realmente tiveram avanços notáveis nos últimos anos. Esses avanços revolucionaram vários campos, incluindo o processamento de linguagem natural e a pesquisa visual computacional, e habilitaram aplicativos como chatbots, assistentes virtuais e serviços de tradução de idiomas.

Embora os modelos fundamentais se destaquem em domínios específicos, eles não têm um conjunto uniforme de funcionalidades. Alguns modelos são melhores em tarefas específicas e, mesmo na mesma tarefa, alguns modelos podem abordar o problema de uma forma, enquanto outros abordam de outra forma. Os desenvolvedores podem se beneficiar dessa diversidade usando o modelo certo para o trabalho certo, permitindo que eles:

  • Melhorem o desempenho em uma tarefa downstream específica.
  • Usem modelos mais eficientes para tarefas mais simples.
  • Usem modelos menores que podem ser executados mais rapidamente em tarefas específicas.
  • Redijam vários modelos para desenvolver experiências inteligentes.

Ter uma maneira uniforme de consumir modelos fundamentais permite que os desenvolvedores realizem todos esses benefícios sem sacrificarem a portabilidade ou alterarem o código subjacente.

Disponibilidade

A API de Inferência do Modelo de IA do Azure está disponível nos seguintes modelos:

Modelos implantados para pontos de extremidade de API sem servidor:

Modelos implantados para inferência gerenciada:

A API é compatível com implantações de modelo do OpenAI do Azure.

Observação

A API de inferência de modelo de IA do Azure está disponível na inferência gerenciada (Pontos de extremidade online gerenciados) para modelos implantados após 24 de junho de 2024. Para usufruir da API, reimplante seu ponto de extremidade se o modelo tiver sido implantado antes dessa data.

Funcionalidades

A seção a seguir descreve alguns dos recursos expostos pela API. Para obter uma especificação completa da API, veja a seção de referência.

Modalidades

A API indica como os desenvolvedores podem consumir previsões para as seguintes modalidades:

Suporte ao SDK de inferência

Você pode usar clientes de inferência simplificados no idioma de sua escolha para consumir previsões de modelos que executam a API de inferência de modelos de IA do Azure.

Instale o pacote azure-ai-inference usando seu gerenciador de pacotes, como o pip:

pip install azure-ai-inference

Em seguida, você poderá usar o pacote para consumir o modelo. O exemplo a seguir mostra como criar um cliente para consumir conclusões de chat:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

model = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

Se você estiver usando um ponto de extremidade com suporte para o Entra ID, poderá criar o cliente da seguinte maneira:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import AzureDefaultCredential

model = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureDefaultCredential(),
)

Explore nossos exemplos e leia a documentação de referência da API para começar.

Extensibilidade

A API de Inferência do Modelo de IA do Azure especifica um conjunto de modalidades e parâmetros aos quais os modelos podem assinar. No entanto, alguns modelos podem ter outros recursos diferentes dos que a API indica. Nesses casos, a API permite que o desenvolvedor os passe como parâmetros extras no conteúdo.

Ao definir um cabeçalho extra-parameters: pass-through, a API tentará passar qualquer parâmetro desconhecido diretamente para o modelo subjacente. Se o modelo puder lidar com esse parâmetro, a solicitação será concluída.

O exemplo a seguir mostra uma solicitação que transmite o parâmetro safe_prompt com suporte de Mistral-Large, que não é especificado na API de Inferência do Modelo de IA do Azure.

from azure.ai.inference.models import SystemMessage, UserMessage

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

print(response.choices[0].message.content)

Dica

Quando você usa o SDK de Inferência de IA do Azure, o uso de model_extras configura a solicitação com extra-parameters: pass-through automaticamente.

Observação

O valor padrão para extra-parameters é error, que retorna um erro se um parâmetro extra for indicado no payload. Como alternativa, você pode definir extra-parameters: drop para remover qualquer parâmetro desconhecido na solicitação. Use essa funcionalidade caso você esteja enviando solicitações com parâmetros extras que você sabe que o modelo não oferecerá suporte, mas você deseja que a solicitação seja concluída mesmo assim. Um exemplo típico disso é indicar o parâmetro seed.

Modelos com um conjunto diferente de funcionalidades

A API de Inferência do Modelo de IA do Azure indica um conjunto geral de funcionalidades, mas cada um dos modelos pode decidir implementá-los ou não. Um erro específico é retornado nos casos em que o modelo não pode dar suporte a um parâmetro específico.

O exemplo a seguir mostra a resposta de uma solicitação de conclusão de chat indicando o parâmetro reponse_format e solicitando uma resposta no formato JSON. No exemplo, como o modelo não dá suporte a essa funcionalidade, um erro 422 é retornado ao usuário.

import json
from azure.ai.inference.models import SystemMessage, UserMessage, ChatCompletionsResponseFormatJSON
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are a helpful assistant."),
            UserMessage(content="How many languages are in the world?"),
        ],
        response_format=ChatCompletionsResponseFormatJSON()
    )
except HttpResponseError as ex:
    if ex.status_code == 422:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "detail" in response:
            for offending in response["detail"]:
                param = ".".join(offending["loc"])
                value = offending["input"]
                print(
                    f"Looks like the model doesn't support the parameter '{param}' with value '{value}'"
                )
    else:
        raise ex

Dica

Você pode inspecionar a propriedade details.loc para entender o local do parâmetro incorreto e details.input para ver o valor que foi passado na solicitação.

Segurança de conteúdo

A API de inferência do modelo de IA do Azure dá suporte de Segurança de Conteúdo de IA do Azure. Ao usar as implantações com a Segurança de Conteúdo de IA do Azure ativada, as entradas e saídas passam por um conjunto de modelos de classificação destinados a detectarem e impedirem a saída de conteúdo prejudicial. O sistema de filtragem de conteúdo detecta e executa ações em categorias específicas de conteúdo potencialmente prejudicial em prompts de entrada e conclusões de saída.

O exemplo a seguir mostra a resposta de uma solicitação de conclusão de chat que disparou a segurança do conteúdo.

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

try:
    response = model.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 = json.loads(ex.response._content.decode('utf-8'))
        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 ex
    else:
        raise ex

Introdução

Atualmente, a API de inferência de modelos de IA do Azure tem suporte em determinados modelos implantados como pontos de extremidade de API sem servidor e pontos de extremidade online gerenciados. Implante qualquer um dos modelos com suporte e use exatamente o mesmo código para consumir suas previsões.

A biblioteca de clientes azure-ai-inference faz inferência, incluindo conclusões de chat, para modelos de IA implantados pelo Estúdio de IA do Azure e pelo Estúdio do Azure Machine Learning. Ele dá suporte a pontos de extremidade de API sem servidor e pontos de extremidade de computação gerenciada (anteriormente conhecidos como Pontos de Extremidade Online Gerenciados).

Explore nossos exemplos e leia a documentação de referência da API para começar.