Usar modelos de chat habilitados para visão

Os modelos de chat habilitados para visão são grandes modelos multimodal (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, GPT-5 série, GPT-4.1 série, GPT-4.5, GPT-4o série.

Os modelos habilitados para visão podem responder perguntas gerais sobre o que está presente nas imagens que você carrega.

Dica

Para usar modelos habilitados para visão, você chama a API de Conclusão de Chat em um modelo suportado que você implantou. Se você não estiver familiarizado com a API de Conclusão de Chat, consulte o guia de chat com recursos de Visão.

Início Rápido

Comece a usar imagens em seus chats com o Azure OpenAI no Microsoft Foundry Models.

Use este artigo para começar a usar Microsoft Foundry para implantar e testar um modelo de conclusão de chat com compreensão de imagem.

Pré-requisitos

Prepare sua mídia

Você precisa de uma imagem para concluir este início rápido. Você pode usar essa imagem de exemplo ou qualquer outra imagem disponível.

Foto de um acidente de carro que pode ser usado para concluir o início rápido.

Ir para o Foundry

Dica

Se você já tiver um modelo com capacidade de visão implantado, vá para Iniciar uma sessão de chat para analisar imagens.

  1. Navegue até Foundry e entre com as credenciais associadas ao recurso Azure OpenAI. Durante ou após o fluxo de trabalho de entrada, selecione o diretório apropriado, a assinatura do Azure e o recurso Azure OpenAI.
  2. Selecione o projeto no qual você gostaria de trabalhar.
  3. No menu de navegação à esquerda, selecione Modelos + pontos de extremidade e selecione + Implantar modelo.
  4. Escolha uma implantação com capacidade para imagens selecionando o nome do modelo: gpt-4o ou gpt-4o-mini. Na janela exibida, selecione um nome e um tipo de implantação. Verifique se o recurso Azure OpenAI está conectado. Para obter mais informações sobre a implantação do modelo, consulte o guia de implantação de recursos.
  5. Selecione Implantar.
  6. Em seguida, selecione seu novo modelo e selecione Abrir no playground. No playground de chat, a implantação que você criou deve ser selecionada no menu suspenso Implantação.

Parque infantil

Nesta sessão de chat, você instrui o assistente a ajudá-lo a entender as imagens que você inseriu.

Para obter ajuda geral com a configuração do assistente, sessões de chat, configurações e painéis, consulte o início rápido do Chat.

Iniciar uma sessão de chat para analisar imagens

Nesta sessão de chat, você está instruindo o assistente a ajudar a entender as imagens que você inseriu.

  1. Para começar, verifique se a implantação com capacidade para imagens está selecionada na lista suspensa implantação .

  2. Na caixa de texto de contexto no painel Instalação , forneça este prompt para orientar o assistente: "You're an AI assistant that helps people find information." Ou, você pode adaptar o prompt à sua imagem ou cenário.

    Nota

    Recomendamos que você atualize a Mensagem do Sistema para ser específica para a tarefa, a fim de evitar respostas inúteis do modelo.

  3. Selecione Aplicar alterações para salvar suas alterações.

  4. No painel de sessão de chat, selecione o botão anexo e, em seguida, carregue a imagem. Escolha sua imagem.

  5. Adicione o seguinte prompt no campo de chat: Describe this imagee selecione o ícone de envio para enviá-lo.

  6. O ícone de envio é substituído por um botão parar. Se você selecioná-la, o assistente interromperá o processamento da solicitação. Para este início rápido, deixe o assistente concluir sua resposta.

  7. O assistente responde com uma descrição da imagem.

  8. Faça uma pergunta de acompanhamento relacionada à análise de sua imagem. Você poderia entrar, "What should I highlight about this image to my insurance company?".

  9. Você deve receber uma resposta relevante semelhante ao mostrado aqui:

    When reporting the incident to your insurance company, you should highlight the following key points from the image:  
    
    1. **Location of Damage**: Clearly state that the front end of the car, particularly the driver's side, is damaged. Mention the crumpled hood, broken front bumper, and the damaged left headlight.  
    
    2. **Point of Impact**: Indicate that the car has collided with a guardrail, which may suggest that no other vehicles were involved in the accident.  
    
    3. **Condition of the Car**: Note that the damage seems to be concentrated on the front end, and there is no visible damage to the windshield or rear of the car from this perspective.  
    
    4. **License Plate Visibility**: Mention that the license plate is intact and can be used for identification purposes.  
    
    5. **Environment**: Report that the accident occurred near a roadside with a guardrail, possibly in a rural or semi-rural area, which might help in establishing the accident location and context.  
    
    6. **Other Observations**: If there were any other circumstances or details not visible in the image that may have contributed to the accident, such as weather conditions, road conditions, or any other relevant information, be sure to include those as well.  
    
    Remember to be factual and descriptive, avoiding speculation about the cause of the accident, as the insurance company will conduct its own investigation.
    

Exibir e exportar código

A qualquer momento da sessão de chat, você pode habilitar a opção Mostrar JSON bruto na parte superior da janela de chat para ver a conversa formatada como JSON. Aqui está a aparência no início da sessão de chat de início rápido:

[
	{
		"role": "system",
		"content": [
			"You are an AI assistant that helps people find information."
		]
	},
]

Limpar recursos

Se você quiser limpar e remover um recurso Azure OpenAI, poderá excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui outros recursos associados a ele.

Use este artigo para começar a usar as APIs REST do Azure OpenAI para implantar e usar modelos de chat habilitados para visão.

Pré-requisitos

Nota

Atualmente, não há suporte para desativar a filtragem de conteúdo para o modelo GPT-4 Turbo com Visão.

Recuperar chave e ponto de extremidade

Para chamar com êxito as APIs do Azure OpenAI, você precisa das seguintes informações sobre o recurso Azure OpenAI:

Variável Nome Valor
Ponto de acesso api_base O valor do ponto de extremidade está localizado em Chaves e Ponto de Extremidade para seu recurso no portal do Azure. Você também pode encontrar o endpoint por meio da página Implantações no portal do Foundry. Um exemplo de ponto de extremidade é: https://docs-test-001.openai.azure.com/.
Chave api_key O valor da chave também está localizado em Keys and Endpoint para o recurso no portal Azure. Azure gera duas chaves para o recurso. Você pode usar qualquer um dos valores.

Acesse seu recurso no portal do Azure. No painel de navegação, selecione Chaves e Endpoint no Gerenciamento de Recursos. Copie o valor do Endpoint e um valor de chave de acesso. Você pode usar o valor KEY 1 ou KEY 2 . Ter duas chaves permite girar e regenerar chaves com segurança sem causar uma interrupção de serviço.

Screenshot que mostra a página Chaves e Ponto de Extremidade para um recurso Azure OpenAI no portal do Azure.

Criar um novo aplicativo Python

Crie um novo arquivo de Python chamado quickstart.py. Abra o novo arquivo em seu editor ou IDE preferencial.

  1. Substitua o conteúdo de quickstart.py pelo código a seguir.

    # Packages required:
    import requests 
    import json 
    
    api_base = '<your_azure_openai_endpoint>' 
    deployment_name = '<your_deployment_name>'
    API_KEY = '<your_azure_openai_key>'
    
    base_url = f"{api_base}openai/deployments/{deployment_name}" 
    headers = {   
        "Content-Type": "application/json",   
        "api-key": API_KEY 
    } 
    
    # Prepare endpoint, headers, and request body 
    endpoint = f"{base_url}/chat/completions?api-version=2023-12-01-preview" 
    data = { 
        "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": 2000 
    }   
    
    # Make the API call   
    response = requests.post(endpoint, headers=headers, data=json.dumps(data))   
    
    print(f"Status Code: {response.status_code}")   
    print(response.text)
    
  2. Faça as seguintes alterações:

    1. Insira a URL do endpoint e a chave nos campos apropriados.
    2. Insira o nome da implantação do modelo no campo apropriado.
    3. Altere o valor do "image" campo para a URL acessível publicamente de sua imagem.

      Dica

      Você também pode usar dados de imagem codificados em base 64 em vez de uma URL. Para obter mais informações, consulte o guia de instruções de chats da Visão.

  3. Execute o aplicativo com o python comando:

    python quickstart.py
    

Limpar recursos

Se você quiser limpar e remover um recurso Azure OpenAI, poderá excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui outros recursos associados a ele.

Use este artigo para começar a usar o SDK do Azure OpenAI Python para implantar e usar um modelo de chat habilitado para visão.

Código-fonte da biblioteca | Pacote (PyPi) |

Pré-requisitos

Microsoft Entra ID pré-requisitos

Para a autenticação sem chave recomendada com Microsoft Entra ID, você precisa:

  • Instale o CLI do Azure usado para autenticação sem chave com Microsoft Entra ID.
  • Atribua a Cognitive Services User função à sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de Acesso (IAM)>Adicionar atribuição de função.

Configurar

Instale a biblioteca de clientes do Python OpenAI com:

pip install openai

Nota

Essa biblioteca é mantida pelo OpenAI. Consulte o histórico de lançamentos para acompanhar as atualizações mais recentes na biblioteca.

Recuperar chave e ponto de extremidade

Para fazer uma chamada com êxito contra Azure OpenAI, você precisa de um endpoint e um key.

Nome da variável Valor
ENDPOINT O ponto de extremidade de serviço pode ser encontrado na seção Keys & Endpoint ao visualizar o recurso no portal do Azure. Como alternativa, você pode encontrar o endpoint por meio da página Deployments no portal Microsoft Foundry. Um exemplo de ponto de extremidade é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Keys & Endpoint ao examinar seu recurso no portal do Azure. Você pode usar um KEY1 ou KEY2.

Acesse seu recurso no portal do Azure. A seção Chaves & Ponto de Extremidade está localizada em Gerenciamento de Recursos. Copie o ponto de extremidade e a chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar um KEY1 ou KEY2. Sempre ter duas chaves permite girar e regenerar chaves com segurança sem causar uma interrupção de serviço.

Screenshot da interface da visão geral de um recurso Azure OpenAI no portal Azure com o ponto de extremidade e a localização das chaves de acesso circulados em vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Importante

Recomendamos a autenticação Microsoft Entra ID com identidades gerenciadas para os recursos Azure para evitar armazenar credenciais nos seus aplicativos que são executados na nuvem.

Use chaves de API com cuidado. Não inclua a chave de API diretamente em seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança em Azure Key Vault, gire as chaves regularmente e restrinja o acesso a Azure Key Vault usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte as chaves API com Azure Key Vault.

Para obter mais informações sobre a segurança dos serviços de IA, consulte Autenticar solicitações para Serviços de IA do Azure.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um novo aplicativo Python

Crie um novo arquivo de Python chamado quickstart.py. Abra o novo arquivo em seu editor ou IDE preferencial.

  1. Substitua o conteúdo de quickstart.py pelo código a seguir.

    import os
    from openai import AzureOpenAI
    
    api_base = os.getenv("AZURE_OPENAI_ENDPOINT")
    api_key= os.getenv("AZURE_OPENAI_API_KEY")
    deployment_name = '<your_deployment_name>'
    api_version = '2023-12-01-preview' # this might change in the future
    
    client = AzureOpenAI(
        api_key=api_key,  
        api_version=api_version,
        base_url=f"{api_base}/openai/deployments/{deployment_name}"
    )
    
    response = client.chat.completions.create(
        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=2000 
    )
    
    print(response)
    
  2. Faça as seguintes alterações:

    1. Verifique se as variáveis de ambiente AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_API_KEY estão definidas.
    2. Insira o nome da implantação do modelo na deployment_name variável.
    3. Altere o valor do "url" campo para a URL acessível publicamente de sua imagem.

      Dica

      Você também pode usar dados de imagem codificados em base 64 em vez de uma URL. Para obter mais informações, consulte o guia de instruções de chats da Visão.

  3. Execute o aplicativo com o python comando:

    python quickstart.py
    

Importante

Use chaves de API com cuidado. Não inclua a chave de API diretamente em seu código e nunca a publique publicamente. Se você usar uma chave de API, armazene-a com segurança em Azure Key Vault. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte as chaves API com Azure Key Vault.

Para obter mais informações sobre a segurança dos serviços de IA, consulte Autenticar solicitações para Serviços de IA do Azure.

Limpar recursos

Se você quiser limpar e remover um recurso Azure OpenAI, poderá excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui outros recursos associados a ele.

Use este artigo para começar a usar o SDK do JavaScript OpenAI para implantar e usar um modelo de chat habilitado para visão.

Esse SDK é fornecido pela OpenAI com tipos específicos do Azure fornecidos pelo Azure.

Reference documentation | Library source code | Package (npm) | Samples

Pré-requisitos

Nota

Essa biblioteca é mantida pelo OpenAI. Consulte o histórico de lançamentos para acompanhar as atualizações mais recentes na biblioteca.

Microsoft Entra ID pré-requisitos

Para a autenticação sem chave recomendada com Microsoft Entra ID, você precisa:

  • Instale o CLI do Azure usado para autenticação sem chave com Microsoft Entra ID.
  • Atribua a Cognitive Services User função à sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de Acesso (IAM)>Adicionar atribuição de função.

Configurar

  1. Crie uma nova pasta vision-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir vision-quickstart && cd vision-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Instale a biblioteca de clientes OpenAI para JavaScript com:

    npm install openai
    
  4. Para a autenticação sem senha recomendada :

    npm install @azure/identity
    

Recuperar informações do recurso

Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu Azure recurso OpenAI:

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Keys e Endpoint ao examinar o recurso do portal Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação quando você implantou um modelo. Esse valor pode ser encontrado em Resource Management>Model Deployments no portal Azure.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Cuidado

Para usar a autenticação sem chave recomendada com o SDK, verifique se a AZURE_OPENAI_API_KEY variável de ambiente não está definida.

Criar um novo aplicativo JavaScript para prompts de imagem

Selecione uma imagem no azure-samples/cognitive-services-sample-data-files. Insira sua URL de imagem acessível publicamente no código abaixo ou defina a variável de IMAGE_URL ambiente como ela.

Importante

Se você usar uma URL SAS para uma imagem armazenada no armazenamento de blobs Azure, será necessário habilitar a Identidade Gerenciada e atribuir a função Storage Blob Reader ao recurso Azure OpenAI (faça isso no portal Azure). Isso permite que o modelo acesse a imagem no armazenamento de blobs.

Dica

Você também pode usar dados de imagem codificados em base 64 em vez de uma URL. Para obter mais informações, consulte o guia de instruções de chats da Visão.

  1. Crie o index.js arquivo com o seguinte código:

    const AzureOpenAI = require('openai').AzureOpenAI;
    const { 
        DefaultAzureCredential, 
        getBearerTokenProvider 
    } = require('@azure/identity');
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const imageUrl = process.env.IMAGE_URL || "<image url>";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview";
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4-with-turbo";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://ai.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    function getClient(): AzureOpenAI {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        apiVersion,
        deployment: deploymentName,
      });
    }
    function createMessages() {
      return {
        messages: [
          { role: "system", content: "You are a helpful assistant." },
          {
            role: "user",
            content: [
              {
                type: "text",
                text: "Describe this picture:",
              },
              {
                type: "image_url",
                image_url: {
                  url: imageUrl,
                },
              },
            ],
          },
        ],
        model: "",
        max_tokens: 2000,
      };
    }
    async function printChoices(completion) {
      for (const choice of completion.choices) {
        console.log(choice.message);
      }
    }
    export async function main() {
      console.log("== Get Vision chats Sample ==");
    
      const client = getClient();
      const messages = createMessages();
      const completion = await client.chat.completions.create(messages);
      await printChoices(completion);
    }
    
    main().catch((err) => {
      console.error("Error occurred:", err);
    });
    
  2. Entre no Azure com o seguinte comando:

    az login
    
  3. Execute o arquivo JavaScript.

    node index.js
    

