JeecgBoot 低代码平台快速集成 Spring AI

简介: Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Jeecg Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动,包含 RAG 功能。

JeecgBoot 是一款基于代码生成器的低代码开发平台!前后端分离架构 SpringBoot2.x 和 3.x,SpringCloud,Ant Design Vue3,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!JeecgBoot 引领新的低代码开发模式 (OnlineCoding-> 代码生成器 -> 手工 MERGE), 帮助解决 Java 项目 70% 的重复工作,让开发更多关注业务。既能快速提高效率,节省研发成本,同时又不失灵活性!

JeecgBoot 如何集成 Spring AI

Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Jeecg Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动,包含 RAG 功能。

(Retrieval Augmented Generation)检索增强生成(RAG)是一种用于将个人未经训练数据与人工智能模型集成的技术。在 RAG 工作流程中,第一步将文档数据加载到矢量数据库(例如 Redis)中。当收到用户查询时,矢量数据库会检索一组与该查询相似的文档。然后,这些文档数据充当用户问题的上下文,并与用户的查询结合使用生成响应(通常通过 LLM 模型)。

先来看一下最终效果,效果分别是 AI 互动以及 RAG 互动。

集成 Spring AI 在 Jeecg-module-demo 模块的 pom.xml 中,添加如下配置

<dependency>
  <groupid>org.springframework.ai</groupid>
  <artifactid>spring-ai-openai-spring-boot-starter</artifactid>
  <version>1.0.0-M1</version>
</dependency>
<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>

添加配置 Spring AI 提供的 starter 自动配置完成了大部分工作,引入依赖后,只需要再进入如下配置即可

spring:
  ai:
    openai:
      api-key: open-ai-api-key
      base-url: 如非使用代理点,则无需更改

进行以上配置之后,官方默认没有提供 ChatClient 的 bean 注册,所以我们还需要最后一步,注册 ChatClient Bean。

@Bean
public ChatClient chatClient(ChatClient.Builder builder, VectorStore vectorStore) {
  return builder.build();
}

到这里,我们已经可以正常使用 ChatClient、ImageModel 等 API 与 OpenAI 进行互动访问了,如下:

文生文:

chatClient.prompt().user(message).call().content();

文生图:

imageModel.call(new ImagePrompt(description,
                        OpenAiImageOptions.builder().build()));

RAG:

// 向量库查询
List<document> documents = vectorStore.similaritySearch(query);
String info = "";
if (documents.size() &gt; 0) {
   info = documents.get(0).getContent();
}
// 构造系统prompt
String systemPrompt = "你的名字叫Jeecg AI助手,你的官网在http://jeecg.com,以友好的方式回应,乐于助人、快乐的态度";
// 构造用户prompt
String userPrompt = """
                给你提供一些数据参考: {info},请回答我的问题:{query}
                请你跟进数据参考与工具返回结果回复用户的请求。
                """;
// 构造提示词
Message systemMessage = new SystemMessage(systemPrompt);
PromptTemplate promptTemplate = new PromptTemplate(userPrompt);
Message userMessage = promptTemplate.createMessage(Map.of("info", info, "query", query));
Prompt prompt = new Prompt(List.of(userMessage, systemMessage));
client.prompt(prompt).stream().content();

与 JeecgBoot 集成

经过以上两段配置,已经可以正常与 Spring AI 支持的各个大模型进行 API 调用了,不过也仅仅是停留在代码层面,使用门槛也限制在开发员人层面。

JeecgBoot 在 3.7 版本提供了 AI 对话的页面,不过现在版本的默认实现并不是通过 Spring AI 进行集成的,但是却已经完成了前后端对话通信的框架,接下来只需要使用 Spring AI 替换掉原有的大模型交互即可。

org.jeecg.modules.demo.gpt.service.impl.ChatServiceImpl 这个类的 sendMessage 方法中,将如下代码进行注释,替换上 Spring AI 的 API 调用代码即可。如下

替换成

