快速入门:在 Azure AI Foundry 模型中使用 Azure OpenAI 生成映像

注意

图像生成 API 根据文本提示创建图像。 它不会编辑或创建现有图像中的变体。

使用本指南开始利用 Azure AI Foundry 在浏览器中使用 Azure OpenAI 生成图像。

先决条件

转到 Azure AI Foundry

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

在 Azure AI Foundry 登陆页中,创建或选择一个新项目。 在左侧导航栏上导航到“模型 + 终结点”页。 选择“部署模型”,然后从列表中选择一个 DALL-E 模型。 完成部署过程。

在模型页面,选择“在操场中打开”

试用图像生成

通过“图像操场”开始使用无代码方法浏览 Azure OpenAI 功能。 在文本框中输入图像提示,然后选择“生成”。 AI 生成的图像准备就绪后,它将显示在页面上。

注意

图像 API 附带内容审查筛选器。 如果 Azure OpenAI 将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅事件筛选

在“图像操场”中,还可以查看根据设置预填充的 Python 和 cURL 代码示例。 选择页面顶部附近的“查看代码”。 可以使用此代码编写完成相同任务的应用程序。

清理资源

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

后续步骤

使用本指南开始使用 Python 在 Azure AI Foundry 模型映像生成 REST API 中调用 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 值。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

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

环境变量

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

重要

我们建议使用 Azure 资源的托管标识进行 Microsoft Entra ID 身份验证,以避免将凭据随云中运行的应用程序一起存储。

请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请将其安全地存储在 Azure Key Vault 中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对 Azure Key Vault 的访问。 若要详细了解如何在应用中安全地使用 API 密钥,请参阅 API 密钥与 Azure Key Vault

有关 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 的内容替换为以下代码。 将 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

  2. 使用 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 资源,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。

后续步骤

使用本指南通过适用于 Python 的 Azure OpenAI SDK 开始生成图像。

库源代码 | | 示例

先决条件

安装

检索密钥和终结点

若要成功调用 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 值。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

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

环境变量

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

重要

我们建议使用 Azure 资源的托管标识进行 Microsoft Entra ID 身份验证,以避免将凭据随云中运行的应用程序一起存储。

请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请将其安全地存储在 Azure Key Vault 中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对 Azure Key Vault 的访问。 若要详细了解如何在应用中安全地使用 API 密钥,请参阅 API 密钥与 Azure Key Vault

有关 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()
  1. 在相应的字段中输入终结点 URL 和密钥。
  2. prompt 的值更改为首选文本。
  3. 将值 model 更改为已部署的 DALL-E 3 模型的名称。

重要

请记住完成后将密钥从代码中删除,永远不要公开发布该密钥。 对于生产,请使用安全的方式存储和访问凭据。 有关详细信息,请参阅 Azure Key Vault

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

python quickstart.py

片刻之后即可获得响应。

输出

Azure OpenAI 将输出映像存储在指定目录中的 generated_image.png 文件中。 脚本还将在默认图像查看器中显示该图像。

图像 API 附带内容审查筛选器。 如果服务将你的提示识别为有害内容,则不会生成图像。 有关详细信息,请参阅事件筛选

清理资源

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

后续步骤

使用本指南通过适用于 C# 的 Azure OpenAI SDK 开始生成图像。

库源代码 | 包 (NuGet) | 示例

先决条件

Microsoft Entra ID 先决条件

若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,你需要:

  • 安装使用 Microsoft Entra ID 进行无密钥身份验证所需的 Azure CLI
  • Cognitive Services User角色分配给用户帐户。 你可以在 Azure 门户的“访问控制(IAM)”“添加角色分配”下分配角色。>

设置

  1. 创建新文件夹 vision-quickstart,并使用以下命令转到快速入门文件夹:

    mkdir vision-quickstart && cd vision-quickstart
    
  2. 使用以下命令创建新的控制台应用程序:

    dotnet new console
    
  3. 使用 dotnet add package 命令安装 OpenAI .NET 客户端库

    dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.6
    
  4. 若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,请使用以下命令安装 Azure.Identity 包:

    dotnet add package Azure.Identity
    
  5. 若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,请使用以下命令登录到 Azure:

    az login
    

