05、LangChain4j快速对接生图模型(百炼平台、智谱)

文章目录

前言

博主介绍:✌目前全网粉丝4W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。

博主所有博客文件目录索引:博客目录索引(持续更新)

CSDN搜索:长路

视频平台:b站-Coder长路

本章章节源码

gitee:https://gitee.com/changluJava/demo-exer/tree/master/ai/langchain4j/LangChain4j-demo/src/test/java/com/changlu/ai/langchain4j


一、生图模型调研

1.1、生图模型厂商

厂商 核心模型 官网/平台 核心优势 API 免费/优惠政策
Google Nano Banana Google AI Studio 物理光影拟真度极高,渲染极快,4K 高清。 Free Tier:每分钟固定次数限制,个人完全免费。
阿里巴巴 通义万相-v2 阿里云百炼 擅长电商、海报设计、中国元素理解。 新人礼包:新账号赠送 90 天有效期的大额免费额度。
字节跳动 Seedream 4.5 火山引擎 中文语义理解最强,人像皮肤质感极佳。 赠送代币 :首次开通赠送约 50-100 元代币,可抵扣生图。
腾讯云 混元文生图 腾讯云混元 动漫、国风等亚洲文化内容生成上表现优异。 通用免费包 :首次开通服务,一次性发放50次 免费调用额度,有效期1年。 专项激励(推荐) :参与「AI小程序成长计划」,可获得1万张混元生图资源包,有效期6个月,专供微信小程序和云开发控制台使用。
智谱 (Zhipu) CogView-3-Flash 智谱AI开放平台 完全免费,推理速度快,支持多种分辨率,适用于PPT配图、艺术创作等通用场景。 永久免费:官方明确该模型为"免费模型",目前无使用期限或总量限制说明。
百度智能云 文心一格 百度智能云 · 文心一格(千帆) 中文理解能力强,社区成熟,文档齐全。 长期免费基础包 :提供每日500次免费调用(或约1.6万Tokens),适合小规模测试和持续体验。【目前官方只提供了qwen-image】
SiliconFlow FLUX / SD 系列 SiliconFlow 官网 聚合平台,模型极全(FLUX 顶尖画质)。 注册即送:常驻免费积分,部分模型限时免费调用。
OpenAI GPT Image 5 OpenAI API 指令遵循能力最强,适合复杂逻辑构图。 较少直接免费,但随 ChatGPT Plus 赠送额度。
Midjourney Midjourney V7 Midjourney 艺术感与审美天花板,光影氛围极佳。 无原生 API 免费,仅网页端偶尔有试用活动。
DeepSeek Janus-Pro DeepSeek 官网 github:https://github.com/deepseek-ai/Janus 强大的多模态理解力,逻辑生图。 大额赠送:注册即送千万量级 Token(含生图)。

其中百炼、智谱提供部分模型对接免费使用初步,可用于测试。

**youmind产品:**涉及到的模型如下:


1.2、在线体验地址

体验地址:

百炼平台:https://bailian.console.aliyun.com/cn-beijing/?spm=5176.29619931.J__Z58Z6CX7MY__Ll8p1ZOR.1.74cd521cgGPP0f\&tab=model\&accounttraceid=9c8b3ce6a7584874a57890a25358b557feot#/efm/model_experience_center/vision?currentTab=imageGenerate\&modelId=qwen-image-max

火山方舟:https://www.volcengine.com/experience/ark?mode=vision\&modelId=doubao-seedream-5-0-260128\&tab=GenImage\&viewMode=grid

1.3、提示词学习参考

豆包

豆包图像生成的prompt学习:https://console.volcengine.com/ark/region:ark+cn-beijing/model/detail?Id=doubao-seedream-5-0\&Tab=model-info

GLM

文档介绍:https://docs.bigmodel.cn/cn/guide/models/image-generation/glm-image

二、对接百炼平台生图模型

2.1、百炼平台sdk & 文档

千问文生图文档https://help.aliyun.com/zh/model-studio/qwen-image-api?spm=a2c4g.11186623.help-menu-2400256.d_2_2_0.48995ec6Zbdrqd#98754beb2334v

mvn repository(dashscope sdk)https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java/versions

api key获取:

2.2、官方sdk快速对接测试

官方文档学习千问文生图文档https://help.aliyun.com/zh/model-studio/qwen-image-api?spm=a2c4g.11186623.help-menu-2400256.d_2_2_0.48995ec6Zbdrqd#98754beb2334v

