当前位置: 首页 > article >正文

如何在5步内使用 Spring AI 和 OpenAI 的 DALL-E 3 生成图像

将 Spring AI 与 OpenAI 的 DALL-E 3 集成,以生成图像。轻松设置 Spring Boot、配置 API 集成并自定义设置。

大家好!这是关于 Spring AI 系列介绍文章的第一篇。今天,我们将了解如何通过文本提示轻松生成图片。为此,我们将利用 OpenAI API 和 DALL-E 3 模型。

在本文中,我将跳过一些 Spring 基础概念的讲解,比如 Bean 管理、启动器等,因为本文的主要目的是探索 Spring AI 的功能。同样,我也不会详细介绍如何生成 OpenAI API 密钥。

前提条件

如果你还没有有效的 OpenAI API 密钥,请按以下步骤操作:

  1. 在 OpenAI 上创建一个账户。
  2. 在 API 密钥页面生成令牌。

步骤 1:设置项目

要快速生成包含所有必要依赖项的项目模板,可以使用https://start.spring.io/ 。

在我的示例中,我将使用 Java 17 和 Spring Boot 3.4.1。我们还需要包含以下依赖项:

  • Spring WEB:该依赖项使我们能够创建一个 Web 服务器,并将 REST 端点作为应用程序的入口点公开。
  • OpenAI:通过编写几行代码和配置,这个依赖项能让我们顺利地与 OpenAI 集成。

点击生成后,在你使用的 IDE 中打开下载的文件,并确认pom.xml中存在所有必要的依赖项。

<dependency>
    <groupId>org.spring framework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

步骤 2:设置配置文件

接下来,我们需要配置属性文件。默认情况下,Spring 使用application.yaml或application.properties文件。在这个示例中,我将使用 yaml 格式。如果你更习惯使用.properties 格式,可以将代码重新格式化为.properties文件。

我们需要在application.yaml文件中添加以下所有配置:

spring:
  ai:
    openai:
      api-key: [你的OpenAI API密钥]
      image:
        options:
          model: dall-e-3
          size: 1024x1024
          style: vivid
          quality: standard
          response-format: url
  • 模型:在撰写本文时,Spring AI 中唯一可用的模型是dall-e-3,所以我们将使用它。
  • 尺寸:用于配置生成图像的大小。对于 dall-e-3 模型,它必须是1024x1024、1792x1024或1024x1792中的一种。
  • 风格:vivid风格会生成更超现实的图像。如果你希望图片看起来更真实,可以将值设置为natural。
  • 质量:有两个选项,standard(标准)或HD(高清)。
  • 响应格式:有两个选项,url和b64_json。为了演示方便,我将使用 URL。生成后,图像将在一小时内通过 URL 可用。

步骤 3:创建 ImageGenerationService

让我们创建一个负责生成图像的服务。

@Service
public class ImageGenerationService {

    @Autowired
    ImageModel imageModel;

    public String generateImage(String prompt) {
        ImagePrompt imagePrompt = new ImagePrompt(prompt);
        ImageResponse imageResponse = imageModel.call(imagePrompt);
        return imageResponse.getResult().getOutput().getUrl();
    }
}

我们创建了一个新类,并将其标注为Service。我们还自动注入了ImageModel Bean。

ImageModel是用于生成图片的主要接口。由于我们在步骤 2 中提供了所有必要的配置,Spring Boot Starter 会自动为我们生成这个接口的一个实现类OpenAiImageModel。

配置好类后,我们可以开始实现一个方法,该方法调用 OpenAI API,使用我们的提示生成图片。这就是 Spring AI 真正神奇的地方。让我们来看看。

使用 Spring AI 生成图像实际上只需要三行代码。是不是很神奇?

第一步,我们通过提供一个字符串提示创建了一个新的ImagePrompt。

接下来,我们使用imageModel.call(imagePrompt)进行 API 调用,并将响应存储在ImageResponse变量中。

最后一步,我们返回生成图像的 URL。请记住,图像仅在一小时内可用;之后,链接将不再可用。所以别忘了保存你的杰作!

在这里插入图片描述