检索资源信息

需要检索以下信息才能使用 Azure OpenAI 资源对应用程序进行身份验证:

变量名称
AZURE_OPENAI_ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。
AZURE_OPENAI_DEPLOYMENT_NAME 此值将对应于在部署模型时为部署选择的自定义名称。 Azure 门户中的“资源管理”“模型部署”下提供了此值。>
OPENAI_API_VERSION 详细了解 API 版本

可以在代码中更改版本或使用环境变量。

详细了解无密钥身份验证,以及如何设置环境变量

运行快速入门

本快速入门中的示例代码使用 Microsoft Entra ID 进行推荐的无密钥身份验证。 如果希望使用 API 密钥,可以将 DefaultAzureCredential 对象替换为 AzureKeyCredential 对象。

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

若要运行快速入门,请执行以下步骤:

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

    using Azure;
    using Azure.AI.OpenAI;
    using OpenAI.Images;
    using static System.Environment;
    
    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));
    
    // This must match the custom deployment name you chose for your model
    ImageClient chatClient = openAIClient.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);
    
  2. 使用 dotnet run 命令或 Visual Studio 顶部的运行按钮运行应用程序:

    dotnet run
    

输出

生成的图像的 URL 将输出到控制台中。

<SAS URL>

注意

图像 API 附带内容审查筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。

清理资源

如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。

后续步骤

使用本指南通过适用于 Java 的 Azure OpenAI SDK 开始生成图像。

库源代码 | 项目 (Maven) | 示例

先决条件

Microsoft Entra ID 先决条件

若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,你需要:

  • 安装使用 Microsoft Entra ID 进行无密钥身份验证所需的 Azure CLI
  • Cognitive Services User角色分配给用户帐户。 你可以在 Azure 门户的“访问控制(IAM)”“添加角色分配”下分配角色。>

设置

  1. 创建新文件夹 vision-quickstart,并使用以下命令转到快速入门文件夹:

    mkdir vision-quickstart && cd vision-quickstart
    
  2. 安装 Apache Maven。 然后运行 mvn -v 以确认安装成功。

  3. 在项目的根目录中创建一个新的 pom.xml 文件,并将以下代码复制到该文件中:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
         <modelVersion>4.0.0</modelVersion>
         <groupId>com.azure.samples</groupId>
         <artifactId>quickstart-dall-e</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <build>
             <sourceDirectory>src</sourceDirectory>
             <plugins>
             <plugin>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.7.0</version>
                 <configuration>
                 <source>1.8</source>
                 <target>1.8</target>
                 </configuration>
             </plugin>
             </plugins>
         </build>
         <dependencies>    
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-ai-openai</artifactId>
                 <version>1.0.0-beta.3</version>
             </dependency>
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-core</artifactId>
                 <version>1.53.0</version>
             </dependency>
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-identity</artifactId>
                 <version>1.15.1</version>
             </dependency>
             <dependency>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-simple</artifactId>
                 <version>1.7.9</version>
             </dependency>
         </dependencies>
     </project>
    
  4. 安装 Azure OpenAI SDK 和依赖项。

    mvn clean dependency:copy-dependencies
    
  5. 若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,请使用以下命令登录到 Azure:

    az login
    

检索资源信息

需要检索以下信息才能使用 Azure OpenAI 资源对应用程序进行身份验证:

变量名称
AZURE_OPENAI_ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。
AZURE_OPENAI_DEPLOYMENT_NAME 此值将对应于在部署模型时为部署选择的自定义名称。 Azure 门户中的“资源管理”“模型部署”下提供了此值。>
OPENAI_API_VERSION 详细了解 API 版本

可以在代码中更改版本或使用环境变量。

详细了解无密钥身份验证,以及如何设置环境变量

运行应用