Limpar recursos

Se você quiser limpar e remover um recurso Azure OpenAI, poderá excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui outros recursos associados a ele.

Use este artigo para começar a usar o SDK do JavaScript OpenAI para implantar e usar um modelo de chat habilitado para visão.

Esse SDK é fornecido pela OpenAI com tipos específicos do Azure fornecidos pelo Azure.

Reference documentation | Library source code | Package (npm) | Samples

Pré-requisitos

Nota

Essa biblioteca é mantida pelo OpenAI. Consulte o histórico de lançamentos para acompanhar as atualizações mais recentes na biblioteca.

Microsoft Entra ID pré-requisitos

Para a autenticação sem chave recomendada com Microsoft Entra ID, você precisa:

  • Instale o CLI do Azure usado para autenticação sem chave com Microsoft Entra ID.
  • Atribua a Cognitive Services User função à sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de Acesso (IAM)>Adicionar atribuição de função.

Configurar

  1. Crie uma nova pasta vision-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir vision-quickstart && cd vision-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Atualize o package.json para o ECMAScript com o seguinte comando:

    npm pkg set type=module
    
  4. Instale a biblioteca de clientes OpenAI para JavaScript com:

    npm install openai
    
  5. Para a autenticação sem senha recomendada :

    npm install @azure/identity
    

