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 调用更换即可。

目录
相关文章
|
4月前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
3123 166
|
4月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
3644 75
|
4月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
5782 81
|
4月前
|
人工智能 监控 Java
Spring AI Alibaba实践|后台定时Agent
基于Spring AI Alibaba框架,可构建自主运行的AI Agent,突破传统Chat模式限制,支持定时任务、事件响应与人工协同,实现数据采集、分析到决策的自动化闭环,提升企业智能化效率。
Spring AI Alibaba实践|后台定时Agent
|
4月前
|
人工智能 供应链 搜索推荐
拔俗AI 智能就业咨询服务平台:求职者的导航,企业的招聘滤网
AI智能就业平台破解求职招聘困局:精准匹配求职者、企业与高校,打破信息壁垒。简历诊断、岗位推荐、技能提升一站式服务,让就业更高效。
249 0
|
4月前
|
人工智能 搜索推荐 大数据
拔俗AI一体化数字销售服务平台:让企业销售更智能、更高效
AI一体化数字销售服务平台融合AI与大数据,集成客户管理、智能推荐、自动化跟进等功能,实现销售全流程智能化。打破传统模式困局,提升转化率与效率,助力企业降本增效,抢占数字化转型先机。(238字)
316 0
|
4月前
|
存储 人工智能 搜索推荐
拔俗AI大模型教学平台:开启智能教育新时代
在AI与教育深度融合背景下,本文基于阿里云技术构建大模型教学平台,破解个性化不足、反馈滞后等难题。通过“大模型+知识图谱+场景应用”三层架构,实现智能答疑、精准学情分析与个性化学习路径推荐,助力教学质量与效率双提升,推动教育智能化升级。
560 0
|
4月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
390 0
|
4月前
|
人工智能 运维 NoSQL
拔俗AI大模型知识管理平台:让技术团队的“隐性知识”不再沉睡
技术团队常困于知识“存得住却用不好”。AI大模型知识管理平台如同为团队知识装上“智能大脑”,打通文档、代码、日志等碎片信息,实现智能检索、自动归集、动态更新与安全共享。它让新人快速上手、老手高效排障,把散落的经验变成可复用的智慧。知识不再沉睡,经验永不流失。
164 0
|
4月前
|
人工智能 自然语言处理 搜索推荐
营销智能体 AI 平台:技术人告别营销需求返工的实战手册
技术人常陷营销琐事:改文案、调接口、算数据。营销智能体AI平台并非“营销玩具”,而是为技术减负的利器。它将内容生成、投放优化、数据复盘自动化,无缝对接现有系统,提升效率2倍以上。落地需避三坑:勿贪全、勿求完美、紧扣业务需求。让技术专注核心,告别重复搬运。
157 0