API de Inferência de Modelo de IA do Azure | Estúdio de IA do Azure
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.
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:
- Família de modelos Cohere Embed V3
- Família de modelos Cohere Command R
- Família de modelos do Chat do Meta Llama 2
- Família de modelos da Instrução do Meta Llama 3
- Mistral-Small
- Mistral-Large
- Família de modelos Jais
- Família de modelos Jamba
- Família de modelos Phi-3
Modelos implantados para inferência gerenciada:
- Família de modelos da Instrução do Meta Llama 3
- Família de modelos Phi-3
- Família de modelos Mistral e Mixtral.
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:
- Obter informações: retorna as informações sobre o modelo implantado no ponto de extremidade.
- Inserções de texto: cria um vetor de inserção que representa o texto de entrada.
- Conclusões de texto: cria uma conclusão para o prompt e os parâmetros fornecidos.
- Conclusões de chat: cria uma resposta de modelo para a conversa de chat fornecida.
- Inserções de imagem: cria um vetor de inserção que representa o texto e a imagem de entrada.
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 (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 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.