Recuperar informações do recurso

Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu Azure recurso OpenAI:

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Keys e Endpoint ao examinar o recurso do portal Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação quando você implantou um modelo. Esse valor pode ser encontrado em Resource Management>Model Deployments no portal Azure.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Cuidado

Para usar a autenticação sem chave recomendada com o SDK, verifique se a AZURE_OPENAI_API_KEY variável de ambiente não está definida.

Criar um novo aplicativo JavaScript para prompts de imagem

Selecione uma imagem no azure-samples/cognitive-services-sample-data-files. Use a URL da imagem no código abaixo ou defina a variável de IMAGE_URL ambiente como a URL da imagem.

Dica

Você também pode usar dados de imagem codificados em base 64 em vez de uma URL. Para obter mais informações, consulte o guia de instruções de chats da Visão.

  1. Crie o index.ts arquivo com o seguinte código:

    import { AzureOpenAI } from "openai";
    import { 
        DefaultAzureCredential, 
        getBearerTokenProvider 
    } from "@azure/identity";
    import type {
      ChatCompletion,
      ChatCompletionCreateParamsNonStreaming,
    } from "openai/resources/index";
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const imageUrl = process.env["IMAGE_URL"] || "<image url>";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview";
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4-with-turbo";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://ai.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    function getClient(): AzureOpenAI {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        apiVersion,
        deployment: deploymentName,
      });
    }
    function createMessages(): ChatCompletionCreateParamsNonStreaming {
      return {
        messages: [
          { role: "system", content: "You are a helpful assistant." },
          {
            role: "user",
            content: [
              {
                type: "text",
                text: "Describe this picture:",
              },
              {
                type: "image_url",
                image_url: {
                  url: imageUrl,
                },
              },
            ],
          },
        ],
        model: "",
        max_tokens: 2000,
      };
    }
    async function printChoices(completion: ChatCompletion): Promise<void> {
      for (const choice of completion.choices) {
        console.log(choice.message);
      }
    }
    export async function main() {
      console.log("== Get Vision chat Sample ==");
    
      const client = getClient();
      const messages = createMessages();
      const completion = await client.chat.completions.create(messages);
      await printChoices(completion);
    }
    
    main().catch((err) => {
      console.error("Error occurred:", err);
    });
    
  2. Crie o tsconfig.json arquivo para transpilar o código TypeScript e copiar o código a seguir para ECMAScript.

    {
        "compilerOptions": {
          "module": "NodeNext",
          "target": "ES2022", // Supports top-level await
          "moduleResolution": "NodeNext",
          "skipLibCheck": true, // Avoid type errors from node_modules
          "strict": true // Enable strict type-checking options
        },
        "include": ["*.ts"]
    }
    
  3. Transpile de TypeScript para JavaScript.

    tsc
    
  4. Entre no Azure com o seguinte comando:

    az login
    
  5. Execute o código com o seguinte comando:

    node index.js
    

