你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:在 AI 聊天中使用图像

通过 Azure OpenAI 服务将 GPT-4 Turbo 与图像配合使用入门。

注意

模型选择

支持视觉的最新模型为 gpt-4ogpt-4o mini。 它们提供公共预览版。 最新可用的 GA 模型是 gpt-4 版本 turbo-2024-04-09

通过 Azure OpenAI Studio,以无代码方式开始探索 GPT-4 Turbo with Vision 功能。

先决条件

注意

目前不支持使用视觉模型关闭 GPT-4 Turbo 的内容筛选。

登录到 Azure OpenAI Studio

浏览到 Azure OpenAI Studio,然后使用与 Azure OpenAI 资源关联的凭据登录。 在登录过程中或登录之后,选择适当的目录、Azure 订阅和 Azure OpenAI 资源。

在“管理”下选择“部署”,然后通过选择模型名称“gpt-4”和模型版本“vision-preview”来创建 GPT-4 Turbo with Vision 部署。 有关模型部署的详细信息,请参阅资源部署指南

在“操场”部分下选择“聊天”

操场

在此页中,可以快速循环访问和试验模型的功能。

有关助手设置、聊天会话、设置和面板的一般帮助,请参阅聊天快速入门

启动聊天会话来分析图像或视频

在此聊天会话中,你将指示助手来帮助理解你输入的图像。

  1. 首先,从下拉列表中选择 GPT-4 Turbo with Vision 部署。

  2. 在“助手设置”窗格中,提供一条系统消息来指导助手。 默认系统消息为:“你是帮助人们查找信息的 AI 助手。”可以根据上传的图像或场景定制系统消息。

    注意

    建议更新系统消息,使之与任务具体相关,以免模型做出无用的响应。

  3. 保存所做的更改,当系统提示你确认更新系统消息时,请选择“继续”

  4. 在“聊天会话”窗格中,输入文本提示(例如“描述此图像”),然后使用附件按钮上传图像。 可以根据用例使用不同的文本提示。 然后选择“发送”

  5. 观察提供的输出。 考虑提出与图像分析相关的后续问题以了解更多信息。

OpenAI Studio 聊天操场的屏幕截图。

清理资源

如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。

按照本文的要求,开始通过 Azure OpenAI REST API 来部署和使用 GPT-4 Turbo with Vision 模型。

先决条件

注意

目前不支持使用视觉模型关闭 GPT-4 Turbo 的内容筛选。

检索密钥和终结点

若要成功调用 Azure OpenAI API,需要有关 Azure OpenAI 资源的以下信息:

变量 名称
终结点 api_base 终结点值位于 Azure 门户中资源的“密钥和终结点”下。 还可以通过 Azure AI Studio 中的“部署”页查找终结点。 示例终结点为:https://docs-test-001.openai.azure.com/
api_key 密钥值也位于 Azure 门户中资源的“密钥和终结点”下。 Azure 为资源生成两个密钥。 可以使用其中任意一个值。

在 Azure 门户中转到你的资源。 在导航窗格中,选择“资源管理”下的“密钥和终结点”。 复制“终结点”值和访问密钥值。 可以使用 KEY 1 或 KEY 2 值。 准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

屏幕截图显示 Azure 门户中的 Azure OpenAI 资源的“密钥和终结点”页面。

创建新的 Python 应用程序

创建名为“quickstart.py”的新 Python 文件。 在首选编辑器或 IDE 中打开新文件。

  1. quickstart.py 的内容替换为以下代码。

    # 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. 做出以下更改:

    1. 在相应的字段中输入终结点 URL 和密钥。
    2. 在相应字段中输入 GPT-4 Turbo with Vision 部署名称。
    3. "image" 字段的值更改为图像的 URL。

      提示

      还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南

  3. 使用 python 命令运行应用程序:

    python quickstart.py
    

清理资源

如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。

按照本文的要求,开始通过 Azure OpenAI Python SDK 来部署和使用 GPT-4 Turbo with Vision 模型。

库源代码 | 包 (PyPi) |

先决条件

设置

使用以下项安装 OpenAI Python 客户端库:

pip install openai

注意

