Usar modelos de chat habilitados para visão
Os modelos de chat habilitados para visão são grandes modelos multimodais (LMM) desenvolvidos pela OpenAI que podem analisar imagens e fornecer respostas textuais a perguntas sobre elas. Eles incorporam o processamento de linguagem natural e a compreensão visual. Os modelos atuais habilitados para visão são GPT-4 Turbo com Vision, GPT-4o e GPT-4o-mini.
Os modelos habilitados para visão respondem a perguntas gerais sobre o que está presente nas imagens que você carrega.
Gorjeta
Para usar modelos habilitados para visão, você chama a API de conclusão de bate-papo em um modelo suportado que você implantou. Se você não estiver familiarizado com a API de conclusão de bate-papo, consulte o guia de instruções de bate-papo habilitado para Visão.
Atualização do modelo GPT-4 Turbo
A última versão GA do GPT-4 Turbo é:
gpt-4
Versão:turbo-2024-04-09
Este é o substituto para os seguintes modelos de pré-visualização:
gpt-4
Versão:1106-Preview
gpt-4
Versão:0125-Preview
gpt-4
Versão:vision-preview
Diferenças entre OpenAI e Azure OpenAI GPT-4 Turbo GA Models
- A versão OpenAI do mais recente
0409
modelo turbo suporta o modo JSON e a função chamando para todas as solicitações de inferência. - A versão mais recente
turbo-2024-04-09
do Azure OpenAI atualmente não oferece suporte ao uso do modo JSON e da chamada 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) suportam o modo JSON e a chamada de função.
Diferenças do gpt-4 vision-preview
- A integração de aprimoramentos de Visão específicos da IA do Azure com o GPT-4 Turbo com Visão não é suportada para
gpt-4
a Versão:turbo-2024-04-09
. Isso inclui Reconhecimento Ótico de Caracteres (OCR), aterramento de objetos, prompts de vídeo e processamento aprimorado de seus dados com imagens.
Importante
Os recursos de visualização de aprimoramentos de visão, incluindo Reconhecimento Ótico de Caracteres (OCR), aterramento de objetos, prompts de vídeo serão desativados e não estarão mais disponíveis quando gpt-4
Version: vision-preview
for atualizado para turbo-2024-04-09
. Se você estiver confiando em qualquer um desses recursos de visualização, essa atualização automática do modelo será uma grande mudança.
Disponibilidade gerenciada provisionada 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 suporta solicitações de inferência de imagem/visão. As implantações provisionadas desse modelo só aceitam entrada de texto. As implantações de modelo padrão aceitam solicitações de inferência de texto e imagem/visão.
Implantando o GPT-4 Turbo com o Vision GA
Para implantar o modelo GA a partir do portal AI Foundry, selecione GPT-4
e escolha a turbo-2024-04-09
versão no menu suspenso. A cota padrão para o gpt-4-turbo-2024-04-09
modelo será a mesma cota atual para GPT-4-Turbo. Consulte os limites das quotas regionais.
Chamar as APIs de conclusão de bate-papo
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 é a primeira vez que utiliza estes modelos programaticamente, recomendamos que comece com o nosso início rápido GPT-4 Turbo com Vision.
Enviar um pedido 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 seu recurso do Azure OpenAI
- DEPLOYMENT_NAME é o nome do seu GPT-4 Turbo com implantação do modelo Vision
Cabeçalhos obrigatórios:
Content-Type
: aplicação/jsonapi-key
: {API_KEY}
Corpo: A seguir está um corpo de solicitação de amostra. O formato é o mesmo que a API de conclusão de chat para GPT-4, exceto que o conteúdo da mensagem pode ser uma matriz contendo texto e imagens (um URL HTTP ou HTTPS válido para uma imagem ou uma imagem codificada em base 64).
Importante
Lembre-se de definir um "max_tokens"
valor, ou a saída de retorno será cortada.
Importante
Ao carregar imagens, há um limite de 10 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
}
Gorjeta
Usar uma imagem local
Se você quiser usar uma imagem local, você pode usar o seguinte código Python para convertê-la em base64 para que possa ser passada para a API. Ferramentas alternativas de conversão de arquivos estão disponíveis on-line.
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 da imagem base64 estiverem prontos, você poderá passá-los para a API no corpo da solicitação da seguinte forma:
...
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<your_image_data>"
}
...
Saída
A resposta da API deve ter a seguinte aparência.
{
"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
}
}
Cada resposta inclui um "finish_reason"
campo. Tem os seguintes valores possíveis:
stop
: A API retornou a saída completa do modelo.length
: Saída do modelo incompleta devido aomax_tokens
parâmetro de entrada ou ao limite de token do modelo.content_filter
: Conteúdo omitido devido a um sinalizador dos nossos filtros de conteúdo.
Configurações de parâmetros detalhados no processamento de imagem: Baixo, Alto, Automático
O parâmetro detail no modelo oferece três opções: low
, high
ou auto
, para ajustar a forma como o modelo interpreta e processa imagens. A configuração padrão é auto, onde o modelo decide entre baixo ou alto com base no tamanho da entrada de imagem.
low
Configuração: O modelo não ativa o modo "High Res", em vez disso, processa uma versão 512x512 de resolução mais baixa, resultando em respostas mais rápidas e consumo de token reduzido para cenários onde os detalhes finos não são cruciais.high
Configuração: O modelo ativa o modo "High Res". Aqui, o modelo inicialmente visualiza a imagem de baixa resolução e, em seguida, gera segmentos detalhados de 512x512 a partir 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 os tokens usados e os preços, consulte - O que é o Azure OpenAI? Tokens de imagem
Saída
As respostas de bate-papo que você recebe do modelo agora devem incluir informações aprimoradas sobre a imagem, como rótulos de objetos e caixas delimitadoras, e resultados de OCR. A resposta da API deve ter a seguinte aparência.
{
"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
}
}
Cada resposta inclui um "finish_reason"
campo. Tem os seguintes valores possíveis:
stop
: A API retornou a saída completa do modelo.length
: Saída do modelo incompleta devido aomax_tokens
parâmetro de entrada ou ao limite de token do modelo.content_filter
: Conteúdo omitido devido a um sinalizador dos nossos filtros de conteúdo.