文生图(Text-to-Image)是当前AI领域的热门应用之一,它能够根据文本描述生成相应的图像。本文将详细介绍如何使用LangChain4j框架集成文生图功能,并提供完整的实现方案。

本文使用的是智普ai模块实现的文生图功能

添加maven依赖

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.springai</groupId>
        <artifactId>Ai</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>langchain4j-05-generateimage</artifactId>
    <packaging>jar</packaging>

    <name>langchain4j-05-generateimage</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>ai.z.openapi</groupId>
            <artifactId>zai-sdk</artifactId>
            <version>0.0.6</version>
        </dependency>

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-community-zhipu-ai</artifactId>
            <version>1.0.0-beta3</version>
        </dependency>

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j</artifactId>
        </dependency>

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-open-ai</artifactId>
        </dependency>

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-dashscope</artifactId>
            <version>0.35.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>33.2.1-jre</version>
        </dependency>
    </dependencies>
</project>
编写配置类创建模块元信息

package com.springai.config;


import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import dev.ai4j.openai4j.OpenAiClient;
import dev.langchain4j.community.model.zhipu.ZhipuAiImageModel;
import dev.langchain4j.model.image.ImageModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.Duration;

@Configuration
public class LLMConfig {

    @Bean
    public ImageModel imageModel() {
        ImageModel imageModel = ZhipuAiImageModel.builder()
                //apiKey智普ai的apikey
                .apiKey("34d4358f44cd438b857e71a79f2361d3.FMfYT95OalGDeKr4")
                //是否记录请求
                .logRequests(true)
                //是否记录响应
                .logResponses(true)
                //响应超时时间
                .callTimeout(Duration.ofSeconds(60))
                //连接超时
                .connectTimeout(Duration.ofSeconds(60))
                //读取超时
                .readTimeout(Duration.ofSeconds(60))
                //写入超时
                .writeTimeout(Duration.ofSeconds(60))
                .build();
        return imageModel;
    }

}

编写接口实现功能

package com.springai.controller;

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisListResult;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.JsonUtils;
import dev.langchain4j.data.image.Image;
import dev.langchain4j.model.image.ImageModel;
import dev.langchain4j.model.output.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
public class ImageController {

   @Autowired
    ImageModel imageModel;

    @GetMapping("/image")
    public String generateImage(@RequestParam String message) throws NoApiKeyException {
        Response<Image> generate = imageModel.generate(message);
        return generate.content().url().toString();
    }
}

利用apifox测接口获取图片url地址

浏览器打开链接即可下载查看图片

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