文章摘要
......集成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:
prompt-suffix: -dev
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));
}
使用示例
我们这里可以看到,流式响应是这样一段一段的:
版权声明
本文依据 CC-BY-NC-SA 4.0 许可协议授权,请您在转载时注明文章来源为 Z次元 ,若本文涉及转载第三方内容,请您一同注明。
评论区
发表评论
这里还没有评论哦
快来发一条评论抢占前排吧
目录
集成Ollama
依赖引入
配置
调用
默认调用
使用提示词
流式响应
集成智谱清言
依赖引入
配置
调用
默认调用
使用提示词
流式响应
使用示例