java脚手架系列16-AI大模型集成

之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。

注意由于框架不同版本改造会有些使用的不同,因此本次系列中主要使用基本框架是 spring-boo-2.3.12.RELEASE和spring-cloud.-Hoxton.SR12,所有代码都在commonFramework项目上:https://github.com/forever1986/commonFramework/tree/master

目录

  • [1 AI 集成](#1 AI 集成)
    • [1.1 代码演示](#1.1 代码演示)
      • [1.1.1 新建ai-biz子模块,引入以下依赖](#1.1.1 新建ai-biz子模块,引入以下依赖)
      • [1.1.2 配置通义千问的配置](#1.1.2 配置通义千问的配置)
      • [1.1.3 定义读取配置的QwenConfigProperties](#1.1.3 定义读取配置的QwenConfigProperties)
      • [1.1.4 定义controller接口](#1.1.4 定义controller接口)
      • [1.1.5 测试访问](#1.1.5 测试访问)

1 AI 集成

目前的大模型已经具备很好的通用能力,基于大模型的落地应用也接连变成可行性,因此在java后端集成大模型能力也是必不可少。市面上的大模型有很多,其实能力差不多,如果直接使用作为应用可能还达不到商业需求,那么一般我们会做prompt、微调、RAG(可参考我的写的博客《检索增强生成RAG系列》)、KAG等不同手段增强实际场景的准确率,从而达到可应用级。

而在java后端中,一般通过调用其提供的生成能力集成。大模型一般提供2种方式集成,一个是通过API接口,一个是通过SDK。其中SDK每个厂家都会发布,而spring-AI有一个统一规范。基于spring-AI这个规范,厂家也会制定一个starter方式使得开发者很方便。spring-AI对环境(JDK17及以上)和框架(springboot3.2及以上)要求比较高,由于我们的commonFramework是基于jdb1.8以及springboot2.x,因此本次演示使用厂家发布的SDK。

1.1 代码演示

这里访问通义千问大模型,使用其发布的SDK :dashscope-sdk-java

先决条件:在阿里云的百炼平台申请API-KEY
参考ai-biz子模块

1.1.1 新建ai-biz子模块,引入以下依赖

xml 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dashscope-sdk-java</artifactId>
        <version>2.14.4</version>
    </dependency>
</dependencies>

1.1.2 配置通义千问的配置

在yaml文件中配置senders

yaml 复制代码
server:
  port: 9986
spring:
  application:
    name: ai-biz-service

  ai:
    qwen:
      api-key : 你的API-KEY(在阿里云的百炼平台申请一个)
      chat:
        options:
          systeMessage : 你是一个问答小助手!
          model : qwen-turbo
          temperature : 0.7

1.1.3 定义读取配置的QwenConfigProperties

java 复制代码
@ConfigurationProperties(
        prefix = "spring.ai.qwen.chat.options"
)
@Data
@NoArgsConstructor
public class QwenConfigProperties {

    private String systeMessage = "";
    private String model = "";
    private Float temperature = 0.9f;

}

1.1.4 定义controller接口

java 复制代码
@EnableConfigurationProperties(QwenConfigProperties.class)
@RestController
public class AIController {


    @Value("${spring.ai.qwen.api-key}")
    private String apiKey = "";

    @Autowired
    private QwenConfigProperties qwenConfigProperties;

    @GetMapping("/ai/generate")
    public String generate(@RequestParam(value = "message", defaultValue = "你是谁?") String message) throws NoApiKeyException, InputRequiredException {
        Generation gen = new Generation();
        Message systemMsg = Message.builder()
                .role(Role.SYSTEM.getValue())
                .content(qwenConfigProperties.getSysteMessage())
                .build();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content(message)
                .build();
        GenerationParam param = GenerationParam.builder()
                .apiKey(apiKey)
                .model(qwenConfigProperties.getModel())
                .temperature(qwenConfigProperties.getTemperature())
                .messages(Arrays.asList(systemMsg, userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .build();
        GenerationResult result = gen.call(param);
        GenerationOutput output = result.getOutput();
        return output.getChoices().get(0).getMessage().getContent();
    }

}

1.1.5 测试访问

相关推荐
无心水几秒前
【OpenClaw:认知启蒙】4、OpenClaw灵魂三件套:SOUL.md/AGENTS.md/MEMORY.md深度解析
java·人工智能·系统架构
LaughingZhu1 分钟前
Product Hunt 每日热榜 | 2026-03-11
大数据·数据库·人工智能·经验分享·搜索引擎
Coding茶水间3 分钟前
基于深度学习的茶叶病害检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·机器学习
她说..4 分钟前
Redis 中常用的操作方法
java·数据库·spring boot·redis·缓存
white-persist5 分钟前
【红队渗透】Cobalt Strike(CS)红队详细用法实战手册
java·网络·数据结构·python·算法·安全·web安全
Arya_aa5 分钟前
编程题:实现汽车租赁公司汽车出租方案
java
高尤娜6 分钟前
【211/985高校主办-上海交通大学】第七届医学人工智能国际学术会议(ISAIMS2026)
人工智能·医学·ei检索·投稿·国际学术会议·上海·海报展示·口头报告
Project_Observer8 分钟前
任务条件布局规则如何帮助自动管理任务?
大数据·数据结构·人工智能·深度学习·机器学习·编辑器
用户3507571499929 分钟前
OpenClaw 2026.3.8 + DeepSeek 配置实战:从“Unknown Model”到完美运行的避坑指南
人工智能
笃行3509 分钟前
完整卸载 OpenClaw — 各平台卸载完全指南(Windows/macOS/Linux/npm/pnpm)
人工智能