Usar modelos de chat habilitados para pesquisa visual
Os modelos de chat habilitados para pesquisa visual são um grandes modelos multimodais (LMM) desenvolvidos pela OpenAI que podem analisar imagens e fornecer respostas textuais a perguntas sobre elas. Eles incorporam tanto o processamento de linguagem natural quanto o reconhecimento visual. Os modelos atuais habilitados para pesquisa visual são o GPT-4 Turbo com Visão, o GPT-4o e o GPT-4o-mini.
Os modelos atuais habilitados para pesquisa visual respondem a perguntas gerais sobre o que está presente nas imagens que você carrega.
Dica
Para usar os modelos habilitados para pesquisa visual, você chama a API de Conclusão de Chat em um modelo compatível que tenha sido implantado. Se você não estiver familiarizado com a API de Conclusão de Chat, consulte o Guia de instruções do chat habilitado para pesquisa visual.
Upgrade do modelo GPT-4 Turbo
A última versão GA do GPT-4 Turbo é:
gpt-4
Versão:turbo-2024-04-09
Essa é a substituição dos seguintes modelos de versão prévia:
gpt-4
Versão:1106-Preview
gpt-4
Versão:0125-Preview
gpt-4
Versão:vision-preview
Diferenças entre os modelos OpenAI e Azure OpenAI GPT-4 Turbo GA
- A versão mais recente do modelo turbo
0409
do OpenAI suporta o modo JSON e chamadas de função para todas as solicitações de inferência. - A versão do OpenAI do Azure do
turbo-2024-04-09
mais recente no momento não dá suporte ao uso do modo JSON e chamadas de função ao fazer solicitações de inferência com entrada de imagem (visão). As solicitações de entrada baseadas em texto (solicitações semimage_url
e imagens embutidas) dão suporte ao modo JSON e à chamada de função.
Diferenças do gpt-4 vision-preview
- A integração de aprimoramentos específicos do IA do Azure Vision com GPT-4 Turbo com Vision não é suportada para
gpt-4
Versão:turbo-2024-04-09
. Isso inclui Reconhecimento Óptico de Caracteres (OCR), ancoragem de objetos, solicitações de vídeo e melhor manuseio dos seus dados com imagens.
Importante
Os recursos de visualização de melhorias de visão, incluindo Reconhecimento Óptico de Caracteres (OCR), fixação de objetos e prompts de vídeo, serão desativados e não estarão mais disponíveis assim que a gpt-4
Versão: vision-preview
for atualizada para turbo-2024-04-09
. Se você estiver dependendo de algum desses recursos de visualização, essa atualização automática do modelo será uma mudança radical.
Disponibilidade gerenciada provisionada do GPT-4 Turbo
gpt-4
Versão:turbo-2024-04-09
está disponível para implantações padrão e provisionadas. Atualmente, a versão provisionada deste modelo não dá suporte a solicitações de inferência de imagem/visão. As implantações provisionadas deste modelo aceitam apenas a entrada de texto. As implantações de modelo Standard aceitam solicitações de inferência de texto e imagem/visão.
Implantar o GPT-4 Turbo com Visão GA
Para implantar o modelo GA no portal do Azure AI Foundry, selecione GPT-4
e escolha a versão turbo-2024-04-09
no menu suspenso. A cota padrão para o modelo gpt-4-turbo-2024-04-09
será a mesma da cota atual para o GPT-4-Turbo. Consulte os limites de cota regional.
Chamar as APIs de Conclusão de Chat
O comando a seguir mostra a maneira mais básica de usar o modelo GPT-4 Turbo com Visão com código. Se esta for sua primeira vez usando esses modelos programaticamente, recomendamos começar com nosso início rápido do GPT-4 Turbo with Vision.
Enviar uma solicitação POST para https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview
onde
- RESOURCE_NAME é o nome do recurso do Azure OpenAI
- DEPLOYMENT_NAME é o nome da implantação do modelo GPT-4 Turbo with Vision
Cabeçalhos necessários:
Content-Type
: application/jsonapi-key
: {API_KEY}
Corpo: o seguinte é um corpo de solicitação de exemplo. O formato é o mesmo da API de conclusões de chat para GPT-4, exceto pelo fato de que o conteúdo da mensagem pode ser uma matriz contendo texto e imagens (uma URL HTTP ou HTTPS válida para uma imagem ou uma imagem codificada em base 64).
Importante
Lembre-se de definir um valor "max_tokens"
, caso contrário, a saída de retorno será cortada.
Importante
Ao carregar imagens, há um limite de dez imagens por solicitação de chat.
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this picture:"
},
{
"type": "image_url",
"image_url": {
"url": "<image URL>"
}
}
]
}
],
"max_tokens": 100,
"stream": false
}
Dica
Usar uma imagem local
Se você quiser usar uma imagem local, poderá usar o seguinte código Python para convertê-la em base64 para que ela possa ser passada para a API. Ferramentas alternativas de conversão de arquivo estão disponíveis online.
import base64
from mimetypes import guess_type
# Function to encode a local image into data URL
def local_image_to_data_url(image_path):
# Guess the MIME type of the image based on the file extension
mime_type, _ = guess_type(image_path)
if mime_type is None:
mime_type = 'application/octet-stream' # Default MIME type if none is found
# Read and encode the image file
with open(image_path, "rb") as image_file:
base64_encoded_data = base64.b64encode(image_file.read()).decode('utf-8')
# Construct the data URL
return f"data:{mime_type};base64,{base64_encoded_data}"
# Example usage
image_path = '<path_to_image>'
data_url = local_image_to_data_url(image_path)
print("Data URL:", data_url)
Quando os dados de imagem base64 estiverem prontos, você poderá passá-los para a API no corpo da solicitação da seguinte maneira:
...
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<your_image_data>"
}
...
Saída
A resposta da API deve ser semelhante à seguinte.
{
"id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
"object": "chat.completion",
"created": 1702439277,
"model": "gpt-4",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"finish_reason":"stop",
"index": 0,
"message": {
"role": "assistant",
"content": "The picture shows an individual dressed in formal attire, which includes a black tuxedo with a black bow tie. There is an American flag on the left lapel of the individual's jacket. The background is predominantly blue with white text that reads \"THE KENNEDY PROFILE IN COURAGE AWARD\" and there are also visible elements of the flag of the United States placed behind the individual."
},
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"prompt_tokens": 1156,
"completion_tokens": 80,
"total_tokens": 1236
}
}
Todas as respostas incluem um campo "finish_reason"
. Tem os seguintes valores possíveis:
stop
: a API retornou a saída completa do modelo.length
: saída do modelo incompleta devido ao parâmetro de entradamax_tokens
ou limite de tokens do modelo.content_filter
: conteúdo omitido devido a um sinalizador dos nossos filtros de conteúdo.
Detalhar as configurações de parâmetro no processamento de imagens: Baixo, Alto, Automático
O parâmetro detail no modelo oferece três opções: low
, high
ou auto
, para ajustar a maneira como o modelo interpreta e processa imagens. A configuração padrão é automática, em que o modelo decide entre baixo ou alto com base no tamanho da entrada da imagem.
- Configuração
low
: o modelo não ativa o modo "altas res", em vez disso, processa uma versão de resolução 512x512 mais baixa, resultando em respostas mais rápidas e redução do consumo de token para cenários em que detalhes finos não são cruciais. - Configuração
high
: o modelo ativa o modo "altas res". Aqui, o modelo exibe inicialmente a imagem de baixa resolução e, em seguida, gera segmentos detalhados de 512 x 512 da imagem de entrada. Cada segmento usa o dobro do orçamento do token, permitindo uma interpretação mais detalhada da imagem."
Para obter detalhes sobre como os parâmetros de imagem afetam tokens usados e preços, consulte – O que é OpenAI do Azure? Tokens de Imagem
Saída
As respostas de chat recebidas do modelo agora devem incluir informações aprimoradas sobre a imagem, como rótulos de objeto e caixas delimitadoras, e resultados do OCR. A resposta da API deve ser semelhante à seguinte.
{
"id": "chatcmpl-8UyuhLfzwTj34zpevT3tWlVIgCpPg",
"object": "chat.completion",
"created": 1702394683,
"model": "gpt-4",
"choices":
[
{
"finish_reason": {
"type": "stop",
"stop": "<|fim_suffix|>"
},
"index": 0,
"message":
{
"role": "assistant",
"content": "The image shows a close-up of an individual with dark hair and what appears to be a short haircut. The person has visible ears and a bit of their neckline. The background is a neutral light color, providing a contrast to the dark hair."
}
}
],
"usage":
{
"prompt_tokens": 816,
"completion_tokens": 49,
"total_tokens": 865
}
}
Todas as respostas incluem um campo "finish_reason"
. Tem os seguintes valores possíveis:
stop
: a API retornou a saída completa do modelo.length
: saída do modelo incompleta devido ao parâmetro de entradamax_tokens
ou limite de tokens do modelo.content_filter
: conteúdo omitido devido a um sinalizador dos nossos filtros de conteúdo.