GASでDALL·E3の画像生成をAPI経由で実行する方法!設定パラメータ解説

2023年11月にOpenAIが画像生成AIのDALL·E3(ダリスリー)をAPIリクエストして利用できるようにしました。

DALL-E2(ダリツー)よりも高性能なDALL-E3を、Google Apps Script(GAS)からAPI経由で実行する方法を解説します。

APIリクエストに必要なパラメータ設定を説明しながら、コピペで動かせるサンプルコードを掲載しています。

2023年11月にDALL-E3のAPIがリリース

2023年11月に開催されたOpenAIのイベント「DevDay」では生成AIに関するアップデート情報が発表されました。

アップデート情報の1つが画像生成AIであるDALL-E3のAPIリリースです。

2023年11月に開催されたOpenAIのDevDayにてDALL-E3のAPI提供が発表

これまでは1つ前のバージョンであるDALL-E2しかAPI経由では利用できませんでした。

しかし、2023年11月からはDALL-E3をAPIリクエストして画像生成が可能になりました。

これによって、Google Apps Script(GAS)から高性能なDALL-E3による画像生成するプログラムが作成できます。

DALL-E2よりも高精度・高画質なDALL-E3

OpenAIによると、DALL-E3は前のバージョンであるDALL-E2よりも画像生成AIとしての性能が向上しているそうです。

同じプロンプトを入力した場合でも、DALL-E2とDALL-E3では画像生成されるアウトプットの画像の品質に大きな差が生じています。

OpenAIのDALL-E3の解説によると、同じプロンプトでもDALLE2よりもDALLE3のほうが高品質な画像が生成

さらに、DALL-E2よりもDALL-E3のほうがプロンプトで指示した項目がきちんと反映された画像が生成されるとのことです。

それゆえにDALL-E3を使うことでより高精度・高品質な画像を生成することができます。

DALL-E3のAPIはエンドポイントがDALL-E2と同じ

そんな性能が格段に向上したDALL-E3がAPIを叩いて画像生成できるようになりました。

DALL-E3のAPIリクエストするためのエンドポイントは実はDALL-E2と同じURLです。

OpenAIのAPIリファレンスによると、DALLE·3のAPIもDALLE2と同じエンドポイント使用
https://api.openai.com/v1/images/generations

上記のエンドポイントURLにHTTPSのPOSTすることでDALL-E3のAPI実行できます。

APIでリクエストできるプロンプトの分量はDALL-E2が英語で1000文字だったのに対し、DALL-E3はその4倍となる4000文字まで入力可能です。

DALL-E3のみ設定可能なAPIパラメータ

前述した通り、DALL-E3のAPIはエンドポイントのURLがDALL-E2と同一です。

ただ、DALL-E3のAPIをリクエストする場合、DALL-E2とは設定パラメータの変更が必要です。

DALL-E3のAPIにペイロードでセットするパラメータとして、以下の項目を設定します。

  1. model
  2. quality
  3. size
  4. style

①modelは画像生成AIのモデルを指定するパラメータです。

DALL-E3で画像生成するには、「dall-e-3」を指定します。

modelパラメータを省略してしまうと、モデルがDALL-E2になるので、DALL-E3を使いたい場合は設定必須です。

②qualityはDALL-E3でのみ利用できる品質を制御するパラメータです。

standardとhdの2種類が設定でき、省略した場合のデフォルトはstandardが指定されます。

hdを指定するとより高精度・高画質な画像が生成されます。

※その分APIリクエストにかかる料金が倍になるので注意が必要です。

③sizeは生成する画像の大きさを指定するパラメータです。

DALL-E3の画像生成AIモデルの場合、以下の3パターンのサイズを指定できます。

  1. 1024×1024
  2. 1024×1792
  3. 1792×1024

DALL-E2では256×256、512×512、1024×1024の3種類でした。

DALL-E3のAPIでは正方形サイズ以外に縦長・横長の長方形サイズも画像生成できるようになっています。

※sizeパラメータを省略すると、1024×1024がセットされます。

④styleはDALL-E3でのみ利用できる生成画像のスタイルを選択するパラメータです。

現在設定できるstyleパラメータはvividまたはnaturalの2種類となっています。

省略した場合はvividなので、naturalなスタイルの画像を生成したい場合は設定します。

GASでのDALL-E3のAPIリクエストはDALL-E2を少し改良

ここまで説明してきた通り、DALL-E3のAPIリクエストはエンドポイントURLが同じで、設定するパラメータが異なります。

そのため、Google Apps Script(GAS)でDALL-E3をAPI実行する場合、コードはDALL-E2と基本的に同じです。

AutoWorkerではGASでDALL-E2をAPIリクエストして画像生成する方法を解説しています。

今回、DALL-E3のAPIを実行する方法も上記のサンプルコードをベースに、パラメータ周りを少し追加しています。

GASでDALL-E3の画像生成するサンプルコード

実際にGoogle Apps Script(GAS)でDALL-E3のAPIを実行して画像を生成する方法をサンプルコードで解説します。