Flux<string> contents = client.prompt()
                        .user(message)
                        .stream().content().then(“DONE”);
final String id = topicId;
        contents.subscribe(p -&gt; {
            Map<string, string> result = new HashMap&lt;&gt;();
            result.put("content", p);
            try {
                if ("DONE".equals("p")) {
                    sseEmitter.send(SseEmitter.event().id("DONE").data(p), MediaType.TEXT_EVENT_STREAM);
                } else {
                    sseEmitter.send(SseEmitter.event()
                            .id(id)
                            .data(result)
                            .reconnectTime(3000));
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });

最终效果如开头所示,如果需要将对话替换成 RAG 对话,只需要将 chatClient 调用更换即可。

目录
相关文章
|
13天前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
134 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
|
23天前
|
存储 人工智能 自然语言处理
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
【8月更文挑战第8天】无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
|
3天前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
12 1
|
25天前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
12天前
|
安全 NoSQL Java
JeecgBoot应用Spring Authorization Server
Spring Authorizaiton Server, 简称 sas,是一个授权服务器框架,提供 OAuth2.1 与 Open Connect 1.0 认证规范及其他规范的实现,它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 Identity Provider 和 OAuth2 授权服务器产品提供了一个安全、轻量级和可定制的基础
29 2
|
20天前
|
存储 人工智能 API
阿里云百炼应用实践系列-10分钟在企业微信中集成一个 AI 助手
在阿里云平台上,您只需十分钟,无需任何编码,即可在企业微信上为您的组织集成一个具备大模型能力的AI助手。此助手可24小时响应用户咨询,解答各类问题,尤其擅长处理私域问题,从而成为您企业的专属助手,有效提升用户体验及业务竞争力。
|
22天前
|
机器学习/深度学习 人工智能 算法
Spring Boot + AI:融合创新,开启智能应用新篇章
【8月更文挑战第20天】在当今这个数据驱动的时代,人工智能(AI)与软件开发的深度融合正引领着技术革新的浪潮。而Spring Boot,作为Java领域中最受欢迎的微服务框架之一,以其快速开发、易于部署和丰富的生态支持,成为了连接传统应用与智能服务的桥梁。探讨Spring Boot与AI的结合,不仅是技术趋势的必然,更是推动行业智能化转型的重要路径。
44 3
|
26天前
|
机器学习/深度学习 人工智能 搜索推荐
AI低代码平台:创新开发新选择
Zoho Creator、Airtable、Appian、Creatio Atlas及织信等低代码平台,通过集成AI功能如预测分析、情感分析、自动化文案创作等,显著提升了开发效率与智能化水平。例如,Zoho Creator利用AI预测客户需求并分析情绪;Airtable借助OpenAI模型自动生成代码与文案;Appian通过AI技能自动处理文档与邮件;Creatio Atlas运用AI优化决策流程并提供个性化推荐;织信则集成ChatGPT与Stable Diffusion,实现智能开发与图像生成。这些平台不仅支持多种业务场景,还简化了应用程序开发流程。
53 5
|
25天前
|
Java API 数据中心
百炼平台Java 集成API上传文档到数据中心并添加索引
本文主要演示阿里云百炼产品,如何通过API实现数据中心文档的上传和索引的添加。
|
1月前
|
Cloud Native Java Serverless
一键上天!如何将Spring PetClinic瞬间迁移到云端函数计算平台
【8月更文挑战第8天】在现代云原生开发中,将Spring应用迁移到Serverless环境正成为趋势。本文通过对比传统部署与函数计算,指导如何快速部署Spring PetClinic应用。传统部署需手动配置服务器和中间件,而函数计算则免除了这些步骤,仅需上传代码。首先,准备好Spring PetClinic源码或jar包;接着选择函数计算平台,本文以阿里云为例;随后对应用进行适配,并使用Maven构建部署包;登录阿里云控制台上传jar包并配置HTTP触发器;最后测试应用确保正常运行。
34 3
下一篇
DDNS