メニュー

大量の画像生成を一気にかつCodex/Workの使用量ほぼ0で行う方法

公開日
更新日
大量の画像生成を一気にかつCodex/Workの使用量ほぼ0で行う方法
目次

こんにちは。最近はChatGPTも画像生成の精度が素晴らしく、よく使ってる方も多いと思います。

大量に画像が必要な場合、一気に生成をさせるならChatGPTのデスクトップアプリからCodex/Workに指示を出すといい感じです。一回指示を出して放っておけばそのうち完了します。

ですが、この方法だと使用量をものすごく消費してしまいます。そこで、僕が最近行なっている「一気に画像生成させつつコストを極限まで減らす方法」を紹介したいと思います。

コピーして使えるプロンプトも紹介しますので、ぜひ使ってみてください。

全体の流れ

以下のような流れで実行しています。人間が行うのは1と2だけです。

  1. 画像ごとのプロンプトファイルを用意する(後述)。
  2. 人間がデスクトップアプリへ後述のプロンプト1回だけ指示する
    1. ここでAIが定期実行タスクも自動で設定します。
  3. AstraがComputer Useからブラウザ版ChatGPTに画像生成を依頼する。
  4. 裏で用意した定期実行タスクから画像の生成状況を確認し、完成していれば保存して次の画像へ進む。
画像ごとのプロンプトファイルを準備し、人間が1回指示してからの時系列図。上段はデスクトップのAstra、下段はブラウザ版ChatGPT。Computer Useで画像Aを依頼して実行を終了し、次の定期実行で完成を確認して保存、画像Bを依頼する。待機中もブラウザでは生成が進み、未完成なら次回に再確認する。

要するにデスクトップアプリが、

  • プロンプトを作り送信する
  • 画像が完成したか確認する
  • 完成した画像を保存する
  • 保存したら次の画像生成へ移行する

という人間の役割を概ね代行してくれている形ですね。

最初に用意する画像生成用のプロンプトファイル群

画像1枚につき1ファイルに指示の全文を書き、prompts/へ入れてください。 名前順に処理するので、連番を付けておくと順番を指定できます。他のフォルダは実行中にAIが自動生成します。

1作業フォルダ/
2├── prompts/                           # 事前に用意する
3│   ├── 001-main.txt                    # 1枚目の画像への指示
4│   └── 002-background.txt              # 2枚目の画像への指示
5├── output-images/                     # 生成画像の保存先(自動作成)
6└── browser-generation-progress.json   # 進捗の記録(自動作成)

.mdで用意する場合は、下のプロンプトの対象も.txtから.mdに変えてください。

prompts/フォルダが用意できたら以下の初回指示用プロンプトをデスクトップアプリから実行してください。

プロンプト(クリック/タップで開きます)

1画像をブラウザ版ChatGPTで1件ずつ生成し、保存してください。
2
3作業フォルダ:~/path/to/folder(好きなフォルダを指定してください。)
4以下のパスは、このフォルダを基準にします。
5
6■ 対象と保存先
7対象は prompts/ 直下の .txt ファイルです。
8画像は output-images/ に、プロンプトファイルと同じファイル名で保存してください。拡張子は画像形式に合わせてください。
9必要なフォルダは作成し、既存ファイルは上書きしないでください。
10
11■ 手順
121. 進捗JSONを確認する。送信済みのものがあれば、新しく送らず、そのチャットの確認から再開する。
132. 進捗JSONをもとに、未処理のプロンプトファイルを名前順に1件選び、ファイル名と着手したことを記録する。
143. ChromeでChatGPTの新しいチャットを作り、「6 Pro」を選んでプロンプトファイルの全文を送信する。Workは使わない。
154. 送信済みであること、送信日時、チャットURLを記録し、その回の作業を終える。
165. 次の定期実行で同じチャットを一度だけ確認する。未完成なら、その回の作業を終える。
176. 完成していれば画像を保存する。保存成功を確認して保存先と完了を記録し、次の未処理ファイルへ進む。
18
19プロンプトファイルごとに新しいチャットを使い、同時に生成するのは1件だけにしてください。
20
21■ 進捗と再開
22各ファイルの状態は browser-generation-progress.json に記録してください。
23プロンプトファイルは prompts/ に残し、完了済みのファイルは再送しないでください。
24状態が判断できない場合は、再送せず定期実行を停止して知らせてください。
25
26■ 作業範囲
27画像の品質チェックは不要です。画像の生成が終わったことと、保存できたことだけ確認してください。
28待機中の画面監視や、定期実行以外での繰り返し確認はしないでください。
29APIやCodex内蔵の画像生成は使わないでください。プロンプトは変更せず、生成した画像は公開しないでください。
30ログイン切れやエラーが起きた場合、利用上限に達した場合は、定期実行を停止して知らせてください。
31
32■ 定期実行
33デスクトップ側のこの会話を15分間隔で再開する定期実行「画像生成」を作ってください。
34この作業用の定期実行がすでにあれば再利用し、重複して作らないでください。
35通常の進捗通知は不要です。全対象が完了済みになったら、定期実行を停止して結果を報告してください。
36
37まず1件で送信から保存までの操作を確認し、問題なければ残りを続けてください。

詳細解説

ブラウザとモデルの設定

ChromeでChatGPTにログインし、デスクトップアプリの「Settings → Computer Use」で連携しておいてください。
参考:設定手順

実行中はPCとアプリを起動したままにし、Chromeの操作とファイル保存を許可してください。

デスクトップ版のモデル設定はAstra lowなどの低い推論で問題ありません。それほど難しいタスクをしませんし、コストを低く抑えられます。

画像生成とブラウザ操作を分ける理由