步骤 4:创建 ImageGenerationController 来运行代码

我们需要创建最后一个文件,以便用户执行我们的集成。它可能如下所示:

@RestController()
@RequestMapping("/image")
public class ImageGenerationController {

    @Autowired
    ImageGenerationService imageService;

    @GetMapping("/generate")
    public ResponseEntity<String> generateImage(@RequestParam String prompt) {
        return ResponseEntity.ok(imageService.generateImage(prompt));
    }
}

如你所见,我们创建了一个简单的控制器,其中只有一个 GET 端点。这个端点将在
localhost:8080/image/generate可用。

步骤 5:运行应用程序

要启动我们的应用程序,需要运行以下命令:

mvn spring-boot:run

应用程序运行后,我们可以通过执行以下 curl 命令(使用你想要的任何提示)来查看结果。我使用的是:“Cute cat playing chess”。如果你使用命令行调用端点,别忘了用%20代替空格:

curl -X GET "http://localhost:8080/image/generate?prompt=Cute%20cat%20playing%20chess"

执行后,等待几秒钟,因为 OpenAI 生成图像需要一些时间。

恭喜!你刚刚创建并测试了你的第一个 Spring AI 应用程序,它可以使用自定义提示生成图像!

步骤 6:在生成图像时提供更多灵活性(可选)

在第二步中,我们为模型配置了默认行为,并在application.yaml文件中提供了所有必要的配置。但是,我们能否为用户提供更多灵活性,让他们自行提供配置呢?答案是肯定的!

要做到这一点,我们需要使用ImageOptions接口。

以下是一个示例:

public String generateImage(GenerateImageRequest imageRequest) {
    ImageOptions options = OpenAiImageOptions.builder()
          .withQuality("standard")
          .withStyle("vivid")
          .withHeight(1024)
          .withWidth(1024)
          .withResponseFormat("url")
          .build();

    ImagePrompt imagePrompt = new ImagePrompt(imageRequest.getPrompt(), options);
    ImageResponse imageResponse = imageModel.call(imagePrompt);
    return imageResponse.getResult().getOutput().getUrl();
}

为了实现这一点,我们需要使用在application.yaml中设置的所有配置以编程方式构建选项,并在创建ImagePrompt对象时提供这些选项。你可以在 Spring AI 文档中找到更多配置选项。

结论

Spring AI 是一个很棒的工具,它帮助开发人员顺利地与不同的 AI 模型集成。在撰写本文时,Spring AI 支持五种图像模型,包括但不限于 Azure AI 和 Stability。

希望本文对你有所帮助,并能激发你更深入地探索 Spring AI。


http://www.kler.cn/a/531664.html

相关文章:

  • ChatGPT怎么回事?
  • 求水仙花数,提取算好,打表法。或者暴力解出来。
  • FPGA学习篇——开篇之作
  • 解决PyG安装中torch-sparse安装失败问题:详细指南
  • 北京门头沟区房屋轮廓shp的arcgis数据建筑物轮廓无偏移坐标测评
  • SQL NOW() 函数详解
  • 顺序打印数字的进一步理解
  • M. Triangle Construction
  • 注解与反射基础
  • 巧妙利用数据结构优化部门查询
  • Nginx 命令行参数
  • 深入探讨DICOM医学影像中的WADO服务及其具体实现
  • 内核定时器1-普通定时器
  • 浅谈线段树
  • 【Linux】25.进程信号(2)
  • 语言月赛 202412【正在联系教练退赛】题解(AC)
  • 电动汽车常见概念
  • e2studio开发RA2E1(5)----GPIO输入检测
  • Deepseek 数据蒸馏、芯片禁售引发中美AI 之战
  • 嵌入式学习---蜂鸣器篇
  • LeetCode:53.最大子序和
  • 数据 类型
  • 【LeetCode 刷题】回溯算法(3)-子集问题
  • 基于脉冲响应不变法的IIR滤波器设计与MATLAB实现
  • 10.8 LangChain Output Parsers终极指南:从JSON解析到流式处理的规范化输出实践
  • 【R语言】环境空间