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 detalhe baixo ou alto 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).