1)引入pom:

xml 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>2.22.9</version>
</dependency>

2)编写单独测试用例:

提前进行环境变量的配置:

shell 复制代码
vim ~/.zshrc

# 百炼的sdk
export DASH_SCOPE_API_KEY="xxxx"

source ~/.zshrc
java 复制代码
package com.changlu.ai.langchain4j.qwen.image;// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;

/**
 * @description  原生dashscope sdk调用
 * @author changlu
 * @date 2026/2/23 13:34
 */
public class DashScopeSdkImageTest {
    static {
        // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1
        Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
    }

    // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
    // 若没有配置环境变量,请用百炼API Key将下行替换为:static String apiKey = "sk-xxx"
    static String apiKey = System.getenv("DASH_SCOPE_API_KEY");

    public static void basicCall() throws ApiException, NoApiKeyException {
//        String prompt = "一副典雅庄重的对联悬挂于厅堂之中,房间是个安静古典的中式布置,桌子上放着一些青花瓷,对联上左书"义本生知人机同道善思新",右书"通云赋智乾坤启数高志远", 横批"智启千问",字体飘逸,在中间挂着一幅中国风的画作,内容是岳阳楼。";
        String prompt = "公众号技术海报,公众号为:长路Java,海报中央大标题"Guava工具类库使用",Java编程主题背景,深蓝色科技渐变,代码线条和数据流装饰,简洁现代的设计风格,适合开发者社区,16:9比例,高清画质。";
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("negative_prompt", " ");
        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        // 当前仅qwen-image-plus、qwen-image模型支持异步接口
                        .model("qwen-image-plus")
//                        .model("qwen-image-max")
//                        .model("qwen-image-plus-2026-01-09")
                        .prompt(prompt)
                        .n(1)
                        .size("1664*928")
//                        .size("1328*1328")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---同步调用,请等待任务执行----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args){
        try{
            basicCall();
        }catch(ApiException|NoApiKeyException e){
            System.out.println(e.getMessage());
        }
    }
}

返回结果如下:

效果为:

2.3、langchain4j快速对接生图模型

1)引入pom.xml:

xml 复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-community-dashscope</artifactId>
    <version>1.0.0-beta3</version>
</dependency>

2)案例demo如下

java 复制代码
public class QwenGenerateImageTest {

    @Test
    public void test01() {
        WanxImageModel model = WanxImageModel.builder()
                .baseUrl("https://dashscope.aliyuncs.com/api/v1")
                .apiKey(System.getenv("DASH_SCOPE_API_KEY"))
                .size(WanxImageSize.SIZE_1280_720)
                .watermark(false)
                .modelName("qwen-image-plus").build();

        Response<Image> response = model.generate("公众号技术海报,中央大标题"Guava工具类库使用",Java编程主题背景,深蓝色科技渐变,代码线条和数据流装饰,简洁现代的设计风格,适合开发者社区,16:9比例,高清画质。");

        URI remoteImage = response.content().url();
        System.out.println(remoteImage);
    }

}

运行结果:

效果如下:

三、对接GLM的图像模型

3.1、GLM模型文档介绍

产品文档地址:http://docs.bigmodel.cn/cn/guide/models/image-generation/glm-image

v0免费账号额度:https://bigmodel.cn/usercenter/equity-mgmt/user-rights

**免费模型:**https://docs.bigmodel.cn/cn/guide/models/free/cogview-3-flash

API接口调用文档https://docs.bigmodel.cn/api-reference/模型-api/图像生成

**使用场景:**https://docs.bigmodel.cn/cn/guide/models/image-generation/glm-image

3.2、apikey获取

控制台获取:

3.3、curl调通image模型生成(含去水印)

接口文档:https://docs.bigmodel.cn/api-reference/模型-api/图像生成

shell 复制代码
# apitoken 填写
# 模型:cogview-3-flash 免费模型,https://docs.bigmodel.cn/cn/guide/models/free/cogview-3-flash
curl --request POST \
  --url https://open.bigmodel.cn/api/paas/v4/images/generations \
  --header 'Authorization: Bearer apitoken' \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "cogview-3-flash",
  "prompt": "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云.",
  "size": "1280x1280",
  "quality": "standard",
  "watermark_enabled": false
}
'

cogview-3-flash效果如下:

1)文字类