ブラウザ版ChatGPTでは、ChatモードWorkモードに分かれています。Workモードはブラウザからの利用でもCodexと使用量を共有しています。
参考:Work/Codexの使用量

一方、Chatの使用量はCodexとは別です。初回指示用プロンプトではこのChatモードを使って画像生成を行うように記述しています。

Workを使わずChatから画像を生成するのはCodexの使用量を全く消費せずに行えるからです。
参考:ChatとWork/Codexの使用量の区別

ブラウザ操作や定期実行にもWork/Codex側の使用量はかかりますが、直接画像を生成させるより圧倒的に使用量を抑えられます。

※もちろんChatにはChatの使用量制限はありますのでご注意ください。

定期実行で確認の回数を抑える

「定期実行なんて面倒なことしないで、普通に連続で画像生成させる指示を出せばいいのでは?」と思ったかもしれません。確かにそれでもブラウザ操作経由の画像生成は行えます。

しかし完了を確認する作業が実は結構トークンを消費します。完了までに何回もブラウザを操作して確認させると結構な消費になってしまいます。

そこである程度実行時間が分かっているなら定期実行を設定したほうが効率がいいことになります。1回の画像生成にかかる時間は指示によって変わるので、2〜3つほど手動で試してから間隔を設定するといいでしょう。

品質の判断をAIにさせない

AIには生成完了と保存成功の確認だけを任せます。 ハイエンドモデルにありがちなんですが、指示をしていなくても成果物のテストや品質チェックを過剰に行うことがあります。

このチェック工程が非常に高コストです。特に画像はAIがチェックしたとしても仕方がないことが多いので、品質は保存後に自分で確認しましょう。

同じ指示で次へ進むための進捗記録

少し込み入った話ですが、定期実行の仕組みは毎回同じプロンプトを一定間隔もしくは指定した時間に行うものです。
したがって画像ごとに違う指示を行わせたければ少し工夫がいります。また重複して指示を送信したりすることも防ぎたかったので進捗を管理する簡単なJSONを用意する形にしました。

デスクトップのAstraを中心に、毎回同じ定期実行用の指示、画像ごとのプロンプトファイル、1つの進捗JSONを配置した図。Astraは進捗JSONを読み書きして次回へ引き継ぎ、未処理のプロンプトファイルを選ぶ。その全文をComputer Useでブラウザ版ChatGPTへ送り、画像を確認して保存する。
進捗JSONを読み書きし、画像ごとのプロンプトファイルを選びます。

例えば「Aは完了、Bは送信済み」なら、次回はBの確認から再開します。
状態が不明なら再送せず止め、二重送信を防ぎます。

応用:画像生成以外にも使えるテンプレート

今回の考え方は、「Webサービスへ処理を依頼し、時間を置いて結果を受け取る」という作業なら大抵応用できると思います。

汎用的になるよう、テンプレートを組み直してみました。[ ]を任意の情報で埋めて使ってください。

1ブラウザで以下のWebサービスを操作し、用意した処理を1件ずつ実行して成果物を保存してください。
2
3■ 設定
4作業フォルダ:[作業フォルダのパス]
5操作するWebサービス:[URLと使用する画面・モード]
6送信する内容と操作:[入力ファイルのどの内容を、どこへ送信するか]
7完了の目印:[完了表示やダウンロードボタンなど]
8保存する成果物と保存方法:[対象、ファイル形式、保存操作]
9確認間隔:[何分おきか]
10定期実行名:[この作業を識別できる名前]
11
12以下のパスは、作業フォルダを基準にします。
13対象は tasks/ 直下の .txt ファイルです。
14成果物は output/ に、入力ファイルと対応が分かる名前で保存してください。
15必要なフォルダは作成し、既存ファイルは上書きしないでください。
16
17■ 進め方
181. progress.json を確認する。送信済みの処理があれば、新しい処理を送らず、その結果確認から再開する。
192. 進捗JSONをもとに、未処理の入力ファイルを名前順に1件選び、ファイル名と着手したことを記録する。
203. 指定された内容を送信する。送信済みであること、送信日時、結果を確認するページのURLを記録し、その回の作業を終える。
214. 次の定期実行で結果を一度だけ確認する。未完成なら、その回の作業を終える。
225. 処理が終わっていれば成果物を保存する。保存成功を確認して保存先と完了を記録し、次の未処理ファイルへ進む。
23
24同時に処理するのは1件だけにしてください。
25各ファイルの状態は progress.json に記録してください。
26入力ファイルは tasks/ に残し、完了済みのファイルは再送しないでください。
27送信や保存の状態が判断できない場合は、再送せず定期実行を停止して知らせてください。
28
29■ 作業範囲
30入力内容は変更しないでください。
31確認するのは、指定した完了の目印と、成果物を保存できたことだけです。
32待機中の画面監視や、定期実行以外での繰り返し確認はしないでください。
33成果物は公開しないでください。
34ログイン切れやエラーが起きた場合、利用上限に達した場合は、定期実行を停止して知らせてください。
35
36■ 定期実行
37デスクトップ側のこの会話を、指定した間隔で再開する定期実行を作ってください。
38この作業用の定期実行がすでにあれば再利用し、重複して作らないでください。
39通常の進捗通知は不要です。全対象が完了済みになったら、定期実行を停止して結果を報告してください。
40
41まず1件で送信から保存までを確認し、問題なければ残りを続けてください。

特に具体的に書いてほしいのが「完了の目印」です。例えば「結果ページにダウンロードボタンが表示され、成果物を取得できること」のように、操作する側が判断できる条件にしましょう。

まとめ

ということで、大量の画像生成を圧倒的に低コストで行う方法の紹介でした。

連続した作業をブラウザに行わせ、定期実行機能を使って確認するという流れは色んなタスクに応用できると思うのでぜひお試しください。