Spring AI入门对接百炼平台大模型
Java程序员正式转AI了。Spring AI出来一年多了,但是我最近才开始学它。所以把我学习的方式,遇到的问题分享给大家,让大家少走弯路项目开源地址:gitee:其中rent-ai服务引入了Spring AI。
1 SpringBoot整合Spring AI
前言
Java程序员正式转AI了。Spring AI出来一年多了,但是我最近才开始学它。所以把我学习的方式,遇到的问题分享给大家,让大家少走弯路
项目开源地址:gitee: https://gitee.com/huq01/rent
其中rent-ai服务引入了Spring AI
1.1 pom引入依赖
下面的pom一般写在父项目中,因为dependencyManagement是做版本管理的,不过写在子项目中也能跑起来
<properties>
<spring-ai.version>1.0.0</spring-ai.version>
</properties>
<dependencyManagement>
<dependencies>
<!--集成SpringAI正式版-->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
有些坑跟大家分享下,B站上不少视频,引入的spring-ai-bom的版本是1.0.0-M6,这个版本是Spring团队开发过程中的一个中间版本,用于收集开发者反馈、测试新功能以及修复已知问题的版本,相当于开发版。而我所写1.0.0版本是前几天官方发布的正式版,所以建议大家都使用正式版,因为正式版更稳定,更可靠
子项目pom如下:引入openai
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
有些项目引入的是spring-ai-openai-spring-boot-starter,如下所示,但是我一开始引入它时,报错显示找不到这个依赖,查了半天才发现,正式版(也就是1.0.0版)没有这个依赖了,1.0.0-M6版倒是有这个依赖,估计是升级到正式版,依赖也有所变化
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
1.2 yml配置
要填写api-key,这个是在阿里百炼平台申请的,申请步骤看下文
#端口
server:
port: 8007
#服务名
spring:
application:
name: rent-ai
# 数据库连接配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/rent-house
username: root
password: admin123
ai:
# openai表示在线调用,不是美国那个兄弟的OpenAI
openai:
# 填写阿里云百炼平台的url,而不是openai的url
base-url: https://dashscope.aliyuncs.com/compatible-mode
# 百炼平台上申请的key
api-key: sk-c9b616dce94145bu8e924682c9f3a0a477
chat:
options:
# 模型的名字,这里是千问
model: qwen-max-latest
# 模型温度,值越大,输出结果越随机
temperature: 0.8
embedding:
options:
model: text-embedding-v3
dimensions: 1024
这里大家可能有个误解,配置文件中的openai是指在线调用大模型的接口,不是美国那个兄弟的OpenAI,咱们在国内用不了它,得搭梯子才行
1.3 创建对话客户端
客户端负责跟大模型建立连接
/**
* @Description AI对话客户端
* @Author huqing
* @Date 2025/5/31 17:42
**/
@Configuration
public class ChatClientConfig {
/*@Bean
public ChatMemory chatMemory() {
return new InMemoryChatMemory();
}*/
@Bean
public ChatClient chatClient(OpenAiChatModel model, ChatMemory chatMemory) {
return ChatClient
.builder(model)
//系统提示词
.defaultSystem("你是高级程序员,名字叫小胡,你擅长炒股,坚信能在大哥李琛的带领下能用1万赚到30万,围绕这个主题扩展介绍下去")
.build()
;
}
}
1.4 对话接口
注意需要使用注解@RequiredArgsConstructor,表示无参构造,因为把ChatClient作为属性给引入了,没有加注解的话需要生成有参构造函数
/**
* @Description AI对话接口
* @Author huqing
* @Date 2025/5/31 17:43
**/
@RequiredArgsConstructor
@RestController
@RequestMapping("/api/chat")
@Tag(name = "AI对话接口")
public class ChatController {
private final ChatClient chatClient;
//如果不写produces = "text/html;charset=utf-8",大模型输出会乱码
@GetMapping(value = "/chat", produces = "text/html;charset=utf-8")
public Flux<String> chat(String prompt) {
return chatClient.prompt().user(prompt).stream().content();
}
}
1.5 测试
浏览器输入:http://localhost:8007/api/chat/chat?prompt=我是谁

2 阿里云百炼平台
阿里云百炼平台官网:https://bailian.console.aliyun.com/
新手用户点立即开通,会送免费的token,大模型接口是根据token的多少来收费的

我已经开通过,所以我点击登录就行,好处就是可以支付宝登录,不需要单独下载什么软件,也不需要单独创建账号,这点方便了很多

登录进去之后,点击 模型广场

API-KEY

创建我的API-KEY
归属业务空间,选择默认业务空间就行

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)