Compartilhar via


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 visão são os modelos de raciocínio da série o, série GPT-5, série GPT-4.1, série GPT-4.5, série GPT-4o.

Os modelos habilitados para visão atuais podem responder a perguntas de caráter geral 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.

Chamar as APIs de Conclusão de Chat

O comando a seguir mostra a maneira mais básica de usar um modelo de chat habilitado para pesquisa visual com código. Se esta for sua primeira vez usando esses modelos programaticamente, recomendamos que comece com nosso Início rápido do chat com imagens.

Enviar uma solicitação POST para https://{RESOURCE_NAME}.openai.azure.com/openai/v1/chat/completions onde

  • RESOURCE_NAME é o nome do recurso do OpenAI do Azure

Cabeçalhos necessários:

  • Content-Type: application/json
  • api-key: {API_KEY}

Corpo: o seguinte é um corpo de solicitação de exemplo. O formato é o mesmo que a API de conclusões de chat para GPT-4o, exceto que o conteúdo da mensagem pode ser uma matriz que contém texto e imagens (uma URL HTTP ou HTTPS acessível publicamente válida para uma imagem ou uma imagem codificada em base 64).

Importante

Lembre-se de definir um valor para "max_tokens" ou max_completion_tokens, ou a saída de retorno será cortada.

Importante

Ao carregar imagens, há um limite de dez imagens por solicitação de chat.

{
    "model": "MODEL-DEPLOYMENT-NAME",
    "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>"
}
...

Detalhar as configurações de parâmetro

Opcionalmente, você pode definir um "detail" parâmetro no "image_url" campo. Escolha um dos três valores, lowouhighauto, para ajustar a maneira como o modelo interpreta e processa imagens.

  • auto configuração: a configuração padrão. 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 "alta 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 "alta 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.

Defina o valor usando o formato mostrado neste exemplo:

{ 
    "type": "image_url",
    "image_url": {
        "url": "<image URL>",
        "detail": "high"
    }
}

Para obter detalhes sobre como os parâmetros de imagem afetam os tokens usados e os preços, consulte – O que é o OpenAI do Azure? Tokens de imagem

Saída

A resposta da API deve ser semelhante à seguinte.

{
    "id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
    "object": "chat.completion",
    "created": 1702439277,
    "model": "gpt-4o",
    "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 entrada max_tokens ou limite de tokens do modelo.
  • content_filter: conteúdo omitido devido a um sinalizador dos nossos filtros de conteúdo.

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-4o",
    "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 entrada max_tokens ou limite de tokens do modelo.
  • content_filter: conteúdo omitido devido a um sinalizador dos nossos filtros de conteúdo.