你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Azure OpenAI 服务生成图像
注意
图像生成 API 根据文本提示创建图像。 它不会编辑或创建现有图像中的变体。
使用本指南开始在浏览器中使用 Azure OpenAI 生成图像。
先决条件
- Azure 订阅。 免费创建一个。
- 在受支持的区域中创建的 Azure OpenAI 资源。 请参阅区域可用性。
- 然后,需要使用 Azure 资源部署
dalle3
模型。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
登录到 Azure OpenAI Studio
浏览到 Azure OpenAI Studio,然后使用与 Azure OpenAI 资源关联的凭据登录。 在登录过程中或登录之后,选择适当的目录、Azure 订阅和 Azure OpenAI 资源。
在 Azure OpenAI Studio 登陆页中,选择“图像操场”,以使用图像生成 API。 选择页面顶部附近的“设置”,并确认“部署”下拉列表选择了 DALL-E 3 部署。
试用图像生成
通过“图像操场”开始使用无代码方法浏览 Azure OpenAI 功能。 在文本框中输入图像提示,然后选择“生成”。 AI 生成的图像准备就绪后,它将显示在页面上。
注意
图像生成 API 附带内容审核筛选器。 如果 Azure OpenAI 将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅事件筛选。
在“图像操场”中,还可以查看根据设置预填充的 Python 和 cURL 代码示例。 选择页面顶部附近的“查看代码”。 可以使用此代码编写完成相同任务的应用程序。
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 尝试 Azure OpenAI 示例 GitHub 存储库中的示例。
- 请参阅 API 参考
使用本指南开始通过 Python 调用 Azure OpenAI 服务图像生成 REST API。
先决条件
- Azure 订阅。 免费创建一个。
- Python 3.8 或更高版本。
- 安装了以下 Python 库:
os
、requests
、json
。 - 在受支持的区域中创建的 Azure OpenAI 资源。 请参阅区域可用性。
- 然后,需要使用 Azure 资源部署
dalle3
模型。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功调用 Azure OpenAI API,需要有关 Azure OpenAI 资源的以下信息:
变量 | 名称 | 值 |
---|---|---|
终结点 | api_base |
终结点值位于 Azure 门户中资源的“密钥和终结点”下。 还可以通过 Azure AI Foundry 门户中的“部署”页查找终结点。 示例终结点为:https://docs-test-001.openai.azure.com/ 。 |
键 | api_key |
密钥值也位于 Azure 门户中资源的“密钥和终结点”下。 Azure 为资源生成两个密钥。 可以使用其中任意一个值。 |
在 Azure 门户中转到你的资源。 在导航窗格中,选择“资源管理”下的“密钥和终结点”。 复制“终结点”值和访问密钥值。 可以使用 KEY 1 或 KEY 2 值。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
环境变量
为密钥和终结点创建和分配持久环境变量。
重要
如果使用 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 的内容替换为以下代码。 将
prompt
的值更改为首选文本。还需要将 URL 中的
<dalle3>
替换为你在部署 DALL-E3 模型时选择的部署名称。 输入模型名称将导致错误,除非选择的部署名称与基础模型名称相同。 如果遇到错误,请仔细检查,确保你的终结点和/openai/deployments
之间的分隔处没有重复的/
。import requests import time import os api_base = os.environ['AZURE_OPENAI_ENDPOINT'] # Enter your endpoint here api_key = os.environ['AZURE_OPENAI_API_KEY'] # Enter your API key here api_version = '2024-02-01' url = f"{api_base}/openai/deployments/<dalle3>/images/generations?api-version={api_version}" headers= { "api-key": api_key, "Content-Type": "application/json" } body = { # Enter your prompt text here "prompt": "A multi-colored umbrella on the beach, disposable camera", "size": "1024x1024", # supported values are “1792x1024”, “1024x1024” and “1024x1792” "n": 1, #The number of images to generate. Only n=1 is supported for DALL-E 3. "quality": "hd", # Options are “hd” and “standard”; defaults to standard "style": "vivid" # Options are “natural” and “vivid”; defaults to “vivid” } submission = requests.post(url, headers=headers, json=body) image_url = submission.json()['data'][0]['url'] print(image_url)
此脚本进行同步图像生成 API 调用。
重要
请记住完成后将密钥从代码中删除,永远不要公开发布该密钥。 对于生产,请使用安全的方式存储和访问凭据。 有关详细信息,请参阅 Azure Key Vault。
使用
python
命令运行应用程序:python quickstart.py
片刻之后即可获得响应。
输出
成功的图像生成 API 调用的输出如下示例所示。 url
字段包含一个 URL,可在其中下载生成的图像。 URL 保持活动状态 24 小时。
{
"created": 1698116662,
"data": [
{
"url": "<URL_to_generated_image>",
"revised_prompt": "<prompt_that_was_used>"
}
]
}
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会生成图像。 有关详细信息,请参阅事件筛选。 有关错误响应的示例,请参阅 DALL-E 操作指南。
系统将返回操作状态 Failed
,消息中的 error.code
值将设置为 contentFilter
。 下面是一个示例:
{
"created": 1698435368,
"error":
{
"code": "contentFilter",
"message": "Your task failed as a result of our safety system."
}
}
生成的图像本身也可能会被筛除。 在这种情况下,错误消息设置为 Generated image was filtered as a result of our safety system.
。 下面是一个示例:
{
"created": 1698435368,
"error":
{
"code": "contentFilter",
"message": "Generated image was filtered as a result of our safety system."
}
}
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 尝试 Azure OpenAI 示例 GitHub 存储库中的示例。
- 请参阅 API 参考
使用本指南通过适用于 Python 的 Azure OpenAI SDK 开始生成图像。
先决条件
- Azure 订阅。 免费创建一个。
- Python 3.8 或更高版本。
- 在兼容区域中创建的 Azure OpenAI 资源。 请参阅区域可用性。
- 然后,需要使用 Azure 资源部署
dalle3
模型。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功调用 Azure OpenAI API,需要有关 Azure OpenAI 资源的以下信息:
变量 | 名称 | 值 |
---|---|---|
终结点 | api_base |
终结点值位于 Azure 门户中资源的“密钥和终结点”下。 还可以通过 Azure AI Foundry 门户中的“部署”页查找终结点。 示例终结点为:https://docs-test-001.openai.azure.com/ 。 |
键 | api_key |
密钥值也位于 Azure 门户中资源的“密钥和终结点”下。 Azure 为资源生成两个密钥。 可以使用其中任意一个值。 |
在 Azure 门户中转到你的资源。 在导航窗格中,选择“资源管理”下的“密钥和终结点”。 复制“终结点”值和访问密钥值。 可以使用 KEY 1 或 KEY 2 值。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
环境变量
为密钥和终结点创建和分配持久环境变量。
重要
如果使用 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 SDK
打开命令提示符并浏览到你的项目文件夹。 使用以下命令安装 OpenAI Python SDK:
pip install openai
同时安装以下库:
pip install requests
pip install pillow
使用 DALL-E 生成图像
创建新的 python 文件 quickstart.py。 在你喜欢的编辑器或 IDE 中打开该文件。
将 quickstart.py 的内容替换为以下代码。
from openai import AzureOpenAI
import os
import requests
from PIL import Image
import json
client = AzureOpenAI(
api_version="2024-02-01",
api_key=os.environ["AZURE_OPENAI_API_KEY"],
azure_endpoint=os.environ['AZURE_OPENAI_ENDPOINT']
)
result = client.images.generate(
model="dalle3", # the name of your DALL-E 3 deployment
prompt="a close-up of a bear walking throughthe forest",
n=1
)
json_response = json.loads(result.model_dump_json())
# Set the directory for the stored image
image_dir = os.path.join(os.curdir, 'images')
# If the directory doesn't exist, create it
if not os.path.isdir(image_dir):
os.mkdir(image_dir)
# Initialize the image path (note the filetype should be png)
image_path = os.path.join(image_dir, 'generated_image.png')
# Retrieve the generated image
image_url = json_response["data"][0]["url"] # extract image URL from response
generated_image = requests.get(image_url).content # download the image
with open(image_path, "wb") as image_file:
image_file.write(generated_image)
# Display the image in the default image viewer
image = Image.open(image_path)
image.show()
- 在相应的字段中输入终结点 URL 和密钥。
- 将
prompt
的值更改为首选文本。 - 将值
model
更改为已部署的 DALL-E 3 模型的名称。
重要
请记住完成后将密钥从代码中删除,永远不要公开发布该密钥。 对于生产,请使用安全的方式存储和访问凭据。 有关详细信息,请参阅 Azure Key Vault。
使用 python
命令运行应用程序:
python quickstart.py
片刻之后即可获得响应。
输出
Azure OpenAI 将输出映像存储在指定目录中的 generated_image.png 文件中。 脚本还将在默认图像查看器中显示该图像。
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会生成图像。 有关详细信息,请参阅事件筛选。
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 尝试 Azure OpenAI 示例 GitHub 存储库中的示例。
- 请参阅 API 参考
使用本指南通过适用于 C# 的 Azure OpenAI SDK 开始生成图像。
先决条件
- Azure 订阅 - 免费创建订阅
- .NET 7 SDK
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Foundry 门户中的“部署”页找到终结点。 示例终结点为: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"
创建新的 .NET Core 应用程序
在控制台窗口(例如 cmd、PowerShell 或 Bash)中,使用 dotnet new
命令创建名为 azure-openai-quickstart
的新控制台应用。 此命令将创建包含单个 C# 源文件的简单“Hello World”项目:Program.cs。
dotnet new console -n azure-openai-quickstart
将目录更改为新创建的应用文件夹。 可使用以下代码生成应用程序:
dotnet build
生成输出不应包含警告或错误。
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
安装 OpenAI .NET SDK
使用以下命令安装客户端库:
dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.6
使用 DALL-E 生成图像
从项目目录中,打开 program.cs 文件并将其内容替换为以下代码:
using Azure;
using Azure.AI.OpenAI;
using OpenAI.Images;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
AzureOpenAIClient azureClient = new(
new Uri(endpoint),
new AzureKeyCredential(key));
// This must match the custom deployment name you chose for your model
ImageClient chatClient = azureClient.GetImageClient("dalle-3");
var imageGeneration = await chatClient.GenerateImageAsync(
"a happy monkey sitting in a tree, in watercolor",
new ImageGenerationOptions()
{
Size = GeneratedImageSize.W1024xH1024
}
);
Console.WriteLine(imageGeneration.Value.ImageUri);
使用以下命令从应用程序目录生成并运行应用程序:
dotnet build
dotnet run
输出
生成的图像的 URL 将输出到控制台中。
https://dalleproduse.blob.core.windows.net/private/images/b7ac5e55-f1f8-497a-8d0e-8f51446bf538/generated_00.png?se=2024-07-12T13%3A47%3A56Z&sig=Zri37iYVTVtc52qzTFBOqPgSHvXwEhcO86Smv2ojB%2FE%3D&ske=2024-07-17T12%3A15%3A44Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2024-07-10T12%3A15%3A44Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02
注意
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。
清理资源
如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 有关更多示例,请查看 Azure OpenAI 示例 GitHub 存储库。
使用本指南通过适用于 Java 的 Azure OpenAI SDK 开始生成图像。
库源代码 | 项目 (Maven) | 示例
先决条件
- Azure 订阅 - 免费创建订阅
- 最新版的 Java 开发工具包 (JDK)
- Gradle 生成工具,或其他依赖项管理器。
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Foundry 门户中的“部署”页找到终结点。 示例终结点为: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"
创建新的 Java 应用程序
创建一个新的 Gradle 项目。
在控制台窗口(例如 cmd、PowerShell 或 Bash)中,为应用创建一个新目录并导航到该目录。
mkdir myapp && cd myapp
从工作目录运行 gradle init
命令。 此命令将创建 Gradle 的基本生成文件,包括 build.gradle.kts,在运行时将使用该文件创建并配置应用程序。
gradle init --type basic
当提示你选择一个 DSL 时,选择 Kotlin。
安装 Java SDK
本快速入门使用 Gradle 依赖项管理器。 可以在 Maven 中央存储库中找到客户端库以及其他依赖项管理器的信息。
找到 build.gradle.kts,并使用喜好的 IDE 或文本编辑器将其打开。 然后在该文件中复制以下生成配置。 此配置将项目定义为一个 Java 应用程序,其入口点为 OpenAIQuickstart 类。 它会导入 Azure AI 视觉库。
plugins {
java
application
}
application {
mainClass.set("OpenAIQuickstart")
}
repositories {
mavenCentral()
}
dependencies {
implementation(group = "com.azure", name = "azure-ai-openai", version = "1.0.0-beta.3")
implementation("org.slf4j:slf4j-simple:1.7.9")
}
使用 DALL-E 生成图像
创建 Java 文件。
从工作目录运行以下命令,以创建项目源文件夹:
mkdir -p src/main/java
导航到新文件夹,并创建名为 OpenAIQuickstart.java 的文件。
在首选编辑器或 IDE 中打开 OpenAIQuickstart.java,并粘贴以下代码。
import com.azure.ai.openai.OpenAIAsyncClient; import com.azure.ai.openai.OpenAIClientBuilder; import com.azure.ai.openai.models.ImageGenerationOptions; import com.azure.ai.openai.models.ImageLocation; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.models.ResponseError; import java.util.concurrent.TimeUnit; /** * Sample demonstrates how to get the images for a given prompt. */ public class OpenAIQuickstart { /** * Runs the sample algorithm and demonstrates how to get the images for a given prompt. * * @param args Unused. Arguments to the program. */ public static void main(String[] args) throws InterruptedException { // Get key and endpoint from environment variables: String azureOpenaiKey = System.getenv("AZURE_OPENAI_API_KEY"); String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT"); OpenAIAsyncClient client = new OpenAIClientBuilder() .endpoint(endpoint) .credential(new AzureKeyCredential(azureOpenaiKey)) .buildAsyncClient(); ImageGenerationOptions imageGenerationOptions = new ImageGenerationOptions( "A drawing of the Seattle skyline in the style of Van Gogh"); client.getImages(imageGenerationOptions).subscribe( images -> { for (ImageLocation imageLocation : images.getData()) { ResponseError error = imageLocation.getError(); if (error != null) { System.out.printf("Image generation operation failed. Error code: %s, error message: %s.%n", error.getCode(), error.getMessage()); } else { System.out.printf( "Image location URL that provides temporary access to download the generated image is %s.%n", imageLocation.getUrl()); } } }, error -> System.err.println("There was an error getting images." + error), () -> System.out.println("Completed getImages.")); // The .subscribe() creation and assignment is not a blocking call. For the purpose of this example, we sleep // the thread so the program does not end before the send operation is complete. Using .block() instead of // .subscribe() will turn this into a synchronous call. TimeUnit.SECONDS.sleep(10); } }
导航回项目根文件夹,并通过以下内容生成应用:
gradle build
然后,使用
gradle run
命令运行应用:gradle run
输出
生成的图像的 URL 将输出到控制台中。
Image location URL that provides temporary access to download the generated image is https://dalleproduse.blob.core.windows.net/private/images/d2ea917f-8802-4ad6-8ef6-3fb7a15c8482/generated_00.png?se=2023-08-25T23%3A11%3A28Z&sig=%2BKa5Mkb9U88DfvxoBpyAjamYRzwb7aVCEucM6XJC3wQ%3D&ske=2023-08-31T15%3A27%3A47Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-24T15%3A27%3A47Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02.
Completed getImages.
注意
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。
清理资源
如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 有关更多示例,请查看 Azure OpenAI 示例 GitHub 存储库。
使用本指南通过适用于 JavaScript 的 Azure OpenAI SDK 开始生成图像。
先决条件
- Azure 订阅 - 免费创建订阅
- LTS 版本的 Node.js
- Azure CLI用于本地开发环境中的无密码身份验证,请使用 Azure CLI 登录以创建必要的上下文。
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Foundry 门户中的“部署”页找到终结点。 示例终结点为: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 文件将随依赖项进行更新。
使用 DALL-E 生成图像
创建一个名为 ImageGeneration.js 的新文件,然后在首选代码编辑器中打开它。 将以下代码复制到 ImageGeneration.js 文件中:
const { AzureOpenAI } = require("openai");
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"];
// Required Azure OpenAI deployment name and API version
const apiVersion = "2024-07-01";
const deploymentName = "dall-e-3";
// The prompt to generate images from
const prompt = "a monkey eating a banana";
const numberOfImagesToGenerate = 1;
// 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,
});
}
async function main() {
console.log("== Image Generation ==");
const client = getClient();
const results = await client.images.generate({
prompt,
size: "1024x1024",
n: numberOfImagesToGenerate,
model: "",
style: "vivid", // or "natural"
});
for (const image of results.data) {
console.log(`Image generation result URL: ${image.url}`);
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
使用以下命令运行该脚本:
node ImageGeneration.js
输出
生成的图像的 URL 将输出到控制台中。
== Batch Image Generation ==
Image generation result URL: https://dalleproduse.blob.core.windows.net/private/images/5e7536a9-a0b5-4260-8769-2d54106f2913/generated_00.png?se=2023-08-29T19%3A12%3A57Z&sig=655GkWajOZ9ALjFykZF%2FBMZRPQALRhf4UPDImWCQoGI%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02
Image generation result URL: https://dalleproduse.blob.core.windows.net/private/images/5e7536a9-a0b5-4260-8769-2d54106f2913/generated_01.png?se=2023-08-29T19%3A12%3A57Z&sig=B24ymPLSZ3HfG23uojOD9VlRFGxjvgcNmvFo4yPUbEc%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02
注意
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。
清理资源
如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 有关更多示例,请查看 Azure OpenAI 示例 GitHub 存储库。
使用本指南通过适用于 JavaScript 的 Azure OpenAI SDK 开始生成图像。
先决条件
- Azure 订阅 - 免费创建订阅
- LTS 版本的 Node.js
- TypeScript
- Azure CLI用于本地开发环境中的无密码身份验证,请使用 Azure CLI 登录以创建必要的上下文。
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Foundry 门户中的“部署”页找到终结点。 示例终结点为: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 文件将随依赖项进行更新。
使用 DALL-E 生成图像
创建一个名为 ImageGeneration.ts 的新文件,然后在首选代码编辑器中打开它。 将以下代码复制到 ImageGeneration.ts 文件中:
import { AzureOpenAI } from "openai";
import {
DefaultAzureCredential,
getBearerTokenProvider
} from "@azure/identity";
// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"];
// Required Azure OpenAI deployment name and API version
const apiVersion = "2024-07-01";
const deploymentName = "dall-e-3";
// 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,
});
}
async function main() {
console.log("== Image Generation ==");
const client = getClient();
const results = await client.images.generate({
prompt,
size: "1024x1024",
n: numberOfImagesToGenerate,
model: "",
style: "vivid", // or "natural"
});
for (const image of results.data) {
console.log(`Image generation result URL: ${image.url}`);
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
使用以下命令生成应用程序:
tsc
使用以下命令运行应用程序:
node ImageGeneration.js
输出
生成的图像的 URL 将输出到控制台中。
== Batch Image Generation ==
Image generation result URL: https://dalleproduse.blob.core.windows.net/private/images/5e7536a9-a0b5-4260-8769-2d54106f2913/generated_00.png?se=2023-08-29T19%3A12%3A57Z&sig=655GkWajOZ9ALjFykZF%2FBMZRPQALRhf4UPDImWCQoGI%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02
Image generation result URL: https://dalleproduse.blob.core.windows.net/private/images/5e7536a9-a0b5-4260-8769-2d54106f2913/generated_01.png?se=2023-08-29T19%3A12%3A57Z&sig=B24ymPLSZ3HfG23uojOD9VlRFGxjvgcNmvFo4yPUbEc%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02
注意
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。
清理资源
如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 有关更多示例,请查看 Azure OpenAI 示例 GitHub 存储库。
使用本指南通过适用于 Go 的 Azure OpenAI SDK 开始生成图像。
先决条件
- Azure 订阅 - 免费创建订阅
- Go 1.8+
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Foundry 门户中的“部署”页找到终结点。 示例终结点为: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"
创建新的 Go 应用程序
打开命令提示符,然后导航到项目文件夹。 创建新文件 sample.go。
安装 Go SDK
使用以下命令安装 OpenAI Go SDK:
go get github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai@latest
或者,如果使用 dep
,则在存储库中运行以下命令:
dep ensure -add github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai
使用 DALL-E 生成图像
在首选代码编辑器中打开 sample.go。
将以下代码添加到你的脚本:
package main
import (
"context"
"fmt"
"net/http"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
)
func main() {
azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY")
// Ex: "https://<your-azure-openai-host>.openai.azure.com"
azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
if azureOpenAIKey == "" || azureOpenAIEndpoint == "" {
fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n")
return
}
keyCredential := azcore.NewKeyCredential(azureOpenAIKey)
client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil)
if err != nil {
// handle error
}
resp, err := client.GetImageGenerations(context.TODO(), azopenai.ImageGenerationOptions{
Prompt: to.Ptr("a painting of a cat in the style of Dali"),
ResponseFormat: to.Ptr(azopenai.ImageGenerationResponseFormatURL),
}, nil)
if err != nil {
// handle error
}
for _, generatedImage := range resp.Data {
// the underlying type for the generatedImage is dictated by the value of
// ImageGenerationOptions.ResponseFormat. In this example we used `azopenai.ImageGenerationResponseFormatURL`,
// so the underlying type will be ImageLocation.
resp, err := http.Head(*generatedImage.URL)
if err != nil {
// handle error
}
fmt.Fprintf(os.Stderr, "Image generated, HEAD request on URL returned %d\nImage URL: %s\n", resp.StatusCode, *generatedImage.URL)
}
}
使用 go run
命令运行脚本:
go run sample.go
输出
生成的图像的 URL 将输出到控制台中。
Image generated, HEAD request on URL returned 200
Image URL: https://dalleproduse.blob.core.windows.net/private/images/d7b28a5c-ca32-4792-8c2a-6a5d8d8e5e45/generated_00.png?se=2023-08-29T17%3A05%3A37Z&sig=loqntaPypYVr9VTT5vpbsjsCz31g1GsdoQi0smbGkks%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02
注意
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 有关更多示例,请查看 Azure OpenAI 示例 GitHub 存储库。
使用本指南开始使用 PowerShell 调用 Azure OpenAI 服务图像生成 REST API。
注意
图像生成 API 根据文本提示创建图像。 它不会编辑或创建现有图像的变体。
先决条件
- Azure 订阅。 免费创建一个。
- 对于此任务,建议使用最新版本的 PowerShell 7,因为这些示例使用了 Windows PowerShell 5.1 中不可用的新功能。
- 在受支持的区域中创建的 Azure OpenAI 资源(请参阅区域可用性)。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
安装
检索密钥和终结点
若要成功对 Azure OpenAI 发出调用,需要一个终结点和一个密钥。
变量名称 | 值 |
---|---|
ENDPOINT |
从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到服务终结点。 或者,也可以通过 Azure AI Foundry 门户中的“部署”页找到终结点。 示例终结点为: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"
使用 DALL-E 2 生成图像
创建一个名为 quickstart.ps1 的新 PowerShell 文件。 在首选编辑器或 IDE 中打开新文件。
将 quickstart.ps1 的内容替换为以下代码。 在相应的字段中输入终结点 URL 和密钥。 将
prompt
的值更改为首选文本。# Azure OpenAI metadata variables $openai = @{ api_key = $Env:AZURE_OPENAI_API_KEY api_base = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/ api_version = '2023-06-01-preview' # this may change in the future } # Text to describe image $prompt = 'A painting of a dog' # Header for authentication $headers = [ordered]@{ 'api-key' = $openai.api_key } # Adjust these values to fine-tune completions $body = [ordered]@{ prompt = $prompt size = '1024x1024' n = 1 } | ConvertTo-Json # Call the API to generate the image and retrieve the response $url = "$($openai.api_base)/openai/images/generations:submit?api-version=$($openai.api_version)" $submission = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json' -ResponseHeadersVariable submissionHeaders $operation_location = $submissionHeaders['operation-location'][0] $status = '' while ($status -ne 'succeeded') { Start-Sleep -Seconds 1 $response = Invoke-RestMethod -Uri $operation_location -Headers $headers $status = $response.status } # Set the directory for the stored image $image_dir = Join-Path -Path $pwd -ChildPath 'images' # If the directory doesn't exist, create it if (-not(Resolve-Path $image_dir -ErrorAction Ignore)) { New-Item -Path $image_dir -ItemType Directory } # Initialize the image path (note the filetype should be png) $image_path = Join-Path -Path $image_dir -ChildPath 'generated_image.png' # Retrieve the generated image $image_url = $response.result.data[0].url # extract image URL from response $generated_image = Invoke-WebRequest -Uri $image_url -OutFile $image_path # download the image return $image_path
重要
对于生产,请使用安全的方式存储和访问凭据,例如使用 Azure Key Vault 的 PowerShell Secret Management。 有关凭据安全性的详细信息,请参阅 Azure AI 服务安全性一文。
使用 PowerShell 运行脚本:
./quickstart.ps1
脚本将会循环,直到生成的图像准备就绪。
输出
PowerShell 会从 Azure OpenAI 要求映像,并将输出映像存储在指定目录中的 generated_image.png 文件中。 为方便起见,会在脚本末尾返回文件的完整路径。
图像生成 API 附带内容审核筛选器。 如果服务将你的提示识别为有害内容,则不会生成图像。 有关详细信息,请参阅事件筛选。
清理资源
如果你想要清理和删除 OpenAI 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
后续步骤
- 通过 DALL-E 操作指南更深入地探索图像生成 API。
- 尝试 Azure OpenAI 示例 GitHub 存储库中的示例。