此库由 OpenAI 维护。 请参阅发布历史记录,以跟踪库的最新更新。

检索密钥和终结点

若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。

变量名称
ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/
API-KEY 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1KEY2

在 Azure 门户中转到你的资源。 可在“资源管理”部分中找到“密钥和终结点”部分。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1KEY2。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

Azure 门户中 Azure OpenAI 资源概述 UI 的屏幕截图,其中终结点和访问密钥的位置用红圈标示。

环境变量

为密钥和终结点创建和分配持久环境变量。

重要

如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

创建新的 Python 应用程序

创建名为“quickstart.py”的新 Python 文件。 在首选编辑器或 IDE 中打开新文件。

  1. quickstart.py 的内容替换为以下代码。

    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. 做出以下更改:

    1. 在相应字段中输入 GPT-4 Turbo with Vision 部署的名称。
    2. "url" 字段的值更改为图像的 URL。

      提示

      还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南

  3. 使用 python 命令运行应用程序:

    python quickstart.py
    

清理资源

如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。

按照本文的要求,开始通过 OpenAI JavaScript SDK 来部署和使用 GPT-4 Turbo with Vision 模型。

此 SDK 由 OpenAI 提供,Azure 则提供特定于 Azure 的类型。

参考文档 | 库源代码 | 包 (npm) | 示例

先决条件


注意

此库由 OpenAI 维护。 请参阅发布历史记录,以跟踪库的最新更新。

检索密钥和终结点

若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。

变量名称
ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/
API-KEY 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1KEY2

在 Azure 门户中转到你的资源。 可在“资源管理”部分中找到“密钥和终结点”部分。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1KEY2。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

Azure 门户中 Azure OpenAI 资源概述 UI 的屏幕截图,其中终结点和访问密钥的位置用红圈标示。

环境变量

为密钥和终结点创建和分配持久环境变量。

重要

如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

创建 Node 应用程序

在控制台窗口(例如 cmd、PowerShell 或 Bash)中,为应用创建一个新目录并导航到该目录。 然后运行 npm init 命令以使用 package.json 文件创建一个 node 应用程序。

npm init

安装客户端库

使用以下命令安装客户端库:

npm install openai @azure/identity

你的应用的 package.json 文件将随依赖项进行更新。

创建用于图像提示的新 JavaScript 应用程序

azure-samples/cognitive-services-sample-data-files 中选择一个图像,并在环境变量中设置图像的 URL。

  1. 将 quickstart.js 的内容替换为以下代码。

    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"] || "<endpoint>";
    const imageUrl = process.env["IMAGE_URL"] || "<image url>";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = "2024-07-01-preview";
    const deploymentName = "gpt-4-with-turbo";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.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 GPT-4 Turbo with vision 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. 做出以下更改:

    1. 在相应字段中输入 GPT-4 Turbo with Vision 部署的名称。
    2. "url" 字段的值更改为图像的 URL。

      提示

      还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南

  3. 使用以下命令运行应用程序:

    node quickstart.js
    

清理资源

如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。

按照本文的要求,开始通过 OpenAI JavaScript SDK 来部署和使用 GPT-4 Turbo with Vision 模型。

此 SDK 由 OpenAI 提供,Azure 则提供特定于 Azure 的类型。

参考文档 | 库源代码 | 包 (npm) | 示例

先决条件

注意

此库由 OpenAI 维护。 请参阅发布历史记录,以跟踪库的最新更新。

检索密钥和终结点

若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。

变量名称
ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/
API-KEY 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1KEY2

在 Azure 门户中转到你的资源。 可在“资源管理”部分中找到“密钥和终结点”部分。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1KEY2。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

Azure 门户中 Azure OpenAI 资源概述 UI 的屏幕截图,其中终结点和访问密钥的位置用红圈标示。

环境变量

为密钥和终结点创建和分配持久环境变量。

重要

如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

创建 Node 应用程序

在控制台窗口(例如 cmd、PowerShell 或 Bash)中,为应用创建一个新目录并导航到该目录。 然后运行 npm init 命令以使用 package.json 文件创建一个 node 应用程序。

npm init

安装客户端库

使用以下命令安装客户端库:

