2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GPT-3(DALL・E)をJavaで呼び出し、画像生成を実施する方法

Posted at

DALL・Eとは?

ChatGPTで有名である、OPEN AI社が提供している、画像を生成するAIツールです。
ChatGPTと同じく、GPT-3というAIモデルを元に作られており、ChatGPTが自然言語特化とするのであれば、DALL・Eは画像特化のAIモデルと言えます。(多分)

1. 準備編(APIキーの取得)

OpenAIのアカウントを作成し、APIキーを取得します。
様々なサイトでアカウント作成方法は取り上げられているので、今回記載は割愛します。

下記を参考にさせて頂きました。

アカウントを作成したら、画面右上から「View API Keys」を選択します。

image.png

「Create new secret key」を押下して、APIキーを作成します。
APIキーを作成したら、どこかに控えておいて下さい。

image.png

image.png

注意
DALL・E、GPT-3は有料サービスです。通信料に応じて料金が発生します。

今現在(2023/3/3)では、OpenAIアカウント作成から3か月間無料期間があり、$18分のクレジットが与えられます。
そのため、最初の3カ月は$18分、無料で使用する事が出来ますが、

  • $18分を超過して使用した場合
  • 又は3カ月後も継続使用した場合

については料金が発生します。

筆者は現在無料枠で使用していますが
現在の無料枠や料金体系がどのようになっているか
ご自身で調べてから利用する事をおすすめします。

2. 準備編(Maven依存関係の追加)

Eclipseのタブから
FIle -> New -> Project -> MavenProjectを選択し、新規MavenProjectを作成します。
image.png

作成後、pom.xmlに追記します。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>dallETest</groupId>
	<artifactId>dallETest</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	
    <!-- ここから追記 -->
	<dependencies>
		<dependency>
			<groupId>com.theokanning.openai-gpt3-java</groupId>
			<artifactId>api</artifactId>
			<version>0.10.0</version>
		</dependency>
		<dependency>
			<groupId>com.theokanning.openai-gpt3-java</groupId>
			<artifactId>service</artifactId>
			<version>0.10.0</version>
		</dependency>
	</dependencies>
    <!-- ここまで -->
</project>

ここまで出来たら、準備OKです。

3. 実装編

あとは、APIを呼び出す実装をするのみです。

public static void main(String[] args) throws IOException {
    // APIキー設定
	OpenAiService service = new OpenAiService("1で取得したAPIキーを記載");

	// リクエストの作成
	CreateImageRequest req = CreateImageRequest.builder()
			.prompt("柴犬の画像") //生成する画像の説明
			.n(1) // 生成する画像の数。 1~10で選択
			.responseFormat("b64_json") // ローカルの画像を指定するため、b64_jsonを選択。 "URL"とすればURLでの画像の指定も可能
			.size("256x256") //生成する画像のサイズ、256x256, 512x512, 1024x1024から選択
			.build(); 

	// 画像生成の実施
	ImageResult imageResult = service.createImage(req);

	// 返ってきたデータをバイナリ化
	byte[] data = Base64.getDecoder().decode(imageResult.getData().get(0).getB64Json());

	try {
		// 返ってきたデータをpng形式で保存
		BufferedImage image = ImageIO.read(new ByteArrayInputStream(data));
		ImageIO.write(image, "png", new File("test.png"));

	} catch (IOException e) {
		System.out.println("画像出力に失敗しました。");
	}
}

リクエストパラメータの設定など、詳細はこちらに記載されています。
当然ですが、sizeなどを大きくすれば処理速度も低下します。

4. 実行結果

test.pngとしてこのような柴犬の画像が生成されました。(絵だけど・・・)
test.png

5. さいごに

Javaでの呼び出しを紹介しているページが少なかったので、書いてみました。
今回は画像生成の手順のみを紹介しましたが、DALL・Eでは画像の加工や、
画像の補填(画像の枠外にあたる、続きを予想して生成する) を行う事が出来ますので、
今度はそちらの使い方も紹介したいと思います。

参考にさせて頂いたページ

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?