クイックスタート: Azure OpenAI Service を使用して画像を生成する

Note

画像生成 API は、テキスト プロンプトから画像を作成します。 既存の画像を編集したり、バリエーションを作成したりすることはありません。

このガイドを使用して、ブラウザーで Azure OpenAI を使用して画像の生成を開始します。

前提条件

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

Azure OpenAI Studio に移動する

Azure OpenAI Studio にアクセスし、Azure OpenAI リソースに関連付けられた資格情報を使用してサインインします。 サインイン ワークフローの途中または後で、適切なディレクトリ、Azure サブスクリプション、Azure OpenAI リソースを選択します。

画像生成 API を使用するために、Azure OpenAI Studio のランディング ページで、DALL·E プレイグラウンド (プレビュー) を選択します。 ページの上部付近にある [設定] を選択し、[デプロイメント] ドロップダウンで DALL-E 3 デプロイが選択されていることを確認します。

画像生成を試す

DALL-E プレイグラウンド(プレビュー) を使用して、コードなしのアプローチで Azure OpenAI 機能の探索を開始します。 テキスト ボックスに画像プロンプトを入力し、[生成] を選択します。 AI によって生成された画像の準備ができたら、ページに表示されます。

Note

画像生成 API には、コンテンツ モデレーション フィルターが付属しています。 Azure OpenAI がプロンプトを有害なコンテンツとして認識した場合、生成画像は返されません。 詳細については、「コンテンツ フィルター」を参照してください。

生成されたホッキョクグマの画像を使用した DALL-E プレイグラウンド(プレビュー) を示す Azure OpenAI Studio ランディング ページのスクリーンショット。

DALL-E プレイグラウンド(プレビュー) では、設定に従って事前に入力された Python と cURL コードのサンプルを表示することもできます。 ページの上部付近にある [コードの表示] を選択します。 このコードを使用して、同じタスクを完了するアプリケーションを記述できます。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

このガイドを使用して、Python を使用して Azure OpenAI Service の画像生成 REST API の呼び出しを開始します。

前提条件

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

キーとエンドポイントを取得する

Azure OpenAI API を正常に呼び出すには、Azure OpenAI リソースに関する次の情報が必要です。

変数 名前
エンドポイント api_base エンドポイント値は、Azure portal のリソースの [キーとエンドポイント] にあります。 または、Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
キー api_key キー値は、Azure portal のリソースの [キーとエンドポイント] にあります。 Azure では、リソースに対して 2 つのキーが生成されます。 いずれかの値を使用できます。

Azure portal でリソースに移動します。 ナビゲーション ウィンドウで、[リソース管理] [キーとエンドポイント] を選択します。 [エンドポイント] の値とアクセス キーの値をコピーします。 KEY 1 または KEY 2 のいずれかの値を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal で Azure OpenAI リソース用のキーとエンドポイント ページを示すスクリーンショット。

新しい Python アプリケーションを作成する

quickstart.py という名前の新しい Python ファイルを作成します。 好みのエディターまたは IDE で新しいファイルを開きます。

  1. quickstart.py の内容を次のコードで置き換えます。 エンドポイント URL とキーを適切なフィールドに入力します。 prompt の値を任意のテキストに変更します。

    また、URL の <dalle3> を、DALL-E 3 モデルのデプロイ時に選択したデプロイ名に置き換える必要があります。 モデル名の入力では、基になるモデル名と同じデプロイ名を選択しないとエラーが発生します。 エラーが発生した場合は、エンドポイントと /openai/deployments の間隔で / が 2 倍になっていないことを確認してください。

    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 を使用して画像の生成を開始します。

ライブラリ ソース コード | パッケージ | サンプル

前提条件

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

設定

キーとエンドポイントを取得する

Azure OpenAI API を正常に呼び出すには、Azure OpenAI リソースに関する次の情報が必要です。

変数 名前
エンドポイント api_base エンドポイント値は、Azure portal のリソースの [キーとエンドポイント] にあります。 または、Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
キー api_key キー値は、Azure portal のリソースの [キーとエンドポイント] にあります。 Azure では、リソースに対して 2 つのキーが生成されます。 いずれかの値を使用できます。

Azure portal でリソースに移動します。 ナビゲーション ウィンドウで、[リソース管理] [キーとエンドポイント] を選択します。 [エンドポイント] の値とアクセス キーの値をコピーします。 KEY 1 または KEY 2 のいずれかの値を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal で 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 ファイルを作成します。

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) | サンプル

前提条件

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の 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# ソース ファイルを 1 つ使用する単純な "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

Note

画像生成 API には、コンテンツ モデレーション フィルターが付属しています。 サービスがプロンプトを有害なコンテンツとして認識した場合、生成画像は返されません。 詳しくは、コンテンツ フィルターに関する記事を参照してください。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。

次のステップ

