AI大模型SDK,支持多种大模型服务的统一接入,包括讯飞星火、通义千问、ChatGPT、和DeepSeek等。
GitHub地址:https://github.com/jeesoul/jeesoul-ai-model
xml
<!--建议引入中央仓库地址-->
<repositories>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
<dependencies>
<!--已发布到 maven 中央仓库 目前最新版: 1.0.3-->
<dependency>
<groupId>com.jeesoul</groupId>
<artifactId>jeesoul-ai-model</artifactId>
<version>1.0.3</version>
</dependency>
<!--集成响应式编程-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
功能特性
- 支持多种大模型服务统一接入
- 提供同步和流式两种对话模式
- 支持参数透传和自定义配置
- 统一的异常处理和日志记录
- 支持系统提示词和思考模式
- 基于Spring Boot的自动配置
模型支持
模型名称 | 枚举值 |
---|---|
讯飞星火 | spark |
ChatGPT | chatgpt |
通义千问 | qWen |
DeepSeek | deepSeek |
在application.yml
中添加配置:
yml
ai:
qwen:
api-key: your-api-key
endpoint: https://api.qwen.com/v1/chat/completions
spark:
api-key: your-api-key
endpoint: https://api.spark.com/v1/chat/completions
deep-seek:
api-key: your-api-key
endpoint: https://api.deepseek.com/v1/chat/completions
使用
同步对话
参数说明
ModelRequestVO
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
modelName | String | 是 | 模型名称(qWen/chatgpt/spark/deepSeek) |
model | String | 是 | 具体模型版本 |
systemPrompt | String | 否 | 系统提示词 |
prompt | String | 是 | 用户提示词 |
enableThinking | boolean | 否 | 是否开启思考模式 (支持QWen系列快、慢思考) |
params | Map<String,Object> | 否 | 自定义参数 |
ModelResponseVO
参数名 | 类型 | 说明 |
---|---|---|
result | String | 返回结果 |
thinking | Boolean | 思考过程(如果启用) |
model | String | 模型名称 |
java
public void chat() {
// 非必填参数 创建请求对象(使用链式调用)
Map<String, Object> params = new HashMap<>();
params.put("temperature", 0.7);
params.put("top_p", 0.9);
params.put("max_tokens", 2000);
ModelRequestVO request = new ModelRequestVO()
.setModelName("qWen") // 或 "spark", "deepSeek"
.setModel("qwen-turbo") // 具体模型版本
.setPrompt("你好,请介绍一下自己")
.setParams(params);
// 获取服务实例并调用
AiService aiService = FactoryModelService.create(request.getModelName());
ModelResponseVO response = aiService.httpChat(request);
System.out.println(response.getResult());
}
流式对话
java
public void streamChat() {
// 使用链式调用创建请求对象
ModelRequestVO request = new ModelRequestVO()
.setModelName("spark")
.setModel("x1")
.setPrompt("写一首诗");
AiService aiService = FactoryModelService.create(request.getModelName());
// 方式1:获取ModelResponseVO流
Flux<ModelResponseVO> responseFlux = aiService.streamChat(request);
responseFlux.subscribe(response -> {
System.out.println(response.getResult());
if (response.getThinking() != null) {
System.out.println("思考过程:" + response.getThinking());
}
});
// 方式2:获取原始文本流
Flux<String> textFlux = aiService.streamChatStr(request);
textFlux.subscribe(System.out::println);
}