Java生成图片_基于Spring AI

Spring AI 优势

过去,使用Java编写AI应用时面临的主要困境是没有统一且标准的封装库,开发者需自行对接各个AI服务提供商的接口,导致代码复杂度高、迁移成本大。如今,Spring AI Alibaba的出现极大地缓解了这一问题,它提供了兼容市场上主流生成任务(如文本生成、图像生成等)的标准化Java接口,极大简化了开发流程。此外,由于Spring背后有专门团队进行维护与更新,因此其接口不仅功能丰富还具备更好的扩展性,为未来技术发展预留了充足的空间。相比自行实现接口,采用Spring AI方案更加高效可靠。

Spring AI alibaba介绍:

Spring AI Alibaba 是一个基于 Spring 生态系统的 Java 框架,专为简化与阿里云百炼大模型的集成而设计。它允许开发者利用标准的 POJOs(普通 Java 对象)快速构建支持多种AI功能的应用程序,如文本生成、图像生成等。其核心优势在于提供了统一的接口来访问不同供应商的AI服务,包括但不限于阿里云通义系列模型,极大减少了迁移成本和开发工作量。通过简单的配置调整,即可轻松切换底层使用的AI提供者,使得在项目中加入如绘画生成等复杂功能变得简单高效。

基于Spring AI Alibaba生成一个动漫美女图片的详细例子

我们知道使用Spring AI Alibaba可以方便地调用通义万象图像生成模型来为项目增加AI能力。以下将依照这一背景信息,分步骤详细介绍如何基于Spring Boot集成Spring AI Alibaba完成一个具体的图像生成示例------生成一张动漫美女图片。

前置条件

  1. 确保您的开发环境已安装JDK 17或更高版本。
  1. 使用Spring Boot 3.3.x版本构建项目。
  1. 已经在阿里云上成功申请并获取到了API KEY。

步骤一:准备环境

  • 配置阿里云API Key :
    在终端中执行以下命令设置环境变量:

    export AI_DASHSCOPE_API_KEY=你的API_KEY

  • 开通通义万象服务 :
    登录阿里云百炼控制台,找到图像生成功能中的通义万象模型,并记录下该模型的具体英文名称(如:wanx-v1)。

  • 阿里云 通义 现在有免费额度,薅起来

步骤二:修改项目依赖与仓库配置

pom.xml文件添加必要的仓库和依赖:

<repositories>
  <repository>
    <id>sonatype-snapshots</id>

    <url>https://oss.sonatype.org/content/repositories/snapshots</url>

    <snapshots><enabled>true</enabled></snapshots>

  </repository>

  <repository>
    <id>spring-milestones</id>

    <name>Spring Milestones</name>

    <url>https://repo.spring.io/milestone</url>

    <snapshots><enabled>false</enabled></snapshots>

  </repository>

  <repository>
    <id>spring-snapshots</id>

    <name>Spring Snapshots</name>

    <url>https://repo.spring.io/snapshot</url>

    <releases><enabled>false</enabled></releases>

  </repository>

</repositories>

<dependencies>
  <dependency>
    <groupId>com.alibaba.cloud.ai</groupId>

    <artifactId>spring-ai-alibaba-starter</artifactId>

    <version>1.0.0-M2.1</version>

  </dependency>

  <!-- Spring Boot parent -->
  <parent>
    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>3.3.4</version>

  </parent>

  <!-- 其它必需的依赖项 -->
</dependencies>

步骤三:创建控制器并实现图像生成功能

在您的Spring Boot应用中创建一个新的REST控制器类ImageModelController,用于处理图像请求并将结果返回给客户端。

@RestController
@RequestMapping("/ai")
public class ImageModelController {

  private final ImageModel imageModel;

  @Autowired
  public ImageModelController(ImageModel imageModel) {
    this.imageModel = imageModel;
  }

  @GetMapping("/image")
  public ResponseEntity<String> generateImage(@RequestParam String input) {
    try {
      ImageOptions options = ImageOptionsBuilder.builder()
          .withWidth(1024)
          .withHeight(1024)
          .withModel("wanx-v1") // 这里替换为你实际使用的模型名
          .withN(1)
          .build();
      
      ImagePrompt prompt = new ImagePrompt(input, options);
      ImageResponse response = imageModel.call(prompt);
      
      List<ImageGeneration> results = response.getResults();
      if (!results.isEmpty()) {
        String imageUrl = results.get(0).getOutput().getUrl();
        return ResponseEntity.ok(imageUrl);
      } else {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to generate image.");
      }
    } catch (Exception e) {
      return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error: " + e.getMessage());
    }
  }
}

步骤四:配置应用程序属性

确保在application.propertiesapplication.yml文件中正确设置了API密钥:

spring.ai.dashscope.api-key=${AI_DASHSCOPE_API_KEY}

或者,在YAML格式中:

spring:
  ai:
    dashscope:
      api-key: ${AI_DASHSCOPE_API_KEY}

使用说明

现在您可以启动Spring Boot应用,并通过访问如下URL来测试图像生成功能:

http://localhost:8080/ai/image?input=动漫美女

这将会触发图像生成过程,并最终返回生成图像的URL地址。

注意,生成的链接可能具有时效性限制,请考虑适时保存至本地存储以供长期使用。

以上步骤涵盖了从环境搭建到功能实现的完整流程 。 你可以试试

相关推荐
B站计算机毕业设计超人6 分钟前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条11 分钟前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客15 分钟前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
feifeikon18 分钟前
机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
人工智能·机器学习·线性回归
古希腊掌管学习的神22 分钟前
[机器学习]sklearn入门指南(2)
人工智能·机器学习·sklearn
IT猿手1 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法
强哥之神1 小时前
Nexa AI发布OmniAudio-2.6B:一款快速的音频语言模型,专为边缘部署设计
人工智能·深度学习·机器学习·语言模型·自然语言处理·音视频·openai
18号房客1 小时前
一个简单的深度学习模型例程,使用Keras(基于TensorFlow)构建一个卷积神经网络(CNN)来分类MNIST手写数字数据集。
人工智能·深度学习·机器学习·生成对抗网络·语言模型·自然语言处理·tensorflow
数据分析能量站2 小时前
神经网络-LeNet
人工智能·深度学习·神经网络·机器学习
dundunmm3 小时前
机器学习之scikit-learn(简称 sklearn)
python·算法·机器学习·scikit-learn·sklearn·分类算法