Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 os modelos de raciocínio da série O, série GPT-5, série GPT-4.1, GPT-4.5, série GPT-4o.
Os modelos habilitados para visão podem responder a perguntas gerais sobre o que está presente nas imagens que você carrega.
Sugestão
Para usar modelos com capacidade de visão computacional, deve chamar a API de conclusão de chat num modelo suportado que tenha implementado. 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.
Chamar as APIs de conclusão de bate-papo
O comando a seguir mostra a maneira mais básica de usar um modelo de chat habilitado para visão com código. Se esta é a primeira vez que utiliza estes modelos de forma programática, recomendamos que comece com o nosso Guia de início rápido Chat com imagens.
Enviar um pedido POST para https://{RESOURCE_NAME}.openai.azure.com/openai/v1/chat/completions onde
- RESOURCE_NAME é o nome do seu recurso do Azure OpenAI
Cabeçalhos obrigatórios:
-
Content-Type: aplicação/json -
api-key: {API_KEY}
Corpo: A seguir está um modelo de corpo de pedido. O formato é o mesmo que a API de conclusão de chat para GPT-4o, exceto que o conteúdo da mensagem pode ser uma matriz contendo texto e imagens (um URL HTTP ou HTTPS acessível publicamente válido para uma imagem ou uma imagem codificada em base 64).
Importante
Lembre-se de definir um "max_tokens", ou max_completion_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.
{
"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
}
Sugestão
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>"
}
...
Configurações de parâmetros detalhados
Opcionalmente, você pode definir um "detail" parâmetro no "image_url" campo. Escolha um dos três valores, low, highou auto, para ajustar a forma como o modelo interpreta e processa imagens.
-
autosetting: A configuração padrão. O modelo decide entre baixo ou alto com base no tamanho da entrada de imagem. -
lowConfiguraçã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. -
highConfiguraçã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.
Você define 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 Azure OpenAI? Tokens de imagem
Resultado
A resposta da API deve ter a seguinte aparência.
{
"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
}
}
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_tokensparâ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.
Resultado
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-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
}
}
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_tokensparâ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.