复制代码
公众号技术海报,公众号为:长路Java,海报中央大标题"Guava工具类库使用",Java编程主题背景,深蓝色科技渐变,代码线条和数据流装饰,简洁现代的设计风格,适合开发者社区,高清画质。

2)人像

复制代码
哈苏胶片质感的画面中,一位长发美女置身于柔和的室内光影里,窗外的枝叶在微风中摇曳,将斑驳的树影投射到她的脸庞和肩头;薄纱轻轻垂落在背景,营造出朦胧唯美的氛围,轮廓光勾勒出她慵懒自然的姿态,凌乱的长发在风中轻轻飘起,发丝在阳光的照射下泛着微光;近景特写捕捉她深情凝望镜头的瞬间,清透细腻的肌肤在高曝光与高明暗的对比中展现丰富的质感,背景略微模糊,泛光与晕染交织出轻柔的梦幻效果,画面带有高噪点的胶片色彩与微妙的反射,整体细节生动,仿佛凝固在午后微风与光影交错的诗意瞬间。

glm-image效果比较好了:

3.4、官方java sdk调用GLM模型生图

java的sdk 接口文档可见https://docs.bigmodel.cn/cn/api/introduction#java-sdk

主仓库地址https://github.com/zai-org/z-ai-sdk-java

备选/历史仓库https://github.com/MetaGLM/zhipuai-sdk-java-v4

配置步骤:

1)配置pom

xml 复制代码
<dependency>
    <groupId>ai.z.openapi</groupId>
    <artifactId>zai-sdk</artifactId>
    <version>0.3.3</version>
</dependency>

2)编写单测

提示词选择:https://docs.bigmodel.cn/cn/guide/models/image-generation/glm-image

复制代码
竖版手工剪贴簿风格的图像。顶部是一条亮红色粗糙撕裂边缘的纸质横幅,用半透明和纸胶带斜着固定,左上角夹着金色回形针,压着一小块写有「首发」的碎纸。横幅上用粗黑体手工剪报风写着主标题「GLM-Image 开源:国产芯片炼出图像生成 SOTA」,标题周围用黑色马克笔画着放射线和手绘画笔调色盘图标。 背景是拼贴的AI生成图片碎片、芯片电路图纹理、水彩晕染和浅蓝色卡纸。左侧有一个带磨损金属边的数码相框,用透明胶带斜贴,相框内大字写着「自回归 + 扩散解码器」,副标题「9B 自回归理解指令 + 7B DiT 精绘细节」,背景是文字prompt气泡到精美图像的箭头连接图,边缘有手绘箭头标注「读懂指令」「写对文字」。 右侧散落三张不同颜色的撕裂纸条便利贴,被和纸胶带交叉固定。配有芯片实物照片剪影加华为logo小贴纸、中文艺术字海报截图、多分辨率图像网格等插图。三个撕裂纸条标签带粗黑描边:「昇腾 A2 + 昇思 MindSpore:全程国产训练」「CVTG-2K & LongText-Bench:文字渲染开源第一」「384×384 到 2048×2048:任意比例原生支持」。旁边还有一条窄蓝色撕裂纸条写着「认知型生成:知识 + 推理新范式」,上面有马克笔波浪线和星星。 底部是一整条深蓝色撕裂纸带,印着电路纹理,用和纸胶带固定。通栏大标题「从"画个图"到"懂你想要什么"的认知型生成引擎」

单测为:

java 复制代码
public class ZhipuSdkImageTest {