npm install openai @azure/identity

你的应用的 package.json 文件将随依赖项进行更新。

创建用于图像提示的新 JavaScript 应用程序

azure-samples/cognitive-services-sample-data-files 中选择一个图像,并在环境变量中设置图像的 URL。

  1. 创建 quickstart.ts 并将以下代码粘贴进去。

    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"] || "<endpoint>";
    const imageUrl = process.env["IMAGE_URL"] || "<image url>";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = "2024-07-01-preview";
    const deploymentName = "gpt-4-with-turbo";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.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 GPT-4 Turbo with vision 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. 做出以下更改:

    1. 在相应字段中输入 GPT-4 Turbo with Vision 部署的名称。
    2. "url" 字段的值更改为图像的 URL。

      提示

      还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南

  3. 使用以下命令生成应用程序:

    tsc
    
  4. 使用以下命令运行应用程序:

    node quickstart.js
    

清理资源

如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。

按照本文的要求,开始通过 Azure OpenAI .NET SDK 来部署和使用 GPT-4 Turbo with Vision 模型。

先决条件

设置

检索密钥和终结点

若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。

变量名称
AZURE_OPENAI_ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/
AZURE_OPENAI_API_KEY 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1KEY2

在 Azure 门户中转到你的资源。 可以在“资源管理”部分找到“终结点和密钥”。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1KEY2。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

Azure 门户中 Azure OpenAI 资源概述 UI 的屏幕截图,其中终结点和访问密钥位置突出显示。

创建 .NET 应用

  1. 使用 dotnet new 命令创建 .NET 应用:

    dotnet new console -n OpenAISpeech
    
  2. 更改为新应用的目录:

    cd OpenAISpeech
    

安装客户端库

安装 Azure.OpenAI 客户端库:

dotnet add package Azure.AI.OpenAI

无密码身份验证比基于密钥的替代方法更安全,建议使用它连接到 Azure 服务。 如果选择使用无密码身份验证,则需要完成以下操作:

  1. 添加 Azure.Identity 程序包。

    dotnet add package Azure.Identity
    
  2. Cognitive Services User角色分配给用户帐户。 这可以在 Azure 门户中你的 OpenAI 资源内的“访问控制(IAM)”>“添加角色分配”下完成。

  3. 通过 az login 使用 Visual Studio 或 Azure CLI 登录到 Azure。

更新应用代码

  1. program.cs 的内容替换为以下代码,并将占位符值更新为你自己的值。

    using Azure;
    using Azure.AI.OpenAI;
    using Azure.Identity;
    using OpenAI.Chat; // Required for Passwordless auth
    
    var endpoint = new Uri("YOUR_AZURE_OPENAI_ENDPOINT");
    var credentials = new AzureKeyCredential("YOUR_AZURE_OPENAI_KEY");
    // var credentials = new DefaultAzureCredential(); // Use this line for Passwordless auth
    var deploymentName = "gpt-4"; // Default name, update with your own if needed
    
    var openAIClient = new AzureOpenAIClient(endpoint, credentials);
    var chatClient = openAIClient.GetChatClient(deploymentName);
    
    var imageUri = "YOUR_IMAGE_URL";
    
    List<ChatMessage> messages = [
        new UserChatMessage(
            ChatMessageContentPart.CreateTextMessageContentPart("Please describe the following image:"),
            ChatMessageContentPart.CreateImageMessageContentPart(new Uri(imageUri), "image/png"))
    ];
    
    ChatCompletion chatCompletion = await chatClient.CompleteChatAsync(messages);
    
    Console.WriteLine($"[ASSISTANT]:");
    Console.WriteLine($"{chatCompletion.Content[0].Text}");
    

    重要

    对于生产环境来说,请使用安全的方法(例如 Azure Key Vault)来存储和访问你的凭据。 有关凭据安全性的详细信息,请参阅 Azure AI 服务安全性

  2. 使用 dotnet run 命令或 Visual Studio 顶部的运行按钮运行应用程序:

    dotnet run
    

应用会在你为 speechFilePath 变量指定的位置生成音频文件。 播放设备上的文件,以听到生成的音频。

清理资源

如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。

后续步骤