共用方式為


快速入門:使用 Azure OpenAI 服務產生影像

注意

影像產生 API 會從文字提示建立影像。 它不會編輯現有的影像或建立變化。

使用本指南開始在瀏覽器中使用 Azure OpenAI 產生影像。

必要條件

移至 Azure OpenAI Studio

瀏覽至 [Azure OpenAI Studio] 並使用與您 Azure OpenAI 資源相關聯的認證來登入。 在登入工作流程期間 (或之後),選取適當的目錄、Azure 訂用帳戶和 Azure OpenAI 資源。

從 Azure OpenAI Studio 登陸頁面,選取 [DALL·E playground (Preview)] \(DALL·E 遊樂場 (預覽)\),以使用影像產生 API。 選取頁面頂端附近的 [設定],並確認 [部署] 下拉式清單已選取您的 DALL-E 3 部署。

試用映射產生

透過 DALL·E playground (Preview) \(DALL·E 遊樂場 (預覽)\) 開始探索無程式碼方法的 Azure OpenAI 功能。 在文字方塊中輸入您的影像提示字元,然後選取 [產生]。 當 AI 產生的影像準備就緒時,它會出現在頁面上。

注意

影像產生 API 隨附內容仲裁篩選器。 如果 Azure OpenAI 將提示辨識為有害內容,則就不會傳回產生的影像。 如需詳細資訊,請參閱內容篩選

Azure OpenAI Studio 登陸頁面之螢幕擷取畫面,顯示了 DALL·E playground (Preview) \(DALL·E 遊樂場 (預覽)\) 和產生的北極熊影像。

DALL·E playground (Preview) \(DALL·E 遊樂場 (預覽)\) 中,您也可以檢視根據預先填入的 Python 和 cURL 程式碼範例。 選取頁面頂端附近的 [檢視程式碼]。 您可以使用此程式碼來撰寫能完成相同工作的應用程式。

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步

使用本指南,開始透過 Python 來呼叫 Azure OpenAI 服務影像產生 REST API。

必要條件

設定

擷取金鑰和端點

若要成功呼叫 Azure OpenAI API,您需要有關 Azure OpenAI 資源的下列資訊:

變數 名稱
端點 api_base 端點值位於 Azure 入口網站中資源的 [金鑰] 和 [端點]。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
索引鍵 api_key 金鑰值同樣也位於 Azure 入口網站中資源的 [金鑰] 和 [端點]。 Azure 會為您的資源產生兩個金鑰。 您可以使用任何一者。

移至您在 Azure 入口網站中的資源。 在瀏覽窗格中,選取 [資源管理] 下的 [金鑰和端點]。 複製端點值和存取金鑰值。 您可以使用 KEY 1KEY 2 值。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

螢幕擷取畫面:顯示 Azure 入口網站中 Azure OpenAI 資源的 [金鑰] 和 [端點] 頁面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

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-E 3 模型時所選擇的部署名稱。 除非您選擇與基礎模型名稱相同的部署名稱,否則輸入模型名稱會導致錯誤。 如果您遇到錯誤,請再次檢查以確定端點與 /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."
    }
}

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步

使用本指南開始使用適用於 Python 的 Azure OpenAI SDK 生成影像。

程式庫原始程式碼 | 套件 | 範例

必要條件

設定

擷取金鑰和端點

若要成功呼叫 Azure OpenAI API,您需要有關 Azure OpenAI 資源的下列資訊:

變數 名稱
端點 api_base 端點值位於 Azure 入口網站中資源的 [金鑰] 和 [端點]。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
索引鍵 api_key 金鑰值同樣也位於 Azure 入口網站中資源的 [金鑰] 和 [端點]。 Azure 會為您的資源產生兩個金鑰。 您可以使用任何一者。

移至您在 Azure 入口網站中的資源。 在瀏覽窗格中,選取 [資源管理] 下的 [金鑰和端點]。 複製端點值和存取金鑰值。 您可以使用 KEY 1KEY 2 值。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

螢幕擷取畫面:顯示 Azure 入口網站中 Azure OpenAI 資源的 [金鑰] 和 [端點] 頁面。

為您的金鑰和端點建立及指派永續性環境變數。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

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 隨附內容仲裁篩選器。 如果服務將提示辨識為有害內容,則它就不會產生影像。 如需詳細資訊,請參閱內容篩選

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步

