你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:在 AI 聊天中使用图像
通过 Azure OpenAI 服务将 GPT-4 Turbo 与图像配合使用入门。
注意
模型选择
支持视觉的最新模型为 gpt-4o
和 gpt-4o mini
。 它们提供公共预览版。 最新可用的 GA 模型是 gpt-4
版本 turbo-2024-04-09
。
通过 Azure AI Studio,以无代码方式开始探索 GPT-4 Turbo with Vision 功能。
先决条件
- Azure 订阅。 免费创建一个。
- 已部署 GPT-4 Turbo with Vision 模型的 Azure OpenAI 服务资源。 请参阅适用区域的 GPT-4 和 GPT-4 Turbo 预览版模型可用性。 有关资源创建的详细信息,请参阅资源部署指南。
注意
目前不支持使用视觉模型关闭 GPT-4 Turbo 的内容筛选。
转到 Azure AI Studio
浏览到 Azure AI Studio,然后使用与 Azure OpenAI 资源关联的凭据登录。 在登录过程中或登录之后,选择适当的目录、Azure 订阅和 Azure OpenAI 资源。
在“管理”下选择“部署”,然后通过选择模型名称“gpt-4”和模型版本“vision-preview”来创建 GPT-4 Turbo with Vision 部署。 有关模型部署的详细信息,请参阅资源部署指南。
在“操场”部分下选择“聊天”。
操场
在此页中,可以快速循环访问和试验模型的功能。
有关助手设置、聊天会话、设置和面板的一般帮助,请参阅聊天快速入门。
启动聊天会话来分析图像或视频
在此聊天会话中,你将指示助手来帮助理解你输入的图像。
首先,从下拉列表中选择 GPT-4 Turbo with Vision 部署。
在“助手设置”窗格中,提供一条系统消息来指导助手。 默认系统消息为:“你是帮助人们查找信息的 AI 助手。”可以根据上传的图像或场景定制系统消息。
注意
建议更新系统消息,使之与任务具体相关,以免模型做出无用的响应。
保存所做的更改,当系统提示你确认更新系统消息时,请选择“继续”。
在“聊天会话”窗格中,输入文本提示(例如“描述此图像”),然后使用附件按钮上传图像。 可以根据用例使用不同的文本提示。 然后选择“发送”。
观察提供的输出。 考虑提出与图像分析相关的后续问题以了解更多信息。
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
按照本文的要求,开始通过 Azure OpenAI REST API 来部署和使用 GPT-4 Turbo with Vision 模型。
先决条件
- Azure 订阅。 免费创建一个。
- Python 3.8 或更高版本。
- 以下 Python 库:
requests
、json
。 - 已部署 GPT-4 Turbo with Vision 模型的 Azure OpenAI 服务资源。 请参阅适用区域的 GPT-4 和 GPT-4 Turbo 预览版模型可用性。 有关资源创建的详细信息,请参阅资源部署指南。
注意
目前不支持使用视觉模型关闭 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 值。 准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
创建新的 Python 应用程序
创建名为“quickstart.py”的新 Python 文件。 在首选编辑器或 IDE 中打开新文件。
将 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)
做出以下更改:
- 在相应的字段中输入终结点 URL 和密钥。
- 在相应字段中输入 GPT-4 Turbo with Vision 部署名称。
- 将
"image"
字段的值更改为图像的 URL。提示
还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南。
使用
python
命令运行应用程序:python quickstart.py
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
按照本文的要求,开始通过 Azure OpenAI Python SDK 来部署和使用 GPT-4 Turbo with Vision 模型。
先决条件
- Azure 订阅。 免费创建一个。
- Python 3.8 或更高版本。
- 以下 Python 库:
os
- 已部署 GPT-4 Turbo with Vision 模型的 Azure OpenAI 服务资源。 请参阅适用区域的 GPT-4 和 GPT-4 Turbo 预览版模型可用性。 有关资源创建的详细信息,请参阅资源部署指南。
设置
使用以下项安装 OpenAI Python 客户端库:
pip install openai
注意
此库由 OpenAI 维护。 请参阅发布历史记录,以跟踪库的最新更新。
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1 或 KEY2 。 |
在 Azure 门户中转到你的资源。 可在“资源管理”部分中找到“密钥和终结点”部分。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1
或 KEY2
。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
环境变量
为密钥和终结点创建和分配持久环境变量。
重要
如果使用 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 中打开新文件。
将 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)
做出以下更改:
- 在相应字段中输入 GPT-4 Turbo with Vision 部署的名称。
- 将
"url"
字段的值更改为图像的 URL。提示
还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南。
使用
python
命令运行应用程序:python quickstart.py
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
按照本文的要求,开始通过 OpenAI JavaScript SDK 来部署和使用 GPT-4 Turbo with Vision 模型。
此 SDK 由 OpenAI 提供,Azure 则提供特定于 Azure 的类型。
先决条件
- Azure 订阅 - 免费创建订阅
- LTS 版本的 Node.js
- Azure CLI用于本地开发环境中的无密码身份验证,请使用 Azure CLI 登录以创建必要的上下文。
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
注意
此库由 OpenAI 维护。 请参阅发布历史记录,以跟踪库的最新更新。
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1 或 KEY2 。 |
在 Azure 门户中转到你的资源。 可在“资源管理”部分中找到“密钥和终结点”部分。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1
或 KEY2
。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
环境变量
为密钥和终结点创建和分配持久环境变量。
重要
如果使用 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。
将 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); });
做出以下更改:
- 在相应字段中输入 GPT-4 Turbo with Vision 部署的名称。
- 将
"url"
字段的值更改为图像的 URL。提示
还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南。
使用以下命令运行应用程序:
node quickstart.js
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
按照本文的要求,开始通过 OpenAI JavaScript SDK 来部署和使用 GPT-4 Turbo with Vision 模型。
此 SDK 由 OpenAI 提供,Azure 则提供特定于 Azure 的类型。
先决条件
- Azure 订阅 - 免费创建订阅
- LTS 版本的 Node.js
- TypeScript
- Azure CLI用于本地开发环境中的无密码身份验证,请使用 Azure CLI 登录以创建必要的上下文。
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
注意
此库由 OpenAI 维护。 请参阅发布历史记录,以跟踪库的最新更新。
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1 或 KEY2 。 |
在 Azure 门户中转到你的资源。 可在“资源管理”部分中找到“密钥和终结点”部分。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1
或 KEY2
。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
环境变量
为密钥和终结点创建和分配持久环境变量。
重要
如果使用 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。
创建 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); });
做出以下更改:
- 在相应字段中输入 GPT-4 Turbo with Vision 部署的名称。
- 将
"url"
字段的值更改为图像的 URL。提示
还可以使用 base 64 编码的图像数据代替 URL。 有关详细信息,请参阅 GPT-4 Turbo with Vision 操作指南。
使用以下命令生成应用程序:
tsc
使用以下命令运行应用程序:
node quickstart.js
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
按照本文的要求,开始通过 Azure OpenAI .NET SDK 来部署和使用 GPT-4 Turbo with Vision 模型。
先决条件
- Azure 订阅。 可以免费创建一个帐户。
- The .NET 8.0 SDK
- 已部署 GPT-4 Turbo with Vision 模型的 Azure OpenAI 服务资源。 请参阅适用区域的 GPT-4 和 GPT-4 Turbo 预览版模型可用性。 有关资源创建的详细信息,请参阅资源部署指南。
设置
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
AZURE_OPENAI_ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Studio 中的“部署”页找到终结点。 示例终结点为:https://docs-test-001.openai.azure.com/ 。 |
AZURE_OPENAI_API_KEY |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1 或 KEY2 。 |
在 Azure 门户中转到你的资源。 可以在“资源管理”部分找到“终结点和密钥”。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1
或 KEY2
。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
创建 .NET 应用
使用
dotnet new
命令创建 .NET 应用:dotnet new console -n OpenAISpeech
更改为新应用的目录:
cd OpenAISpeech
安装客户端库
安装 Azure.OpenAI
客户端库:
dotnet add package Azure.AI.OpenAI
建议使用无密码身份验证
无密码身份验证比基于密钥的替代方法更安全,建议使用它连接到 Azure 服务。 如果选择使用无密码身份验证,则需要完成以下操作:
添加
Azure.Identity
程序包。dotnet add package Azure.Identity
将
Cognitive Services User
角色分配给用户帐户。 这可以在 Azure 门户中你的 OpenAI 资源内的“访问控制(IAM)”>“添加角色分配”下完成。通过
az login
使用 Visual Studio 或 Azure CLI 登录到 Azure。
更新应用代码
将
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 服务安全性。
使用
dotnet run
命令或 Visual Studio 顶部的运行按钮运行应用程序:dotnet run
应用会在你为 speechFilePath
变量指定的位置生成音频文件。 播放设备上的文件,以听到生成的音频。
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。