    public static void main(String[] args) {
        // 初始化客户端
        ZhipuAiClient client = ZhipuAiClient.builder()
                .apiKey(System.getenv("ZHIPU_API_KEY"))
                .build();

        // Create image generation request
        CreateImageRequest request = CreateImageRequest.builder()
                .model("glm-image")
                .prompt("竖版手工剪贴簿风格的图像。顶部是一条亮红色粗糙撕裂边缘的纸质横幅,用半透明和纸胶带斜着固定,左上角夹着金色回形针,压着一小块写有「首发」的碎纸。横幅上用粗黑体手工剪报风写着主标题「GLM-Image 开源:国产芯片炼出图像生成 SOTA」,标题周围用黑色马克笔画着放射线和手绘画笔调色盘图标。 背景是拼贴的AI生成图片碎片、芯片电路图纹理、水彩晕染和浅蓝色卡纸。左侧有一个带磨损金属边的数码相框,用透明胶带斜贴,相框内大字写着「自回归 + 扩散解码器」,副标题「9B 自回归理解指令 + 7B DiT 精绘细节」,背景是文字prompt气泡到精美图像的箭头连接图,边缘有手绘箭头标注「读懂指令」「写对文字」。 右侧散落三张不同颜色的撕裂纸条便利贴,被和纸胶带交叉固定。配有芯片实物照片剪影加华为logo小贴纸、中文艺术字海报截图、多分辨率图像网格等插图。三个撕裂纸条标签带粗黑描边:「昇腾 A2 + 昇思 MindSpore:全程国产训练」「CVTG-2K & LongText-Bench:文字渲染开源第一」「384×384 到 2048×2048:任意比例原生支持」。旁边还有一条窄蓝色撕裂纸条写着「认知型生成:知识 + 推理新范式」,上面有马克笔波浪线和星星。 底部是一整条深蓝色撕裂纸带,印着电路纹理,用和纸胶带固定。通栏大标题「从"画个图"到"懂你想要什么"的认知型生成引擎」")
                .size("1024x1024")
                .build();

        // Execute request
        ImageResponse response = client.images().createImage(request);

        if (response.isSuccess()) {
            response.getData().getData().forEach(image -> {
                System.out.println("Image URL: " + image.getUrl());
            });
        }
    }

}

效果如下:

其他提示词:

java 复制代码
// 分辨率:512x1024
冬季 OOTD 穿搭封面,复古拼贴风:主体是一位女生的主穿搭(浅蓝宽松毛衣 + 黄格衬衫内搭 + 酒红半裙 + 粉白花纹围巾 + 粉调手提包),周围拼贴 2-3 张同系列冬季搭配小图(如蓝羽绒服 + 黑阔腿裤、棕外套 + 藏青裤);背景融合浅灰方格墙面 + 户外街景局部;添加大尺寸浅蓝艺术字 "OOTD",手写风标注文字(如 "autumn/win""work/date"),点缀星星、手绘箭头等小装饰,以及咖啡杯、播放键小图标;整体色调柔和温暖,元素错落排版,营造活泼的冬日穿搭参考感

3.5、langchain4j对接智谱模型(不支持)

社区项目有对接智谱,但是对应的pom是原生使用http对接的,没有用官方的sdk方式对接,而且可能对接的时间比较早,现在报错问题也比较多,推荐各位要使用官方java sdk之上自己去封装;

.

对接步骤如下:

1)引入langchain4j的pom

xml 复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-zhipu-ai</artifactId>
    <version>0.36.0</version>
</dependency>

2)编写单测

java 复制代码
public class ZhipuLangchainImageTest {

    private static final Logger log = LoggerFactory.getLogger(ZhipuAiImageModel.class);
    private static final String apiKey = System.getenv("ZHIPU_API_KEY");

    private final ZhipuAiImageModel model = ZhipuAiImageModel.builder()
            .model("glm-image")
            .apiKey(apiKey)
            .logRequests(true)
            .logResponses(true)
            .callTimeout(Duration.ofMinutes(5))
            .connectTimeout(Duration.ofMinutes(5))
            .writeTimeout(Duration.ofMinutes(5))
            .readTimeout(Duration.ofMinutes(5))
            .build();

    @Test
    void simple_image_generation_works() {
        Response<Image> response = model.generate("竖版手工剪贴簿风格的图像。顶部是一条亮红色粗糙撕裂边缘的纸质横幅,用半透明和纸胶带斜着固定,左上角夹着金色回形针,压着一小块写有「首发」的碎纸。横幅上用粗黑体手工剪报风写着主标题「GLM-Image 开源:国产芯片炼出图像生成 SOTA」,标题周围用黑色马克笔画着放射线和手绘画笔调色盘图标。 背景是拼贴的AI生成图片碎片、芯片电路图纹理、水彩晕染和浅蓝色卡纸。左侧有一个带磨损金属边的数码相框,用透明胶带斜贴,相框内大字写着「自回归 + 扩散解码器」,副标题「9B 自回归理解指令 + 7B DiT 精绘细节」,背景是文字prompt气泡到精美图像的箭头连接图,边缘有手绘箭头标注「读懂指令」「写对文字」。 右侧散落三张不同颜色的撕裂纸条便利贴,被和纸胶带交叉固定。配有芯片实物照片剪影加华为logo小贴纸、中文艺术字海报截图、多分辨率图像网格等插图。三个撕裂纸条标签带粗黑描边:「昇腾 A2 + 昇思 MindSpore:全程国产训练」「CVTG-2K & LongText-Bench:文字渲染开源第一」「384×384 到 2048×2048:任意比例原生支持」。旁边还有一条窄蓝色撕裂纸条写着「认知型生成:知识 + 推理新范式」,上面有马克笔波浪线和星星。 底部是一整条深蓝色撕裂纸带,印着电路纹理,用和纸胶带固定。通栏大标题「从"画个图"到"懂你想要什么"的认知型生成引擎」");

        URI remoteImage = response.content().url();
        log.info("Your remote image is here: {}", remoteImage);
        assertThat(remoteImage).isNotNull();
    }

}