Limpar recursos

Se você quiser limpar e remover um recurso Azure OpenAI, poderá excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui outros recursos associados a ele.

Use este artigo para começar a usar o Azure OpenAI .NET SDK para implantar e usar um modelo de chat habilitado para visão.

Pré-requisitos

Microsoft Entra ID pré-requisitos

Para a autenticação sem chave recomendada com Microsoft Entra ID, você precisa:

  • Instale o CLI do Azure usado para autenticação sem chave com Microsoft Entra ID.
  • Atribua a Cognitive Services User função à sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de Acesso (IAM)>Adicionar atribuição de função.

Configurar

  1. Crie uma nova pasta vision-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir vision-quickstart && cd vision-quickstart
    
  2. Crie um novo aplicativo de console com o seguinte comando:

    dotnet new console
    
  3. Instale a biblioteca de clientes .NET OpenAI com o comando dotnet add package:

    dotnet add package Azure.AI.OpenAI
    
  4. Para a autenticação recomendada sem chave com Microsoft Entra ID, instale o pacote Azure.Identity com:

    dotnet add package Azure.Identity
    
  5. Para a recomendada autenticação sem chave com Microsoft Entra ID, faça logon no Azure com o seguinte comando:

    az login
    

Recuperar informações do recurso

Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu Azure recurso OpenAI:

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Keys e Endpoint ao examinar o recurso do portal Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação quando você implantou um modelo. Esse valor pode ser encontrado em Resource Management>Model Deployments no portal Azure.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Executar o início rápido

