ai(3) spring ai 大模型的调用
- 上一篇
- 创建一个spring ai项目
- jdk25 + springboot4.1.0 + spring ai 2.0.0-M2
-
![image]()
![image]()
-
增加pom,添加需要的依赖。比如智谱官方 SDK ,openai 、deepseek等
-
<?xml version="1.0" encoding="UTF-8"?>
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.zwj</groupId>
<artifactId>zwj-one-ai</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>zwj-one-ai-core</artifactId>
<properties>
<java.version>25.0.3</java.version>
<spring-ai.version>2.0.0-M2</spring-ai.version>
<lombok.version>1.18.46</lombok.version>
<logback.version>1.5.25</logback.version>
<!-- <jackson.version>3.1.1</jackson.version>-->
<tomcat.version>11.0.21</tomcat.version>
<spring-framework.version>7.0.7</spring-framework.version>
<!-- Jackson 统一版本:修复 WS-2026-0003 -->
<jackson.version>2.21.2</jackson.version>
<assertj.version>3.27.7</assertj.version>
<!-- <bouncycastle.version>1.84</bouncycastle.version>-->
<!-- 修复所有 Hutool 高危漏洞,直接升级到安全版本 -->
<hutool.version>5.8.40</hutool.version>
<!-- core/databind 用 3.1.1(groupId=tools.jackson.core) -->
<jackson3.version>3.1.1</jackson3.version>
<!-- annotations 用 2.x 最新安全版 -->
<jackson.annotations.version>2.21.3</jackson.annotations.version>
<!-- Netty 安全版本(修复 CVE-2026-33871 + CVE-2026-33870) -->
<netty.version>4.2.13.Final</netty.version>
<exp4j.version>0.4.8</exp4j.version>
<mybatis-plus.version>3.5.15</mybatis-plus.version>
<zwj-log.starter.version>0.0.1-SNAPSHOT</zwj-log.starter.version>
<zwj-web-starter.version>0.0.1</zwj-web-starter.version>
<tika-core.version>3.2.2</tika-core.version>
<hutool-all.version>5.8.40</hutool-all.version>
</properties>
<dependencies>
<!-- 依赖 contract 模块 -->
<dependency>
<groupId>com.zwj</groupId>
<artifactId>zwj-one-ai-contract</artifactId>
</dependency>
<!-- =====================Spring boot===================== -->
<!-- Spring Boot 核心依赖,包含了 Spring Boot 的自动配置和启动器。
Spring Boot 自动配置:Spring Boot 会根据项目的依赖自动配置应用程序,减少了手动配置的工作量。
Spring Boot 启动器:启动器是一组依赖的集合,用于简化项目的依赖管理。例如,spring-boot-starter-web 启动器包含了构建 Web 应用所需的所有依赖。
Spring Boot 应用程序:Spring Boot 应用程序是一个独立的可执行 JAR 文件,包含了所有的依赖和配置信息。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 生产级监控和管理的核心模块
健康检查 (Health Checks): /actuator/health 端点提供应用的健康状态,包括数据库连接、缓存、消息队列等。
指标收集 (Metrics):/actuator/metrics 端点提供应用的运行时指标,如 CPU 使用率、内存占用、请求计数等。
应用信息暴露 (Info & Env):/actuator/info 和 /actuator/env 端点提供应用的基本信息和环境变量。
/actuator/beans:查看 Spring 容器中所有 Bean 的列表及其依赖关系。
/actuator/configprops:查看应用中所有配置属性的详细信息。
/actuator/metrics:查看应用的运行时指标,如内存使用、请求计数等。
/actuator/loggers:动态查看和修改日志级别(无需重启应用即可调整日志输出等级)。
/actuator/threaddump:获取线程快照,用于排查死锁或性能瓶颈。
/actuator/shutdown:优雅关闭应用(默认禁用,需手动开启) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</dependency>
<!-- Spring AI 核心客户端 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-client-chat</artifactId>
</dependency>
<!-- <!– Spring AI –>-->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-deepseek</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
<!-- 智谱官方 SDK -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-zhipuai</artifactId>
</dependency>
<!-- ollama SDK -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
<!-- ai3. Chroma 向量数据库 Java 客户端 -->
<!-- 只需要引入这一个 Starter -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-chroma</artifactId>
<!-- 注意:这里不需要写 <version>,版本由上面的 BOM 控制 -->
</dependency>
<!-- 添加 JDBC 聊天记忆存储支持,用于生产级持久化 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-chat-memory-repository-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-pdf-document-reader</artifactId>
</dependency>
<!-- 测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- AOP 日志 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aspectj</artifactId>
</dependency>
<!-- ===================== zwj starter ===================== -->
<dependency>
<groupId>com.zwj</groupId>
<artifactId>zwj-log-starter</artifactId>
<version>${zwj-log.starter.version}</version>
</dependency>
<dependency>
<groupId>com.zwj</groupId>
<artifactId>zwj-web-starter</artifactId>
<version>${zwj-web-starter.version}</version>
</dependency>
<!-- 工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-all.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<!-- ai1. 文档读取:PDF/Word/TXT/Excel -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>${tika-core.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>${tika-core.version}</version>
<type>pom</type>
</dependency>
<!-- ai2. ONNX Runtime:运行本地向量化模型 -->
<dependency>
<groupId>com.microsoft.onnxruntime</groupId>
<artifactId>onnxruntime</artifactId>
<version>1.17.1</version>
</dependency>
<!-- 数学计算 -->
<dependency>
<groupId>net.objecthunter</groupId>
<artifactId>exp4j</artifactId>
<version>${exp4j.version}</version>
</dependency>
<!-- MySQL 驱动 - 必须添加 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot4-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 2. 新增 jsqlparser 依赖,用于解决插件类找不到的问题 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 1. 具体模型集成 Starter,以 OpenAI 兼容接口为例 -->
<!-- <dependency>-->
<!-- <groupId>dev.langchain4j</groupId>-->
<!-- <artifactId>langchain4j-open-ai-spring-boot4-starter</artifactId>-->
<!-- <version>1.13.1-beta23</version> <!– 建议使用最新版本 –>-->
<!-- </dependency>-->
<!-- 2. LangChain4j 核心 Starter,提供 @AiService 等核心能力 -->
<!-- <dependency>-->
<!-- <groupId>dev.langchain4j</groupId>-->
<!-- <artifactId>langchain4j-spring-boot4-starter</artifactId>-->
<!-- <version>1.13.1-beta23</version> <!– 版本需与上个依赖保持一致 –>-->
<!-- </dependency>-->
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 强制锁定 bouncycastle 版本 -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>1.84</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
<version>1.84</version>
</dependency>
<!-- 强制锁定 Jackson 安全版本,修复 CVE-2026-29062 -->
<!-- Jackson 3.x 核心(修复 CVE-2026-29062) -->
<dependency>
<groupId>tools.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson3.version}</version>
</dependency>
<dependency>
<groupId>tools.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson3.version}</version>
</dependency>
<!-- Jackson Core(修复 DoS 漏洞) 锁定版本 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- 常用配套,必须同版本 锁定版本 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-resolver-dns-native-macos</artifactId>
<version>4.1.115.Final</version>
<classifier>osx-aarch_64</classifier> <!-- Apple Silicon (M1/M2/M3) -->
<!-- 如果是 Intel Mac,使用 classifier: osx-x86_64 -->
</dependency>
<!-- 修复 CVE-2026-28208 CVE-2026-41245 -->
<dependency>
<groupId>com.github.junrar</groupId>
<artifactId>junrar</artifactId>
<version>7.5.10</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!-- Spring Boot 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.zwj.ai.core.AiApplication</mainClass>
<jvmArguments>--enable-preview</jvmArguments>
</configuration>
</plugin>
<!-- 编译插件:指定 JDK 版本 让 Lombok 生效 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- <version>3.13.0</version>-->
<configuration>
<!-- JDK 版本 -->
<release>${java.version}</release>
<!-- 开启 Java 预览功能 -->
<compilerArgs>
<arg>--enable-preview</arg>
</compilerArgs>
<!-- 让 Lombok 生效 -->
<!-- <annotationProcessorPaths>-->
<!-- <path>-->
<!-- <groupId>org.projectlombok</groupId>-->
<!-- <artifactId>lombok</artifactId>-->
<!-- <version>${lombok.version}</version>-->
<!-- </path>-->
<!-- </annotationProcessorPaths>-->
<target>${java.version}</target>
<source>${java.version}</source>
</configuration>
</plugin>
</plugins>
</build>
</project>
-
-
配置yml
-
下面包含了openai、deepseek、智谱、本地大模型等,实际用的时候配置一个就行
spring:
ai:
# DeepSeek
deepseek:
api-key: XXXXXXXXXXXXXXXX
base-url: https://api.deepseek.com # API 基础 URL(默认值,通常无需修改)[reference:9]
chat:
enabled: true # 是否启用 DeepSeek 聊天自动配置,默认为 true[reference:10]
options:
model: deepseek-chat # 使用的模型名称[reference:11]
OpenAI:
api-key: XXXXXXXXXXXXXXXXXXXXXXX
base-url: https://ark.cn-beijing.volces.com/api
chat:
options:
model: doubao-seed-1-6-flash-250828
# 豆包
doubao:
api-key: XXXXXXXXXXXXXXXXXX
base-url: https://ark.cn-beijing.volces.com/api
model: doubao-seed-1-6-flash-250828
# 智谱
zhipuai:
api-key: XXXXXXXXXXXXXXXXX
base-url: https://open.bigmodel.cn/api/paas
chat:
options:
model: GLM-4.7-Flash
temperature: 0.1 # 降低随机性
top-p: 0.9
max-tokens: 2048
do-sample: true # 必须启用才能应用 temperature
ollama:
# 【修改】基础地址指向本地 Ollama 服务
base-url: http://192.168.251.130:11434
chat:
options:
# 【修改】指定你已下载的模型名称,例如 qwen2.5:7b
model: qwen2.5:0.5b
# 可选:调整温度参数控制回复的创造性
temperature: 0.8
# 启动时若模型不存在则自动拉取
pull-model-strategy: always
-
-
调用接口
-
private static final String CHAT_SYSTEM_PROMPT = "你是智能助手,请根据用户问题查询资料回答。"; /** 智谱 AI 聊天模型 */ private final ZhiPuAiChatModel zhipuAiChatModel; @Override public String chat(String question) { Assert.isTrue(StringUtils.hasText(question), "问题不能为空"); try { return zhipuAiChatModel.call(question); } catch (Exception e) { log.error("调用大模型生成回答失败", e); return "抱歉,服务暂时不可用,请稍后重试。" + e.getMessage(); } }
-
-
下一篇
本文来自博客园,作者:zwjvzwj,转载请注明原文链接:https://www.cnblogs.com/zwjvzwj/p/22417850

