AI时代,Java程序员不能不知道的两个框架

科技   2024-12-03 13:30   山西  

在人工智能迅猛发展的今天,作为Java程序员,我们不能停留在传统的开发模式中。AI技术正在逐步渗透到各个行业,改变着我们的工作方式和生活方式。为了在这个时代保持竞争力,Java程序员也需要拥抱AI。幸运的是,Spring提供了两款强大的框架,帮助我们快速集成AI功能,轻松将AI融入到我们的应用中。

这两个框架分别是Spring AI和Spring Cloud Alibaba AI。今天,我们就来一起了解这两个框架,看看它们如何帮助Java程序员在AI时代中脱颖而出。

1. 什么是Spring AI?

Spring AI是Spring官方社区项目,旨在简化Java AI应用程序开发,让Java开发者像使用Spring开发普通应用一样开发AI应用。

Spring AI的核心是提供抽象,作为开发Java AI应用程序的基础,提供以下功能:

  • 提供多种大模型服务对接能力,包括业界大多数主流大模型服务等;
  • 支持灵活的Prompt Template和模型输出解析Output Parsing能力;
  • 支持多模态的生成式AI能力,如对话,文生图、文生语音等;
  • 提供通用的可移植的API以访问各类模型服务和Embedding服务,支持同步和流式调用,同时也支持传递特定模型的定制参数;
  • 支持RAG能力的基础组件,包括DocumentLoader、TextSpillter、EmobeddingClient、VectorStore 等;
  • 支持AI Spring Boot Starter 实现配置自动装配;

2. 什么是 Spring Cloud Alibaba AI?

如果说Spring AI让你能够集成各种AI功能,那么Spring Cloud Alibaba AI则为你提供了一个更强大的平台。作为Spring Cloud Alibaba的一部分,这个框架将阿里云的强大AI服务与Spring Boot微服务架构结合起来,提供了丰富的 AI 能力。

Spring Cloud Alibaba AI 支持:

  • 文本处理:自动摘要、情感分析、语法解析等
  • 图像识别:图像分类、物体检测、人脸识别等
  • 文生图:根据文本生成图片
  • 语音识别与合成:将语音转换为文字,或者根据文字生成语音

通过Spring Cloud Alibaba AI,Java 程序员可以轻松地将阿里云的AI服务集成到自己的微服务架构中,借助云计算的强大能力,实现高效的AI应用。

3. 动手体验 Spring Cloud Alibaba AI

接下来,让我们动手使用 Spring Cloud Alibaba AI构建一个简单的AI应用。

3.1 环境准备

  • JDK17版本或以上
  • 在官方申请 API-KEY,申请地址API-KEY的获取与配置
    https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key?spm=a2c4g.11186623.0.0.1dc57980QSfXA0

3.2 创建 Spring Boot 项目

  • 使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择需要的依赖:

spring-cloud-starter-alibaba-ai

pom.xml:

<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>

 <groupId>org.example</groupId>
 <artifactId>aliAI</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>jar</packaging>

 <name>aliAI</name>
 <url>http://maven.apache.org</url>

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

 <dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-alibaba-dependencies</artifactId>
       <version>2023.0.1.0</version>
       <type>pom</type>
       <scope>import</scope>
     </dependency>
   </dependencies>
 </dependencyManagement>

 <dependencies>
   <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-ai</artifactId>
   </dependency>
 </dependencies>

 <repositories>
   <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>
</project>

  • 配置阿里云 AI 服务 在 application.yml 中配置阿里云的 API 密钥:
server:
 port: 8888
spring:
 cloud:
   ai:
     tongyi:
       api-key: 官网申请的密钥

4. 对接文本模型

  • 新建文本接口类TongYiSimpleService
public interface TongYiSimpleService {

   public String completion(String message);
}
  • 实现文本接口方法TongYiSimpleServiceImpl
@Service
public class TongYiSimpleServiceImpl implements TongYiSimpleService{

   private final ChatClient chatClient;

   private final StreamingChatClient streamingChatClient;

   @Autowired
   public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
       this.chatClient = chatClient;
       this.streamingChatClient = streamingChatClient;
   }

   public String completion(String message) {
       Prompt prompt = new Prompt(new UserMessage(message));
       return chatClient.call(prompt).getResult().getOutput().getContent();
   }
}
  • 新建一个控制器类
    /**
    * 聊天对话应用  单轮对话
    *
    * @param message
    * @return
    */
   @GetMapping("/example")
   public String completion(@RequestParam(value = "message", defaultValue = "你好,给我讲个笑话") String message, HttpServletRequest request, HttpServletResponse response) {
       String completion = tongYiSimpleService.completion(message);
       return completion;
   }
  • 浏览器调用地址,测试结果

可以看到我们的聊天应用可以使用啦!

5. 文生图模型

  • 新建文本接口类TongyiImageService
public interface TongyiImageService {
   public ImageResponse genImg(String imgPrompt);
}
  • 实现文本接口方法TongyiImageServiceImp
@Service
public class TongyiImageServiceImp implements TongyiImageService{

   private static final Logger logger = LoggerFactory.getLogger(TongyiImageServiceImp.class);
   private final ImageClient imageClient;
   @Autowired
   public TongyiImageServiceImp(ImageClient client) {
       this.imageClient = client;
   }
   @Override
   public ImageResponse genImg(String imgPrompt) {
       var prompt = new ImagePrompt(imgPrompt);
       return imageClient.call(prompt);
   }
}
  • 新建一个控制器类
    /**
    * 文生图应用
    *
    * @param imgPrompt
    * @return
    */
   @GetMapping("/img")
   public String genImg(@RequestParam(value = "prompt", defaultValue = "生成一个加班的程序员") String imgPrompt) {
       ImageResponse imageResponse = tongyiImageService.genImg(imgPrompt);
       String url = imageResponse.getResult().getOutput().getUrl();
       return url;
   }
  • 浏览器调用地址,测试结果

查看图片

这个效果还是很nice的!

6. 总结

通过本文,我们演示了如何利用这两个框架构建AI应用。无论是初学者还是有经验的开发者,都可以快速上手,借助阿里云的强大AI服务和Spring强大的开发工具,将AI融入到自己的应用中。

如果你对AI感兴趣,赶快试试这些框架,带着你的创意和热情,创造属于自己的智能应用吧!





往日文章:

--END--

AI取经路
踏上取经路,比抵达灵山更重要! AI技术、 AI知识 、 AI应用 、 人工智能 、 大语言模型
 最新文章