目录 一、简单构建与大模型对话 <— 你在这里 ( •̀ ω •́ )y
Spring AI(一)简单构建与大模型对话
[!NOTE]
博主前言:最近大模型挺火的,我看 Spring AI 相关应用貌似还没有足够多的教程,特此写一些个人经验供参考。
一、前期准备 要开发 Spring AI 相关应用,首先要准备两件事:
搭建一个基础 Springboot 应用框架
准备一个有充值余额的大模型api-key
,或者,本地部署大模型(如最近很火的ollama
+deepseek
)
[!WARNING]
悲报!DeepSeek 暂时关闭了充值服务(2025.2.20),虽然api-key
还能申请,但是没有余额就用不了(有余额依旧能用,且用且珍惜),这里有几个替代方案供参考(非广,我一分钱没捞着):
siliconflow :模型api
中转商,有满血 DeepSeek R1、V3 及其他蒸馏模型,以及其它品牌的模型,注册既有赠送余额足够学习使用,支持文本、图像、语音、视频,但是没有对应的 Spring AI 相关依赖,需要用 OpenAI 接口。
moonshot :国产自研模型,备选方案,有对应的 Spring AI 相关依赖,同样注册既有赠送余额足够学习使用,但是只有文本生成,且价格相比 DeepSeek 较贵(老一辈模型通病,备选学习使用方案,可以不考虑价格,但是不建议作为上线服务使用),能力也不如其他模型。
本地部署 :推荐ollama
+deepseek
方案,部署教程 b 站到处都是,ollama
也有对应的 Spring AI 相关依赖,算力上大多数电脑都可以尝试,只是仅学习使用,即使模型经过蒸馏,本地跑还是太慢了,完全达不到生产力需求。
二、要引入的依赖 引入依赖之前,先确认一下 Spring AI 是否预支持一些大模型或框架的调用,这样就不必都用 OpenAI 接口,能对使用的模型有更好的支持。
[!IMPORTANT]
访问仓库网站 ,并搜索:spring-ai-【你的模型或框架,如ollama
】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 <dependencies > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter</artifactId > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-test</artifactId > </dependency > <dependency > <groupId > org.springframework.ai</groupId > <artifactId > spring-ai-openai-spring-boot-starter</artifactId > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > <version > 1.18.36</version > </dependency > </dependencies > <dependencyManagement > <dependencies > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-dependencies</artifactId > <version > 3.4.1</version > <type > pom</type > <scope > import</scope > </dependency > <dependency > <groupId > org.springframework.ai</groupId > <artifactId > spring-ai-bom</artifactId > <version > 1.0.0-M6</version > <type > pom</type > <scope > import</scope > </dependency > </dependencies > </dependencyManagement >
三、编辑配置文件
[!TIP]
我个人喜欢分离配置文件,便于维护和隐蔽一些敏感信息
即被 ${} 代替的内容可以直接替换为你相关的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 spring: profiles: active: dev application: name: spring-ai ai: openai: api-key: ${local.ai.openai.api-key} base-url: ${local.ai.openai.base-url} chat: options: model: ${local.ai.openai.model} temperature: ${local.ai.common-options.temperature} max-tokens: ${local.ai.common-options.max-tokens}
四、准备会话Bean
Spring AI 通过ChatClient
类来与大模型会话,需要为其指定具体模型。
对于其类似应用层类 的性质,建议封装为Bean
以便调用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 @Configuration @RequiredArgsConstructor public class ChatClientConfig { private final OpenAiChatModel openAiChatModel; @Bean public ChatClient chatClient () { return ChatClient.builder(openAiChatModel) .build(); } }
五、测试与大模型对话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @Slf4j @SpringBootTest public class TestApp { @Autowired private ChatClient chatClient; @Test public void chatTest () { log.info("生成中,与大模型对话需要较长时间回复,请耐心等待..." ); String result = chatClient.prompt() .user("简单介绍下 Spring AI" ) .call().content(); log.info(result); } }