qinfengge

qinfengge

醉后不知天在水,满船清梦压星河
github
email
telegram

spring AI(七)文生図DALLE3 + SD

Spring AI は文生図をサポートしており、もちろん既存のソリューションに基づいています。文生図のコードは非常にシンプルで、5 行程度ですが、一応記録しておきます。

DALLE3#

これは OpenAI がリリースした文生図のモデルで、基本的には最も一般的なものです。専門の SD や MJ と比べても十分ですが、重要なのはシンプルさです。ヒントの言葉を考える必要はありません。自然言語で説明するだけで十分です。

以前に OpenAI の依存関係と設定を設定したので、変更する必要はありません。

まず、OpenAiImageModelオブジェクトを作成します。

private final OpenAiImageModel openAiImageModel;

次に、公式の例をコピーしてください。

ImageResponse response = openaiImageModel.call(
        new ImagePrompt("A light cream colored mini golden doodle",
        OpenAiImageOptions.builder()
                .withQuality("hd")
                .withN(4)
                .withHeight(1024)
                .withWidth(1024).build())

);

ここで、ビルド時にいくつかの主要なパラメータの説明は次のとおりです:

パラメータ説明
Modelモデル、デフォルトは DALL_E_3
Quality生成される画像の品質、dall-e-3 のみサポート
N生成される画像の数
Width生成される画像の幅、dall-e-2 の場合、256x256、512x512、または 1024x1024 のいずれかである必要があります。dall-e-3 モデルの場合、1024x1024、1792x1024、または 1024x1792 のいずれかである必要があります
Height生成される画像の高さ
Style生成される画像のスタイル、vivid または natural である必要があります。前者はよりリアルな画像、後者はより自然な画像です。dall-e-3 のみサポート

最後に、画像を返すだけです。

/**
     * 调用openAI的dall-e-3生成图片
     * @param message 提示词
     * @return ImageResponse
     */
    @GetMapping(value = "/openImage", produces = "text/html")
    public String openImage(@RequestParam String message) {
        ImageResponse imageResponse = openAiImageModel.call(new ImagePrompt(message,
                OpenAiImageOptions.builder()
                        .withModel(OpenAiImageApi.DEFAULT_IMAGE_MODEL)
                        .withQuality("hd")
                        .withN(1)
                        .withWidth(1024)
                        .withHeight(1024).build())
        );

        String url = imageResponse.getResult().getOutput().getUrl();
        System.err.println(url);
        return "<img src='" + url + "'/>";
    }

OpenAI は 2 つの返却方法を提供しています。URL で画像を返す方法と、BASE64 エンコードで画像を返す方法です。

Stability AI#

最初は Stability AI という方法でローカルの Stable Diffusion インターフェースを呼び出して画像を生成できると思っていましたが、試してみるとできないことがわかりました。Stability AI は Stability が提供するオンラインドローイングプラットフォームですが、これら 2 つは異なります。

まず、Stability AI 公式ウェブサイトでアカウントを登録して無料クレジットを取得します。
登録が完了したら、API キーをコピーします。

image

次に、依存関係を追加します。

 <!--  stability依赖   -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-stability-ai-spring-boot-starter</artifactId>
        </dependency>

そして、設定します。

spring:
  ai:
    stabilityai:
      api-key: sk-xxx

同様に呼び出します。

/**
     * 调用stability生成图片
     * @param message 提示词
     * @return ImageResponse
     */
    @GetMapping(value = "/sdImage", produces = "text/html")
    public String sdImage(@RequestParam String message) {
        ImageResponse imageResponse = stabilityAiImageModel.call(
                new ImagePrompt(message,
                        StabilityAiImageOptions.builder()
                                .withStylePreset("cinematic")
                                .withN(1)
                                .withHeight(512)
                                .withWidth(768).build())

        );

        String b64Json = imageResponse.getResult().getOutput().getB64Json();
        String mimeType = "image/png";
        String dataUrl = "data:" + mimeType + ";base64," + b64Json;

        return "<img src='" + dataUrl + "' alt='画像'/>";

    }

注意点は次のとおりです:

  1. Stability AI のヒントの言葉は英語で入力してください。中国語では通用しない可能性があります。
  2. Stability AI の返却は画像の BASE64 形式のみで、URL は null です。

智譜#

もう 1 つの AI ドローイングモデルである智譜も試してみましたが、登録後に無料クレジットは対話モデルのみをサポートしており、文生図のモデルはサポートしていないことがわかりました。また、最新のモデルを無料で試すには実名認証が必要です... 少し非現実的ですので、諦めました。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。