1. Introdução ao Modelo de Visão GPT-4
O modelo de visão GPT-4 (GPT-4V) é um modelo de inteligência artificial multimodal introduzido pela OpenAI, que integra capacidades de compreensão visual baseadas no GPT-4. Ao contrário de modelos tradicionais de processamento de texto, o GPT-4V pode receber e analisar conteúdo de imagem, fornecendo descrições, respondendo a perguntas e interagindo com imagens.
Exemplos de Aplicações:
- Reconhecimento e Classificação de Produtos: Plataformas de e-commerce podem usar o GPT-4V para identificar e fornecer descrições de imagens de produtos, ajudando a melhorar sistemas de busca e recomendação.
- Auxílio em Decisões Médicas: Embora o GPT-4V não seja adequado para diagnósticos profissionais diretos de imagens médicas, ele pode auxiliar profissionais médicos na compreensão inicial de imagens e organização de dados.
- Educação e Pesquisa: No ensino e pesquisa científica, o GPT-4V pode ser utilizado para analisar gráficos, resultados de experimentos e interpretar automaticamente dados de imagem científica.
- Monitoramento e Análise de Tráfego: Ao analisar imagens de vigilância de tráfego, o GPT-4V pode auxiliar sistemas de gerenciamento de tráfego em relatórios de condições em tempo real e identificação de acidentes.
2. Exemplo Simples
Abaixo está um exemplo simples usando um pedido CURL para demonstrar como usar o modelo de visão GPT-4 para analisar imagens:
Parâmetros do Pedido da API:
-
model
: Especifica a versão do modelo a ser usada, neste caso "gpt-4-vision-preview". -
messages
: Contém definição de papel e conteúdo, onde o conteúdo pode incluir texto e links de imagem. -
max_tokens
: Especifica o limite máximo de comprimento para geração de texto.
Exemplo de Pedido CURL:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "O que há nesta imagem?"
},
{
"type": "image_url",
"image_url": {
"url": "Seu Link de Imagem"
}
}
]
}
],
"max_tokens": 300
}'
Com o pedido acima, enviamos uma imagem para o modelo de visão GPT-4 e fizemos uma pergunta simples: "O que há nesta imagem?" O modelo analisará o conteúdo da imagem e fornecerá uma resposta com base no conteúdo da imagem.
3. Enviando Imagens Usando Codificação Base64
Em alguns casos, pode ser necessário fazer upload de um arquivo de imagem local para o modelo de visão GPT-4. Nestes casos, podemos incorporar os dados da imagem no pedido da API usando codificação base64.
Exemplo de Código Python:
import base64
import requests
api_key = "SUA_CHAVE_API_OPENAI"
def codificar_imagem(caminho_imagem):
with open(caminho_imagem, "rb") as arquivo_imagem:
return base64.b64encode(arquivo_imagem.read()).decode('utf-8')
caminho_imagem = "caminho_para_sua_imagem.jpg"
imagem_base64 = codificar_imagem(caminho_imagem)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "O que há nesta imagem?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{imagem_base64}"
}
}
]
}
],
"max_tokens": 300
}
resposta = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(resposta.json())
No código acima, primeiro convertemos um arquivo de imagem local em uma string codificada em base64 e, em seguida, enviamos essa string como parte do pedido para a API. A resposta do modelo contém uma descrição do conteúdo da imagem.
4. Lidando com Múltiplas Entradas de Imagem
Às vezes, é necessário analisar várias imagens ao mesmo tempo. O modelo de visão GPT-4 suporta a recepção de múltiplas entradas de imagem simultaneamente e permite que os usuários façam perguntas sobre essas imagens ou comparem suas diferenças.
Exemplo de Entrada Múltipla de Imagens:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "O que é diferente nessas imagens?"
},
{
"type": "image_url",
"image_url": {
"url": "URL da primeira imagem"
}
},
{
"type": "image_url",
"image_url": {
"url": "URL da segunda imagem"
}
}
]
}
],
"max_tokens": 300
}'
Nesta requisição, enviamos duas imagens para a API. O modelo irá analisar cada imagem separadamente e fornecer descrições e comparações com base nas questões feitas. Essa abordagem é ideal para análise geral de uma coleção de imagens.
5. Definindo o Nível de Detalhe da Análise de Imagens
Ao utilizar o modelo visual GPT-4 para análise de imagens, é possível definir o nível de detalhe de acordo com suas necessidades. Ajustando o parâmetro detail
, é possível escolher entre baixo
, alto
ou automático
. Veja uma explicação detalhada de cada opção e como definir:
-
baixo
: Ao escolher o nível de detalhe baixo, o modelo desabilitará o "modelo de alta resolução". Este modelo receberá uma versão de baixa resolução da imagem de 512 pixels x 512 pixels e usará um orçamento de 65 tokens para representar a imagem. Isso é adequado para cenários que não requerem muitos detalhes, ajudando a obter uma resposta mais rápida e consumir menos tokens de entrada. -
alto
: O nível de detalhe alto permite que o modelo primeiro veja uma imagem de baixa resolução e depois crie uma versão detalhada recortada em uma grade de 512 pixels com base no tamanho da imagem de entrada. Cada recorte detalhado é representado com um orçamento dobrado de 129 tokens (ou seja, 65 tokens por recorte padrão). -
automático
: O nível de detalhe automático determinará se deve usar o nível de detalhebaixo
oualto
com base no tamanho da imagem de entrada.
O exemplo de código a seguir mostra como definir o nível de detalhe:
import base64
import requests
api_key = "sua_chave_API_OPENAI"
caminho_imagem = "caminho_para_sua_imagem.jpg"
imagem_base64 = base64.b64encode(open(caminho_imagem, "rb").read()).decode('utf-8')
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
dados = {
"modelo": "gpt-4-vision-preview",
"mensagens": [
{
"papel": "usuário",
"conteúdo": [
{
"tipo": "texto",
"texto": "O que tem nesta imagem?"
},
{
"tipo": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{imagem_base64}",
"detail": "alto" # Definido como nível de detalhe alto
}
}
]
}
],
"max_tokens": 300
}
resposta = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=dados)
print(resposta.json())
6. Compreendendo as Limitações do Modelo e Gerenciando Imagens
6.1. Limitações do Modelo
Apesar da funcionalidade poderosa do modelo visual GPT-4, ele não está isento de limitações, e compreender essas limitações é crucial para usá-lo na compreensão de imagens. Aqui está uma visão geral de algumas limitações conhecidas:
-
Imagens Médicas: O modelo não é adequado para interpretar imagens médicas profissionais, como tomografias computadorizadas, e não deve ser usado para aconselhamento médico.
-
Texto Não Inglês: O modelo pode não se sair bem ao processar imagens contendo texto em alfabetos não latinos, como japonês ou coreano.
-
Localização Espacial: O desempenho do modelo é subótimo em tarefas que exigem associações de localização espacial precisas, como a identificação de posições das peças em um tabuleiro de xadrez.
-
Detalhes da Imagem: O modelo pode ter dificuldade em entender gráficos ou texto com variações de cor e estilo (por exemplo, linhas sólidas, linhas tracejadas) em uma imagem.
-
Rotação da Imagem: O modelo pode interpretar incorretamente texto e imagens inclinados ou de cabeça para baixo.
6.2 Gerenciando Imagens em Sessões
Como a API de Completude de Chat é sem estado, você precisará gerenciar as mensagens (incluindo imagens) enviadas para o modelo por conta própria. Se desejar usar a mesma imagem várias vezes, precisará reenviar os dados da imagem com cada solicitação de API.
payload_adicional = {
"modelo": "gpt-4-vision-preview",
"mensagens": [
{
"função": "usuário",
"conteúdo": [
{
"tipo": "texto",
"texto": "Com base nesta imagem, que sugestões você tem?"
},
{
"tipo": "url_da_imagem",
"url_da_imagem": {
"url": f"data:image/jpeg;base64,{base64_imagem}"
}
}
]
}
],
"max_tokens": 300
}
nova_resposta = requests.post("https://api.openai.com/v1/chat/completions", headers=cabeçalhos, json=payload_adicional)
print(nova_resposta.json())
7. Cálculo de Custos
Cada imagem usando a opção detalhes: baixo
consome fixamente 85 tokens. Para imagens com a opção detalhes: alto
, a imagem é primeiro redimensionada proporcionalmente para se ajustar ao tamanho de 2048px x 2048px e, em seguida, o lado mais curto da imagem é garantido como sendo 768px. A imagem é então dividida em vários quadrados de 512px, sendo que cada quadrado consome 170 tokens, e 85 tokens adicionais são adicionados ao total final.
Por exemplo, se uma imagem tem dimensões de 1024px x 1024px e a opção detalhes: alto
é escolhida, o custo em tokens seria:
- Primeiro, como 1024 é menor que 2048, não há ajuste inicial do tamanho.
- Em seguida, com o lado mais curto sendo 1024, a imagem é redimensionada para 768 x 768.
- São necessários 4 quadrados de 512px para representar a imagem, então o custo final em tokens seria 170 * 4 + 85 = 765.
Para entender detalhadamente o método de cálculo de custos, consulte a documentação do modelo GPT-4 Vision.
8. Perguntas Frequentes
Abaixo estão algumas perguntas comuns e suas respostas que os usuários podem encontrar ao utilizar o modelo GPT-4 Vision:
P: Posso ajustar as capacidades de imagem do gpt-4
?
R: Atualmente, não oferecemos suporte para ajustar as capacidades de imagem do gpt-4
.
P: Posso usar o gpt-4
para gerar imagens?
R: Não, você pode usar o dall-e-3
para gerar imagens e o gpt-4-vision-preview
para entender imagens.
P: Quais tipos de upload de arquivo são suportados?
R: Atualmente, oferecemos suporte a arquivos PNG (.png), JPEG (.jpeg e .jpg), WEBP (.webp) e GIF não animado (.gif).