本快速入门中的示例代码使用 Microsoft Entra ID 进行推荐的无密钥身份验证。 如果希望使用 API 密钥,可以将 DefaultAzureCredential 对象替换为 AzureKeyCredential 对象。

OpenAIAsyncClient client = new OpenAIClientBuilder()
    .endpoint(endpoint)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildAsyncClient();

按照以下步骤创建用于语音识别的控制台应用程序。

  1. 在同一项目根目录中创建一个名为 Quickstart.java 的新文件。

  2. 将以下代码复制到 Quickstart.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;
    
    public class Quickstart {
    
        public static void main(String[] args) throws InterruptedException {
    
            String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
    
            // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    
            OpenAIAsyncClient client = new OpenAIClientBuilder()
                .endpoint(endpoint)
                .credential(new DefaultAzureCredentialBuilder().build())
                .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 isn't a blocking call.
            // The thread sleeps so the program does not end before the send operation is complete. 
            // Use .block() instead of .subscribe() for a synchronous call.
            TimeUnit.SECONDS.sleep(10);
        }
    }
    
  3. 运行新的控制台应用程序以生成映像:

    javac Quickstart.java -cp ".;target\dependency\*"
    java -cp ".;target\dependency\*" Quickstart
    

输出

生成的图像的 URL 将输出到控制台中。

Image ___location URL that provides temporary access to download the generated image is <SAS URL>.
Completed getImages.

注意

图像 API 附带内容审查筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。

清理资源

如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。

后续步骤

使用本指南通过适用于 JavaScript 的 Azure OpenAI SDK 开始生成图像。

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

先决条件

Microsoft Entra ID 先决条件

若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,你需要:

  • 安装使用 Microsoft Entra ID 进行无密钥身份验证所需的 Azure CLI
  • Cognitive Services User角色分配给用户帐户。 你可以在 Azure 门户的“访问控制(IAM)”“添加角色分配”下分配角色。>

设置

  1. 创建新文件夹 image-quickstart,并使用以下命令转到快速入门文件夹:

    mkdir image-quickstart && cd image-quickstart
    
  2. 使用以下命令创建 package.json

    npm init -y
    
  3. 使用以下命令安装适用于 JavaScript 的 OpenAI 客户端库:

    npm install openai
    
  4. 对于推荐的无密码身份验证:

    npm install @azure/identity
    

检索资源信息

需要检索以下信息才能使用 Azure OpenAI 资源对应用程序进行身份验证:

变量名称
AZURE_OPENAI_ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。
AZURE_OPENAI_DEPLOYMENT_NAME 此值将对应于在部署模型时为部署选择的自定义名称。 Azure 门户中的“资源管理”“模型部署”下提供了此值。>
OPENAI_API_VERSION 详细了解 API 版本

可以在代码中更改版本或使用环境变量。

详细了解无密钥身份验证,以及如何设置环境变量

注意

若要对 SDK 使用推荐的无密钥身份验证,请确保未设置 AZURE_OPENAI_API_KEY 环境变量。

使用 DALL-E 生成图像

  1. 使用以下代码创建 index.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 || "Your endpoint";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01";
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "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);
    });
    
  2. 使用以下命令登录到 Azure:

    az login
    
  3. 运行 JavaScript 文件。

    node index.js
    

输出

生成的图像的 URL 将输出到控制台中。

== Batch Image Generation ==
Image generation result URL: <SAS URL>
Image generation result URL: <SAS URL>

注意

图像 API 附带内容审查筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。

清理资源

如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。

后续步骤

使用本指南通过适用于 JavaScript 的 Azure OpenAI SDK 开始生成图像。

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

先决条件

Microsoft Entra ID 先决条件

若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,你需要:

  • 安装使用 Microsoft Entra ID 进行无密钥身份验证所需的 Azure CLI
  • Cognitive Services User角色分配给用户帐户。 你可以在 Azure 门户的“访问控制(IAM)”“添加角色分配”下分配角色。>

