You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Langchain4j结合本地Stable Diffusion模型生成图片?

Langchain4j 结合本地 Stable Diffusion XL 生成图片方案

功能支持说明

Langchain4j 本身没有原生集成文生图模型的能力,但可以通过结合 Java 生态的深度学习库(如 DJL),将本地的 Stable Diffusion XL 模型封装为 Langchain4j 可调用的工具,从而实现图片生成功能。

实现步骤

1. 添加必要依赖

在项目的 pom.xml(Maven)或 build.gradle(Gradle)中引入以下依赖:

  • Langchain4j 核心依赖
  • DJL Hugging Face Transformers 库(用于加载本地模型)
  • PyTorch 后端依赖(适配 Stable Diffusion XL)

Maven 依赖示例:

<dependencies>
    <!-- Langchain4j 核心 -->
    <dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j-core</artifactId>
        <version>0.27.0</version>
    </dependency>
    <!-- DJL Hugging Face Transformers -->
    <dependency>
        <groupId>ai.djl.huggingface</groupId>
        <artifactId>transformers</artifactId>
        <version>0.25.0</version>
    </dependency>
    <!-- PyTorch 后端 -->
    <dependency>
        <groupId>ai.djl.pytorch</groupId>
        <artifactId>pytorch-engine</artifactId>
        <version>0.25.0</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. 加载本地 Stable Diffusion XL 模型

使用 DJL 加载你通过 git lfs clone 下载的本地模型,示例代码如下:

import ai.djl.huggingface.translator.TextToImageTranslator;
import ai.djl.huggingface.translator.TextToImageTranslatorFactory;
import ai.djl.inference.Predictor;
import ai.djl.modality.cv.Image;
import ai.djl.repository.zoo.Criteria;
import ai.djl.repository.zoo.ModelZoo;
import ai.djl.repository.zoo.ZooModel;

import java.nio.file.Paths;

public class LocalStableDiffusionService {
    private Predictor<String, Image> predictor;

    public LocalStableDiffusionService() throws Exception {
        // 指定本地模型路径(即你克隆的 stable-diffusion-xl-base-1.0 文件夹路径)
        String modelPath = "/path/to/your/stable-diffusion-xl-base-1.0";
        
        // 创建文生图翻译器
        TextToImageTranslator translator = TextToImageTranslatorFactory.getInstance().newInstance();
        
        // 构建模型加载条件
        Criteria<String, Image> criteria = Criteria.builder()
                .setTask("text-to-image")
                .setModelPath(Paths.get(modelPath))
                .setTranslator(translator)
                .build();
        
        // 加载本地模型
        ZooModel<String, Image> model = ModelZoo.loadModel(criteria);
        this.predictor = model.newPredictor();
    }

    public Image generateImage(String prompt) throws Exception {
        return predictor.predict(prompt);
    }
}

3. 封装为 Langchain4j 工具

将图片生成服务封装为 Langchain4j 的 Tool,以便在链或智能体中调用:

import dev.langchain4j.agent.tool.Tool;
import ai.djl.modality.cv.Image;
import ai.djl.modality.cv.output.BufferedImageFactory;

import javax.imageio.ImageIO;
import java.io.File;

public class ImageGenerationTool {
    private final LocalStableDiffusionService sdService;

    public ImageGenerationTool() throws Exception {
        this.sdService = new LocalStableDiffusionService();
    }

    @Tool("根据输入的文本提示生成图片,并保存到指定路径")
    public String generateAndSaveImage(String prompt, String outputPath) {
        try {
            Image image = sdService.generateImage(prompt);
            BufferedImageFactory factory = new BufferedImageFactory();
            ImageIO.write(factory.fromImage(image), "png", new File(outputPath));
            return "图片已成功生成并保存到:" + outputPath;
        } catch (Exception e) {
            return "图片生成失败:" + e.getMessage();
        }
    }
}

4. 在 Langchain4j 中调用工具

通过 Langchain4j 的 Agent 或 Chain 调用上述工具,示例如下:

import dev.langchain4j.agent.Agent;
import dev.langchain4j.agent.AgentExecutor;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;

public class Main {
    public static void main(String[] args) throws Exception {
        // 这里可以替换为你使用的聊天模型(如本地部署的LLM)
        ChatLanguageModel chatModel = OpenAiChatModel.withApiKey("your-api-key");
        
        // 创建图片生成工具实例
        ImageGenerationTool imageTool = new ImageGenerationTool();
        
        // 创建智能体并绑定工具
        Agent agent = AgentExecutor.builder()
                .chatLanguageModel(chatModel)
                .tools(imageTool)
                .build();
        
        // 调用智能体生成图片
        String result = agent.execute("生成一张未来城市的科幻风格图片,保存到 /tmp/future_city.png");
        System.out.println(result);
    }
}

注意事项

  • 确保本地模型路径正确,且模型文件完整(git lfs clone 需完成所有大文件下载)
  • 运行环境需要足够的显存(Stable Diffusion XL 建议至少 10GB 显存)
  • 依赖版本需保持兼容,避免出现版本冲突问题

内容的提问来源于stack exchange,提问作者Pratik soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:48:31