文章摘要
......集成Ollama
依赖引入
引入SpringBoot AI依赖:
<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>
</dependencies>
</dependencyManagement>
引入Ollama的starter依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
配置
可以选择在直接在配置文件配置或者更灵活的代码配置
spring:
ollama:
base-url: http://localhost:11434 # ollama运行地址
chat:
model: deepseek-r1:14b # 模型名称
# 可选参数(可选多个参数,这里只列出了两个)
options:
temperature: 0.7 # 生成随机性(0-1,数值越大随机性越强)
max-tokens: 2048 # 最大生成的Token数
package cn.ahzoo;
import io.micrometer.observation.ObservationRegistry;
import org.springframework.ai.model.tool.ToolCallingManager;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.ollama.api.OllamaApi;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.ai.ollama.management.ModelManagementOptions;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OllamaConfig {
@Bean
public OllamaChatModel ollamaChatModel() {
// 调用接口
OllamaApi ollamaApi = OllamaApi.builder()
.baseUrl("http://localhost:11434")
.build();
// 参数配置
OllamaOptions ollamaOptions = OllamaOptions.builder()
.model("gemma3:4b")
.temperature(0.7)
.build();
// 构建ToolCallingManager用于工具调用
ToolCallingManager toolCallingManager = ToolCallingManager.builder().build();
// 构建ObservationRegistry用于监控
ObservationRegistry observationRegistry = ObservationRegistry.NOOP;
// 模型管理配置
ModelManagementOptions modelManagementOptions = ModelManagementOptions.defaults();
return new OllamaChatModel(
ollamaApi,
ollamaOptions,
toolCallingManager,
observationRegistry,
modelManagementOptions
);
}
}
调用
默认调用
调用方式也比较简单,直接注OllamaChatModel 就可以进行调用了:
@Autowired
private OllamaChatModel chatModel;
public String chat(String msg) {
return chatModel.call(msg);
}
使用提示词
@Autowired
private OllamaChatModel chatModel;
public String chat(String msg) {
String systemPrompt = """
你是一名AI助手。
请以自然、亲切的方式与用户对话。
用中文回复。
""";
PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
Prompt prompt = promptTemplate.create(Map.of("content", msg));
return chatModel.call(new Prompt(prompt.getInstructions()))
.getResult()
.getOutput()
.getText();
}
流式响应
@Autowired
private OllamaChatModel chatModel;
public Flux<AssistantMessage> chat(String msg) {
String systemPrompt = """
你是一名AI助手。
请以自然、亲切的方式与用户对话。
用中文回复。
""";
PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
Prompt prompt = promptTemplate.create(Map.of("content", msg));
return chatModel.stream(new Prompt(prompt.getInstructions()))
.map(response -> response.getResult().getOutput())
.doOnComplete(() -> logger.info("流式聊天完成"))
.doOnError(error -> logger.error("流式聊天失败", error));
}
集成智谱清言
依赖引入
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-zhipuai</artifactId>
</dependency>
配置
智谱AI配置同样支持配置文件或者代码配置,这里以配置文件为例,代码配置可以参考上文的Ollama配置。
spring:
ai:
zhipuai:
api-key: { API KEY } # api key需要从智谱大模型官网获取
base-url: https://open.bigmodel.cn/api/paas # 智谱大模型的调用地址(默认是这个,如果有更新,可以从官网查询获得)
chat:
# 可选参数配置
options:
model: glm-4-flash # 模型名称
temperature: 0.7 # 随机性(0-1)数值越大随机性越强
max-tokens: 2048 # 最大生成token数
top-p: 0.9 # 采样率(0-1)数值越大,生成的发散性/创意性越强
stop: ["###", "END"] # 生成结束标识
调用
默认调用
直接注入模型即可调用:
@Autowired
private ZhiPuAiChatModel chatModel;
public String chat(String msg) {
return chatModel.call(msg);
}
使用提示词
参考前文的Ollama中的示例
流式响应
@Autowired
private ZhiPuAiChatModel chatModel;
public Flux<AssistantMessage> chat(String msg) {
String systemPrompt = """
你是一名AI助手。
请以自然、亲切的方式与用户对话。
用中文回复。
""";
PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
Prompt prompt = promptTemplate.create(Map.of("content", msg));
return chatModel.stream(new Prompt(prompt.getInstructions()))
.map(response -> response.getResult().getOutput())
.doOnComplete(() -> logger.info("流式聊天完成"))
.doOnError(error -> logger.error("流式聊天失败", error));
}
使用示例
我们这里可以看到,流式响应是这样一段一段的:
集成DeepSeek
依赖引入
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-ai-deepseek</artifactId>
</dependency>
配置
智谱AI配置同样支持配置文件或者代码配置,这里以配置文件为例,代码配置可以参考上文的Ollama配置。
spring:
ai:
deepseek:
api-key: ${DEEPSEEK_API_KEY} # 在DeepSeek控制台申请的API密钥
base-url: https://api.deepseek.ai
chat:
enabled: true
options:
model: deepseek-chat # 模型选择
temperature: 0.8 # 生成随机性控制(0.0-1.0,值越高越随机)
max-tokens: 512 # 单次生成最大Token数
top-p: 0.9 # Nucleus采样参数(0.0-1.0,控制生成词汇的概率分布)
frequency-penalty: 0.0 # 频率惩罚(-2.0到2.0)
presence-penalty: 0.0 # 存在惩罚(-2.0到2.0)
stop: [ "###", "END" ] # 生成停止序列
调用
默认调用
直接注入模型即可调用:
@Autowired
private DeepSeekChatModel chatModel;
public String chat(String msg) {
return chatModel.call(msg);
}
使用提示词
参考前文的Ollama中的示例
流式响应
@Autowired
private DeepSeekChatModel chatModel;
public Flux<AssistantMessage> chat(String msg) {
String systemPrompt = """
你是一名AI助手。
请以自然、亲切的方式与用户对话。
用中文回复。
""";
PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
Prompt prompt = promptTemplate.create(Map.of("content", msg));
return chatModel.stream(new Prompt(prompt.getInstructions()))
.map(response -> response.getResult().getOutput())
.doOnComplete(() -> logger.info("流式聊天完成"))
.doOnError(error -> logger.error("流式聊天失败", error));
}
版权声明
本文依据 CC-BY-NC-SA 4.0 许可协议授权,请您在转载时注明文章来源为 Z次元 ,若本文涉及转载第三方内容,请您一同注明。
评论区
发表评论
这里还没有评论哦
快来发一条评论抢占前排吧
目录
1
集成Ollama
依赖引入
配置
调用
默认调用
使用提示词
流式响应
2
集成智谱清言
依赖引入
配置
调用
默认调用
使用提示词
流式响应
使用示例
3
集成DeepSeek
依赖引入
配置
调用
默认调用
使用提示词
流式响应