DALL-E3のAPIをリクエストして設定プロンプトから画像生成し、Googleドライブに画像を保存するサンプルコードは以下の通りです。

function requestDallE3Image() {
  //スクリプトプロパティに設定したOpenAIのAPIキーを取得
  const apiKey = PropertiesService.getScriptProperties().getProperty('APIKEY');
  //画像生成AIのAPIのエンドポイントを設定
  const apiUrl = 'https://api.openai.com/v1/images/generations';
  //画像生成AIに投げるテキスト(プロンプト)を定義
  const prompt = '画像生成したいプロンプトを入力してください';
  //OpenAIのAPIリクエストに必要なヘッダー情報を設定
  let headers = {
    'Authorization':'Bearer '+ apiKey,
    'Content-type': 'application/json',
    'X-Slack-No-Retry': 1
  };
  //DALL-E3モデル指定と画質、画像生成の枚数とサイズ、プロンプトをオプションに設定
  let options = {
    'muteHttpExceptions' : true,
    'headers': headers, 
    'method': 'POST',
    'payload': JSON.stringify({
      'model' : 'dall-e-3',
      'quality' : 'standard',
      'style' : 'natural',
      'n': 1,
      'size' : '1024x1024',
      'prompt': prompt})
  };
  //OpenAIの画像生成AI(Images)にAPIリクエストを送り、結果を変数に格納
  const response = JSON.parse(UrlFetchApp.fetch(apiUrl, options).getContentText());
  //生成された画像のURLにフェッチして画像データを取得して、名前をつける
  const image = UrlFetchApp.fetch(response.data[0].url).getAs('image/png').setName('DALL-E3生成画像');
  //Googleドライブに画像を保存し、画像の保存先URLをログ出力
  const driveUrl = DriveApp.createFile(image).getUrl();
  console.log('Googleドライブ格納先:'+ driveUrl);
}
Google Apps Script(GAS)でOpenAIの画像生成AI、DALL·E3をAPI経由でリクエストするサンプルコード

APIキーは直書きせずにGASのスクリプトプロパティを参照して取得しています。

GASのスクリプトエディタの「プロジェクトの設定」から、「APIKEY」というキー名で、OpenAIのAPIキーを追加します。

Google Apps Script(GAS)ではOpenAIのAPIキーはスクリプトプロパティに設定して参照

※OpenAIのAPIキー取得方法は下記の記事で解説しています。

7行目にDALL-E3にAPIリクエストするプロンプトを定義しているので、生成したい画像に応じてプロンプトを書き換えて下さい。

DALL-E2のGASでのリクエスト方法から大きく異なるのはAPIリクエストのペイロードの設定パラメータです。

modelとしてdall-e-3を必ず設定し、品質のqualityや画像スタイルのstyleと画像サイズのsizeを記述します。

GASのサンプルコードで用意したrequestDallE3Image関数を実行すると、DALL-E3の画像生成AIが作成した画像が、Googleドライブに保存されます。

GASの実行ログに保存先URLが出力されるので、URLにアクセスすると生成された画像を確認可能です。

GASのサンプルコードのプロンプトを「アヒルの口でワシの翼を持ち、火を吐くライオン」と設定したところ、DALL·E3が以下の画像を生成しました。

Google Apps Script(GAS)から「アヒルの口でワシの翼を持ち、火を吐くライオン」というプロンプトでDALL-E3のAPI経由で生成した画像

このようにGASでDALL-E3のAPIを叩いて、高精度な画像を生成することができます。

DALL-E3のAPI利用の注意点

DALL-E3のAPIを利用する際にはいくつかの注意点がありますが、最も気をつけたいのがコスト、API利用料です。

DALL-E3のAPIはChatGPTやGPT-4の生成AIに比べても高額です。

さらに従来版のDALLE2と比較しても、2倍近い利用料がかかります。

Google Apps Script(GAS)のスクリプトを実行するたびにDALL-E3のAPI利用料が発生します。

特にGASのループ処理で誤ってDALL-E3のAPIリクエストしてしまうとOpenAIから高額請求されます。

そのため、GASのスクリプト実行時には事前に問題ないか確認しておきましょう。

過剰なAPI利用料請求が心配な場合は、OpenAIの管理画面からAPI利用のキャップを設定しておくと安心です。

まとめ・終わりに

今回、Google Apps Script(GAS)でOpenAIの画像生成AIの最新版であるDALL-E3のAPIをリクエストする方法を紹介しました。

以前紹介したDALL-E2のGASスクリプトと近しいやり方ですが、設定パラメータでmodelをdall-e-3を指定する必要があります。

DALL-E3からは指定可能なサイズも大きくなるとともに、画像の品質やスタイルも設定可能です。

高性能な画像生成AIであるDALL-E3をGASで使えれば、様々なサービスに組み込んだり、自動化することができます。

ぜひ、GASでDALL-E3を利用したい場合は、記事で紹介したサンプルコードを参考にしてみてください。