O código de exemplo neste início rápido usa Microsoft Entra ID para a autenticação sem chave recomendada. Se você preferir usar uma chave de API, poderá substituir o DefaultAzureCredential objeto por um AzureKeyCredential objeto.

AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 

Para executar o início rápido, siga estas etapas:

  1. Substitua o conteúdo de Program.cs com o seguinte código e atualize os valores de espaço reservado com seus próprios valores.

    using Azure;
    using Azure.AI.OpenAI;
    using Azure.Identity;
    using OpenAI.Chat; // Required for Passwordless auth
    
    string deploymentName = "gpt-4";
    
    string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? "https://<your-resource-name>.openai.azure.com/";
    string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "<your-key>";
    
    // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 
    //AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
    
    var chatClient = openAIClient.GetChatClient(deploymentName);
    
    var imageUrl = "YOUR_IMAGE_URL";
    
    var textPart = ChatMessageContentPart.CreateTextPart("Describe this picture:");
    var imgPart = ChatMessageContentPart.CreateImagePart(imageUrl); 
    
    var chatMessages = new List<ChatMessage>
    {
        new SystemChatMessage("You are a helpful assistant."),
        new UserChatMessage(textPart, imgPart)
    
    };
    
    ChatCompletion chatCompletion = await chatClient.CompleteChatAsync(chatMessages);
    
    Console.WriteLine($"[ASSISTANT]:");
    Console.WriteLine($"{chatCompletion.Content[0].Text}");
    
  2. Substitua YOUR_IMAGE_URL pela imagem publicamente acessível que você deseja carregar.

  3. Execute o aplicativo usando o comando dotnet run ou o botão executar na parte superior do Visual Studio:

    dotnet run
    

