Spring Ai DeepSeek官网中显示 DeepSeek对接Spring Ai只能使用文本功能 所以 通过集成实现文本,后续根据DeepSeek的官网Api实现图片等功能。
准备阶段
maven导入 Spring Ai DeepSeek官网
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
yml配置 可以查看 DeepSeek官网 了解相对应的配置
spring:
ai:
openai:
api-key: "替换为你的 DeepSeek API 密钥"
base-url: "https://api.deepseek.com" # 这里使用deepseek的地址官网可查最新的的
chat:
options:
model: "deepseek-reasoner" # 默认模型
temperature0: 0.7 # 生成文本的随机性控制
# max-tokens: 500
只需要配置这三个参数就可以直接使用了,其他参数后续用到会单独列出来
spring.ai.openai.chat.base-url 官方路径 直接用 https://api.deepseek.com
spring.ai.openai.chat.api-key apikey DeepSeek开放平台 中注册申请
spring.ai.openai.chat.options.model 使用的模型 deepseek-reasoner 默认模型
对话模块
根据 Spring Ai DeepSeek官网 来实现SpringBoot集成DeepSeek的对话功能。
官网有直接使用的案例
/**
* 普通对话
* @param message
* @return
*/
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", this.chatModel.call(message));
}
/**
* 普通对话流式返回
* @param message
* @return
*/
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return this.chatModel.stream(prompt);
}
普通对话
还有个流式对话生成,我们直接点到源码里面看
简单来说,“the streaming response from the AI model” 指的是 AI 模型以“流式传输”(streaming)的形式逐步生成并返回回答,而不是一次性生成完整结果后再返回。
好处 :
提升体验:用户无需长时间等待,可以即时看到部分结果(比如聊天时逐字显示)。
节省资源:对于长文本生成,分批传输效率更高。
举个实际例子:
非流式响应:
你问 AI “写一篇长文章”,等待 10 秒后,突然收到完整文章。流式响应:
你问同样的问题,AI 会像打字一样,逐句输出内容,你几乎立刻就能看到开头部分。
常见应用场景:
聊天机器人(如 ChatGPT)的逐词回复
实时翻译、语音助手
需要动态生成内容的场景(比如代码自动补全)
多轮对话
基础原理:上下文关联的核心
上下文关联的本质是让模型记住并理解对话历史,常见技术手段包括:
对话历史拼接:将用户当前提问与之前的问答内容拼接为完整输入。
注意力机制:利用Transformer的Self-Attention自动关联历史内容。
显式状态管理:通过数据库或缓存记录关键对话信息(如用户偏好、未完成任务等)。
由于SpringAi并不支持原生的DeepSeek 所以这得独立对接DeepSeek去实现,
图片模块
Spring Ai中能对图片处理的聊天模型有很多的如官网所示
由于项目用的是DeepSeek去做对接,但是DeepSeek在SpringAi中并未开放图片处理。
但是DeepSeek的官网是有开放图片等一系列的对接的处理的。
本模块将摒弃Spring Ai直接使用DeepSeek的调用方式去使用。