社区维护的这个版本不太行,建议还是自己sdk封装下。


3.6、langchain4j使用openai协议对接智谱模型

官方智谱对接的openai文档https://docs.bigmodel.cn/cn/guide/develop/openai/introduction

对接的pom如下:

xml 复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>1.0.0-beta3</version>
</dependency>

单测如下:

java 复制代码
@Test
public void test01_zhipu() {
    OpenAiImageModel openAiImageModel = OpenAiImageModel.builder()
						.apiKey(System.getenv("ZHIPU_API_KEY"))
            .baseUrl("https://open.bigmodel.cn/api/paas/v4/")
            .modelName("glm-image")
            .size("512x1024").build();
    Response<Image> generate = openAiImageModel.generate("冬季 OOTD 穿搭封面,复古拼贴风:主体是一位女生的主穿搭(浅蓝宽松毛衣 + 黄格衬衫内搭 + 酒红半裙 + 粉白花纹围巾 + 粉调手提包),周围拼贴 2-3 张同系列冬季搭配小图(如蓝羽绒服 + 黑阔腿裤、棕外套 + 藏青裤);背景融合浅灰方格墙面 + 户外街景局部;添加大尺寸浅蓝艺术字 "OOTD",手写风标注文字(如 "autumn/win""work/date"),点缀星星、手绘箭头等小装饰,以及咖啡杯、播放键小图标;整体色调柔和温暖,元素错落排版,营造活泼的冬日穿搭参考感");
    URI url = generate.content().url();
    System.out.println(url);
}

效果:


其他选项说明

生成图片去除水印,需要签署免责声明(关闭后无水印)

接口文档:https://docs.bigmodel.cn/api-reference/模型-api/图像生成

个人认证通过后即可:

确认后即可:

图像尺寸注意点

文档:https://docs.bigmodel.cn/api-reference/模型-api/图像生成异步

图片尺寸,推荐枚举值:1280x1280 (默认), 1568×1056, 1056×1568, 1472×1088, 1088×1472, 1728×960, 960×1728。 自定义参数:长宽推荐设置在1024px-2048px范围内,并保证最大像素数不超过2^22px;长宽均需为32的整数倍。

其他:待更新

目前仅仅对接国内的模型,对于国外的还未进行测试验证


整理者:长路 时间:2026.2.23

资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅

相关推荐
长路 ㅤ   3 天前
Milvus系列之02、Spring+Milvus实现RAG检索增强
向量数据库·apache tika·langchain4j·知识库构建·hanlp分词
长路 ㅤ   3 天前
适配AI平台的HTTP插件系统设计
langchain4j·ai插件系统·http工具调用·语雀知识库·coze插件设计
马克Markorg4 天前
SpringBoot + LangChain4j 打造企业级 RAG 智能知识库,多工具集成方案
spring boot·向量数据库·rag·qdrant·langchain4j·增强知识检索库
a1117764 天前
表情包制作(ai banana使用教程)
开源·ai生图
梦想总是可以实现的5 天前
SpringCloud2024 + JDK17实战:手把手教你从零搭建微服务全家桶(含Eureka+Gateway+Redis)
springcloud·微服务架构·java开发·分布式系统
长路 ㅤ   6 天前
长路的AI领域技术博客汇总文档
向量数据库·大模型部署·langchain4j·智能体agent·ai后端技术
小灵不想卷7 天前
LangChain4j Low 和 Hight-level API
java·langchain4j
小灵不想卷8 天前
LangChain4 初体验
java·langchain·langchain4j
小灵不想卷8 天前
LangChain4j 多模态
java·langchain4j