Saída

A saída do aplicativo será uma descrição da imagem fornecida na imageUri variável. O assistente analisará a imagem e fornecerá uma descrição detalhada com base em seu conteúdo.

Limpar recursos

Se você quiser limpar e remover um recurso Azure OpenAI, poderá excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui outros recursos associados a ele.

Detalhes da API

Os comandos a seguir mostram como usar a API de Preenchimento de Chat com modelos com suporte para visão. Para obter mais informações, consulte a referência de API.

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

  • RESOURCE_NAME é o nome do recurso Azure OpenAI

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 "max_tokens" ou max_completion_tokens, ou a saída de retorno será cortada. Para modelos de raciocínio de série o, use max_completion_tokens em vez de max_tokens.

Importante

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

Nota

Os formatos de imagem com suporte incluem JPEG, PNG, GIF (somente primeiro quadro) e WEBP.

{
    "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 código Python a seguir 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>"
}
...

Configurar o nível de detalhes da imagem

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.
  • low configuração: o modelo não ativa o modo "alta res", em vez disso processa uma versão de resolução 512x512 de resolução inferior, 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.
  • high configuração: o modelo ativa o modo "altas 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"
    }
}

Saída

Quando você envia uma imagem para um modelo com capacidade de visão, a API retorna uma resposta de conclusão do chat com a análise do modelo. A resposta inclui resultados de filtro de conteúdo específicos para Azure OpenAI.