设置

  1. 创建新文件夹 image-quickstart,并使用以下命令转到快速入门文件夹:

    mkdir image-quickstart && cd image-quickstart
    
  2. 使用以下命令创建 package.json

    npm init -y
    
  3. 使用以下命令将 package.json 更新为 ECMAScript:

    npm pkg set type=module
    
  4. 使用以下命令安装适用于 JavaScript 的 OpenAI 客户端库:

    npm install openai
    
  5. 对于推荐的无密码身份验证:

    npm install @azure/identity
    

检索资源信息

需要检索以下信息才能使用 Azure OpenAI 资源对应用程序进行身份验证:

变量名称
AZURE_OPENAI_ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。
AZURE_OPENAI_DEPLOYMENT_NAME 此值将对应于在部署模型时为部署选择的自定义名称。 Azure 门户中的“资源管理”“模型部署”下提供了此值。>
OPENAI_API_VERSION 详细了解 API 版本

可以在代码中更改版本或使用环境变量。

详细了解无密钥身份验证,以及如何设置环境变量

注意

若要对 SDK 使用推荐的无密钥身份验证,请确保未设置 AZURE_OPENAI_API_KEY 环境变量。

使用 DALL-E 生成图像

  1. 使用以下代码创建 index.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 || "Your endpoint";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01";
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "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);
    });
    
  2. 创建 tsconfig.json 文件以转译 TypeScript 代码,然后复制以下 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. 从 TypeScript 转译到 JavaScript。

    tsc
    
  4. 使用以下命令登录到 Azure:

    az login
    
  5. 使用以下命令运行代码:

    node index.js
    

输出

生成的图像的 URL 将输出到控制台中。

== Batch Image Generation ==
Image generation result URL: <SAS URL>
Image generation result URL: <SAS URL>

注意

图像 API 附带内容审查筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。

清理资源

如果你想要清理和移除 Azure OpenAI 资源,可以删除该资源。 在删除资源之前,必须先删除所有已部署的模型。

后续步骤

使用本指南通过适用于 Go 的 Azure OpenAI SDK 开始生成图像。

库源代码 | | 示例

先决条件

Microsoft Entra ID 先决条件

若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,你需要:

  • 安装使用 Microsoft Entra ID 进行无密钥身份验证所需的 Azure CLI
  • Cognitive Services User角色分配给用户帐户。 你可以在 Azure 门户的“访问控制(IAM)”“添加角色分配”下分配角色。>

设置

  1. 创建新文件夹 dall-e-quickstart,并使用以下命令转到快速入门文件夹:

    mkdir dall-e-quickstart && cd dall-e-quickstart
    
  2. 若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,请使用以下命令登录到 Azure:

    az login
    

检索资源信息

需要检索以下信息才能使用 Azure OpenAI 资源对应用程序进行身份验证:

变量名称
AZURE_OPENAI_ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。
AZURE_OPENAI_DEPLOYMENT_NAME 此值将对应于在部署模型时为部署选择的自定义名称。 Azure 门户中的“资源管理”“模型部署”下提供了此值。>
OPENAI_API_VERSION 详细了解 API 版本

可以在代码中更改版本或使用环境变量。

详细了解无密钥身份验证,以及如何设置环境变量

运行快速入门

本快速入门中的示例代码使用 Microsoft Entra ID 进行推荐的无密钥身份验证。 如果希望使用 API 密钥,可以将 NewDefaultAzureCredential 实现替换为 NewKeyCredential

azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)