使用本指南開始使用適用於 C# 的 Azure OpenAI SDK 生成影像。

程式庫原始程式碼 | 套件 (NuGet) | 範例

必要條件

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

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 的新主控台應用程式。 此命令會建立簡單的 "Hello World" 專案,內含單一 C# 來源檔案: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 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

使用本指南開始使用適用於 Java 的 Azure OpenAI SDK 生成影像。

程式庫原始程式碼 | 成品 (Maven) | 範例

必要條件

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

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 生成影像

  1. 建立 Java 檔案。

    在您的工作目錄中執行下列命令,以建立專案來源資料夾:

    mkdir -p src/main/java
    

    瀏覽至新的資料夾,並建立名為 OpenAIQuickstart.java 的檔案。

  2. 在慣用的編輯器或 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);
        }
    }
    
  3. 瀏覽回專案根資料夾,並使用下列項目建置應用程式:

    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 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

使用本指南開始使用適用於 JavaScript 的 Azure OpenAI SDK 生成影像。

程式庫原始程式碼 | 套件 (npm) | 範例

必要條件

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

建立節點應用程式

在主控台視窗 (例如 cmd、PowerShell 或 Bash) 中,為您的應用程式建立新的目錄,並瀏覽至該目錄。 然後執行 npm init 命令以使用 package.json 檔案建立節點應用程式。

npm init

安裝用戶端程式庫

使用 npm 安裝適用於 JavaScript 的 Azure OpenAI 用戶端程式庫:

npm install @azure/openai

您應用程式的 package.json 檔案將會隨著相依性更新。

使用 DALL-E 生成影像

建立一個名為 ImageGeneration.js 的新檔案,然後在您慣用的程式碼編輯器中將其開啟。 將以下程式碼複製到 ImageGeneration.js 檔案中:

const { OpenAIClient, AzureKeyCredential } = require("@azure/openai");

// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] ;
const azureApiKey = process.env["AZURE_OPENAI_API_KEY"] ;

// The prompt to generate images from
const prompt = "a monkey eating a banana";
const size = "256x256";

// The number of images to generate
const n = 2;

async function main() {
    console.log("== Batch Image Generation ==");
  
    const client = new OpenAIClient(endpoint, new AzureKeyCredential(azureApiKey));
    const deploymentName = "dall-e";
    const results = await client.getImages(deploymentName, prompt, { n, size });
  
    for (const image of results.data) {
      console.log(`Image generation result URL: ${image.url}`);
    }
    //console.log(`Image generation result URL: ${results.result.status}`);
}

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 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

使用本指南開始使用適用於 Go 的 Azure OpenAI SDK 生成影像。

程式庫原始程式碼 | 套件 | 範例

必要條件

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

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/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, err := azopenai.NewKeyCredential(azureOpenAIKey)

	if err != nil {
		// handle error
	}

	client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil)

	if err != nil {
		// handle error
	}

	resp, err := client.CreateImage(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 隨附內容仲裁篩選器。 如果服務將提示辨識為有害內容,則就不會傳回產生的影像。 如需詳細資訊,請參閱內容篩選條件文章。

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步

使用本指南開始使用 PowerShell 呼叫 Azure OpenAI 服務影像生成 API。

注意

影像產生 API 會從文字提示建立影像。 它不會編輯現有的影像或建立變化。

必要條件

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

建立新的 PowerShell 指令碼

  1. 建立一個名為 quickstart.ps1 的新 PowerShell 檔案。 在您慣用的編輯器或整合式開發環境 (IDE) 中,開啟新檔案。

  2. 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 祕密管理。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  3. 使用 PowerShell 執行指令碼:

    ./quickstart.ps1
    

    指令碼會迴圈直到產生的映射就緒為止。

輸出

PowerShell 會向 Azure OpenAI 要求影像,並將輸出影像儲存在您指定目錄的 generated_image.png 檔案中。 為了方便起見,該檔案的完整路徑會在指令碼結尾傳回。

影像產生 API 隨附內容仲裁篩選器。 如果服務將提示辨識為有害內容,則它就不會產生影像。 如需詳細資訊,請參閱內容篩選

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步