このガイドを使用して、Java 用の Azure OpenAI SDK を使用して画像の生成を開始します。

ライブラリ ソース コード | 成果物 (Maven) | サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 目的の Azure サブスクリプション内の Azure OpenAI Service へのアクセスの許可。 現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI Service へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の 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 コマンドを実行します。 次のコマンドを実行すると、build.gradle.kts を含む、Gradle 用の重要なビルド ファイルが作成されます。これは、アプリケーションを作成して構成するために、実行時に使用されます。

gradle init --type basic

DSL を選択するよう求められたら、Kotlin を選択します。

Java SDK をインストールする

このクイックスタートでは、Gradle 依存関係マネージャーを使用します。 クライアント ライブラリとその他の依存関係マネージャーの情報については、Maven Central Repository を参照してください。

build.gradle.kts を検索し、任意の IDE またはテキスト エディターで開きます。 その後、次のビルド構成をコピーします。 この構成では、エントリ ポイントが OpenAIQuickstart クラスである Java アプリケーションとしてプロジェクトを定義します。 これによって、Azure AI Vision ライブラリがインポートされます。

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.

Note

画像生成 API には、コンテンツ モデレーション フィルターが付属しています。 サービスがプロンプトを有害なコンテンツとして認識した場合、生成画像は返されません。 詳しくは、コンテンツ フィルターに関する記事を参照してください。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。

次のステップ

このガイドを使用して、JavaScript 用の Azure OpenAI SDK を使用して画像の生成を開始します。

ライブラリのソース コード | パッケージ (npm) | サンプル

前提条件

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要 UI のスクリーンショット。エンドポイントおよびアクセス キーの場所が赤色の丸で囲まれています。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

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 ファイルを使用してノード アプリケーションを作成します。

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

Note

画像生成 API には、コンテンツ モデレーション フィルターが付属しています。 サービスがプロンプトを有害なコンテンツとして認識した場合、生成画像は返されません。 詳しくは、コンテンツ フィルターに関する記事を参照してください。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。

次のステップ

このガイドを使用して、Go 用の Azure OpenAI SDK を使用して画像の生成を開始します。

ライブラリ ソース コード | パッケージ | サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 目的の Azure サブスクリプションで DALL-E に許可されるアクセス。現在、このサービスへのアクセスはアプリケーションによってのみ許可されます。 Azure OpenAI へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。 既存の Azure OpenAI のお客様は、DALL-E にアクセスするためにフォームに再入力する必要があります。 問題がある場合は、このリポジトリで問題をオープンしてお問い合わせください。

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の 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

Note

画像生成 API には、コンテンツ モデレーション フィルターが付属しています。 サービスがプロンプトを有害なコンテンツとして認識した場合、生成画像は返されません。 詳しくは、コンテンツ フィルターに関する記事を参照してください。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

このガイドを使用して、PowerShell を使って Azure OpenAI Service の画像生成 API の呼び出しを開始します。

Note

画像生成 API は、テキスト プロンプトから画像を作成します。 既存の画像を編集したり、バリエーションを作成したりすることはありません。

前提条件

Note

現在、Azure OpenAI Service にアクセスするには、アプリケーションを送信する必要があります。 アクセスを適用するには、こちらのフォームに入力してください。 サポートが必要な場合は、このリポジトリで問題を開いて Microsoft にお問い合わせください。

キーとエンドポイントを取得する

Azure OpenAI API を正常に呼び出すには、Azure OpenAI リソースに関する次の情報が必要です。

変数 名前
エンドポイント api_base エンドポイント値は、Azure portal のリソースの [キーとエンドポイント] にあります。 または、Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
キー api_key キー値は、Azure portal のリソースの [キーとエンドポイント] にあります。 Azure では、リソースに対して 2 つのキーが生成されます。 いずれかの値を使用できます。

Azure portal でリソースに移動します。 ナビゲーション ウィンドウで、[リソース管理] [キーとエンドポイント] を選択します。 [エンドポイント] の値とアクセス キーの値をコピーします。 KEY 1 または KEY 2 のいずれかの値を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal で 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
    

    重要

    運用環境では、Azure Key Valut を使用した PowerShell Secret Management のような安全な方法で認証情報を保存し、アクセスしてください。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。

  3. PowerShell を使用してスクリプトを実行します。

    ./quickstart.ps1
    

    生成された画像の準備ができるまで、スクリプトはループします。

出力

PowerShell によって、Azure OpenAI からのイメージが要求され、指定したディレクトリ内の generated_image.png ファイルに出力イメージが格納されます。 便宜上、ファイルの完全なパスはスクリプトの最後に返されます。

画像生成 API には、コンテンツ モデレーション フィルターが付属しています。 サービスがプロンプトを有害なコンテンツとして認識した場合、画像は生成されません。 詳細については、「コンテンツ フィルター」を参照してください。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