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

注意

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

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

必要條件

  • Azure 訂用帳戶。 免費建立一個
  • 在所需的 Azure 訂用帳戶中授與 DALL-E 的存取。
  • 在、 AustraliaEastSwedenCentral 區域中建立的 EastUSAzure OpenAI 資源。
  • 然後,您必須使用您的 Azure 資源來部署 dalle3 模型。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型

注意

目前,您必須提交應用程式以存取 Azure OpenAI 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

移至 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 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

擷取金鑰和端點

若要成功呼叫 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 資源的 [金鑰] 和 [端點] 頁面。

建立新的 Python 應用程式

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

  1. quickstart.py 的內容取代為下列程式碼。 在適當的欄位中輸入您的端點 URL 和金鑰。 將 prompt 的值變更為您慣用的文字。

    部署 DALL-E 3 模型時,您也需要將 URL 中的取代 <dalle3> 為您所選擇的部署名稱。 除非您選擇與基礎模型名稱相同的部署名稱,否則輸入模型名稱會導致錯誤。 如果您遇到錯誤,請仔細檢查以確定端點與 /openai/deployments之間沒有兩倍/的 分隔。

    import requests
    import time
    import os
    api_base = '<your_endpoint>'  # Enter your endpoint here
    api_key = '<your_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 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

設定

擷取金鑰和端點

若要成功呼叫 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 應用程式

開啟命令提示字元,並瀏覽至您的專案資料夾。 建立新的 python 檔案, quickstart.py

安裝 Python SDK

使用下列命令安裝 OpenAI Python SDK:

pip install openai

也請安裝下列程式庫:

pip install requests
pip install pillow 

使用 DALL-E 產生影像

在慣用的編輯器或 IDE 中開啟 _quickstart.py。

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 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

設定

擷取金鑰和端點

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

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

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

Azure 入口網站 中 Azure OpenAI 資源概觀 UI 的螢幕快照,其中端點和存取密鑰位置會以紅色圓圈圈。

環境變數

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

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 System;
using System.IO;
using System.Threading.Tasks;
using Azure.AI.OpenAI;

namespace Azure.AI.OpenAI.Tests.Samples
{
    public partial class GenerateImages
    {
        // add an async Main method:
        public static async Task Main(string[] args)
        {
            string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
            string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

            OpenAIClient client = new(new Uri(endpoint), new AzureKeyCredential(key));

            Response<ImageGenerations> imageGenerations = await client.GetImageGenerationsAsync(
                new ImageGenerationOptions()
                {
                    Prompt = "a happy monkey eating a banana, in watercolor",
                    Size = ImageSize.Size256x256,
                });

            // Image Generations responses provide URLs you can use to retrieve requested images
            Uri imageUri = imageGenerations.Value.Data[0].Url;
            
            // Print the image URI to console:
            Console.WriteLine(imageUri);
        }
    }
}

使用這些命令從您的應用程式目錄建置並執行應用程式:

dotnet build
dotnet run

輸出

產生的影像 URL 會列印至控制台。

https://dalleproduse.blob.core.windows.net/private/images/552c5522-af4a-4877-a19c-400fac04a422/generated_00.png?se=2023-08-17T16%3A54%3A40Z&sig=XGCIx9r0WvWTJ0LL%2FJGymo2WYp4FDbSQNNrGRUnnUzI%3D&ske=2023-08-19T01%3A10%3A14Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-12T01%3A10%3A14Z&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 訂用帳戶 - 建立免費帳戶
  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 服務的存取權。 目前只有應用程式會授予此服務的存取權。 您可以在 完成表單 https://aka.ms/oai/access,以申請 Azure OpenAI 服務的存取權。

注意

目前,您必須提交應用程式以存取 Azure OpenAI 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

設定

擷取金鑰和端點

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

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

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

Azure 入口網站 中 Azure OpenAI 資源概觀 UI 的螢幕快照,其中端點和存取密鑰位置會以紅色圓圈。

環境變數

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

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 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

設定

擷取金鑰和端點

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

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

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

Azure 入口網站 中 Azure OpenAI 資源概觀 UI 的螢幕快照,其中端點和存取密鑰位置會以紅色圓圈。

環境變數

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

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

下一步

使用本指南開始使用 Azure OpenAI SDK for Go 產生映像。

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

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在所需的 Azure 訂用帳戶中授與 DALL-E 的存取權 目前,只有應用程式才會授與此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。 現有的 Azure OpenAI 客戶需要重新輸入表單,才能存取 DALL-E。 如有問題,請在此存放庫中提出問題來與我們連絡。

注意

目前,您必須提交應用程式以存取 Azure OpenAI 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

設定

擷取金鑰和端點

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

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

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

Azure 入口網站 中 Azure OpenAI 資源概觀 UI 的螢幕快照,其中端點和存取密鑰位置會以紅色圓形顯示。

環境變數

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

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 服務。 若要申請存取權限,請填寫此表單。 如果您需要協助,請在此存放庫中提出問題以連絡 Microsoft。

擷取金鑰和端點

若要成功呼叫 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 資源的 [金鑰] 和 [端點] 頁面。

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

環境變數

$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'

建立新的 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
    

    重要

    針對生產環境,請使用安全的方式來儲存和存取您的認證,例如PowerShell秘密管理與 Azure 金鑰保存庫。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  3. 使用 PowerShell 執行腳本:

    ./quickstart.ps1
    

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

輸出

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

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

清除資源

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

下一步