若要运行该示例:

  1. 创建名为 quickstart.go 的新文件。 将以下代码复制到 quickstart.go 文件中。

     package main
    
    import (
    	"context"
    	"fmt"
    	"net/http"
    	"os"
    	"log"
    
    	"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
    	"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
    	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    )
    
    func main() {
    	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
    	modelDeploymentID := "dall-e-3"
    
    	credential, err := azidentity.NewDefaultAzureCredential(nil)
    	if err != nil {
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	client, err := azopenai.NewClient(
    		azureOpenAIEndpoint, credential, nil)
    	if err != nil {
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	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),
    		DeploymentName: to.Ptr(modelDeploymentID),
    	}, nil)
    
    	if err != nil {
    		// Implement application specific error handling logic.
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	for _, generatedImage := range resp.Data {
    		// The underlying type for the generatedImage is determined by the value of
    		// ImageGenerationOptions.ResponseFormat. 
    		// In this example we use `azopenai.ImageGenerationResponseFormatURL`,
    		// so the underlying type will be ImageLocation.
    
    		resp, err := http.Head(*generatedImage.___URL)
    
    		if err != nil {
    			// Implement application specific error handling logic.
    			log.Printf("ERROR: %s", err)
    			return
    		}
    
    		fmt.Fprintf(os.Stderr, "Image generated, HEAD request on URL returned %d\nImage URL: %s\n", resp.StatusCode, *generatedImage.___URL)
    	}
    }
    
  2. 运行以下命令来创建新的 Go 模块:

     go mod init quickstart.go
    
  3. 运行 go mod tidy 来安装必需的依赖项:

    go mod tidy
    
  4. 运行以下命令来运行示例:

     go run quickstart.go
    

输出

生成的图像的 URL 将输出到控制台中。

Image generated, HEAD request on URL returned 200
Image URL: <SAS URL>

注意

图像 API 附带内容审查筛选器。 如果服务将你的提示识别为有害内容,则不会返回生成的图像。 有关详细信息,请参阅内容筛选器一文。

清理资源

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

后续步骤

使用本指南开始使用 PowerShell 在 Azure AI Foundry 模型映像生成 API 中调用 Azure OpenAI。

先决条件

Microsoft Entra ID 先决条件

若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,你需要:

  • 安装使用 Microsoft Entra ID 进行无密钥身份验证所需的 Azure CLI
  • Cognitive Services User角色分配给用户帐户。 你可以在 Azure 门户的“访问控制(IAM)”“添加角色分配”下分配角色。>

检索资源信息

需要检索以下信息才能使用 Azure OpenAI 资源对应用程序进行身份验证:

变量名称
AZURE_OPENAI_ENDPOINT 从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。
AZURE_OPENAI_DEPLOYMENT_NAME 此值将对应于在部署模型时为部署选择的自定义名称。 Azure 门户中的“资源管理”“模型部署”下提供了此值。>
OPENAI_API_VERSION 详细了解 API 版本

可以在代码中更改版本或使用环境变量。

详细了解无密钥身份验证,以及如何设置环境变量

生成图像

  1. 若要使用 Microsoft Entra ID 进行推荐的无密钥身份验证,请使用以下命令登录到 Azure:

    az login
    
  2. 创建一个名为 quickstart.ps1 的新 PowerShell 文件。 然后在你偏好的编辑器或 IDE 中打开该文件。

  3. 将 quickstart.ps1 的内容替换为以下代码。 在相应的字段中输入终结点 URL 和密钥。 将 prompt 的值更改为首选文本。

     # Azure OpenAI metadata variables
     $openai = @{
         api_base    = $Env:AZURE_OPENAI_ENDPOINT 
         api_version = '2023-06-01-preview' # This can change in the future.
     }
    
     # Use the recommended keyless authentication via bearer token.
     $headers = [ordered]@{
         #'api-key' = $Env:AZURE_OPENAI_API_KEY
         'Authorization' = "Bearer $($Env:DEFAULT_AZURE_CREDENTIAL_TOKEN)"
     }
    
     # Text to describe image
     $prompt = 'A painting of a dog'
    
     # 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。 有关凭据安全性的详细信息,请参阅此 安全 文章。

  4. 使用 PowerShell 运行脚本:

    ./quickstart.ps1
    

    脚本将会循环,直到生成的图像准备就绪。

输出

PowerShell 会从 Azure OpenAI 要求映像,并将输出映像存储在指定目录中的 generated_image.png 文件中。 为方便起见,会在脚本末尾返回文件的完整路径。

图像 API 附带内容审查筛选器。 如果服务将你的提示识别为有害内容,则不会生成图像。 有关详细信息,请参阅事件筛选

清理资源

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

后续步骤