{
    "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. Ele tem os seguintes valores possíveis:

  • stop: a API retornou a saída completa do modelo.
  • length: saída de modelo incompleta devido ao max_tokens parâmetro de entrada ou ao limite de token do modelo.
  • content_filter: conteúdo omitido devido a um sinalizador de nossos filtros de conteúdo.

Limitações de entrada

Esta seção descreve as limitações dos modelos de chat com funcionalidades de visão.

Suporte à imagem

  • Tamanho máximo da imagem de entrada: o tamanho máximo para imagens de entrada é restrito a 20 MB.
  • Precisão de baixa resolução: quando as imagens são analisadas usando a configuração de "baixa resolução", ela permite respostas mais rápidas e usa menos tokens de entrada para determinados casos de uso. No entanto, isso pode afetar a precisão do reconhecimento de objeto e texto dentro da imagem.
  • Restrição de chat de imagem : Quando você carrega imagens no portal Microsoft Foundry ou na API, você está limitado a 10 imagens por chamada de chat.

Informações de preços especiais

Importante

O conteúdo a seguir é apenas um exemplo e os preços estão sujeitos a alterações no futuro.

Modelos habilitados por visão acumulam encargos como outros modelos de chat do Azure OpenAI. Você paga uma taxa por token para os prompts e conclusões, detalhados na página de Preços. Os encargos base e outros recursos são descritos aqui:

O preço base do GPT-4 Turbo com Visão é:

  • Entrada: $0,01 por 1.000 tokens
  • Saída: US$ 0,03 por 1.000 tokens

Consulte a seção Tokens da visão geral para obter informações sobre como texto e imagens se traduzem em tokens.

Cálculo de preço de imagem de exemplo

Para um caso de uso típico, capture uma imagem com objetos visíveis e texto e um prompt de entrada com 100 tokens. Quando o serviço processa o prompt, ele gera 100 tokens como resultado. Na imagem, texto e objetos podem ser detectados. O preço dessa transação seria:

Item Detalhe Custo
Entrada de prompt de texto 100 tokens de texto $0,001
Entrada de imagem de exemplo (consulte tokens de imagem) 170 + 85 tokens de imagem US$ 0,00255
Recursos avançados de complemento para OCR US$ 1,50 / 1.000 transações US$ 0,0015
Recursos de complemento aprimorados para aterramento de objeto US$ 1,50 / 1.000 transações US$ 0,0015
Tokens de saída 100 tokens (presumido) US$ 0,003
Total $0,00955

Solucionando problemas

Questão Resolução
Saída truncada Aumentar max_tokens ou max_completion_tokens valor
Imagem não processada Verificar se a URL está acessível publicamente ou se a codificação base64 está correta
Limite de taxa excedido Implementar lógica de reintento com retardo exponencial