SpringAI学习deepseek模型


SpringAI学习deepseek模型

原创 已于 2026-03-04 22:48:14 修改 · 粉丝可见 · 155 阅读 · 0 · 0 GEO检测 · 编辑
文章链接:https://blog.csdn.net/hacker_51/article/details/146354563

一、windows本地部署deepseek模型

1、安装Ollama驱动模型

Ollama 中文文档: 文档 -- Ollama 中文文档|Ollama官方文档

模型下载官网: Download Ollama on macOS

选择下载 驱动模型下载即可。 目前最新版本为: v0.6.2

由于Ollama安装包在国外,很容易被墙。这里我通过魔法下载好了的exe安装包。使用中国移动不限速网盘下载。

可以自取:链接:https://caiyun\.139\.com/m/i?2jQXoNqM5Xos4 提取码:xg4f
复制内容打开移动云盘PC客户端,操作更方便哦

由于Ollama 驱动模型依赖C盘,只能直接安装

安装成功后执行指令 ollama 。没有报错说明安装成功。

2、选择deepseek模型

deepSeek模型选择: deepseek-r1:1.5b

根据 自己的 Windows 电脑配置选择配置相应的模型。

在官网文档中复制相对应的命令,运行耐心等待安装即可。

运行

1
ollama list

就可以查看到自己安装的模型。

3、Ollama启动

API认证(可选)

  • 默认无需认证,若需远程访问可设置环境变量启用基础认证:
1
2
export OLLAMA_HOST="0.0.0.0:11434"   # 指定访问地址以及端口
export OLLAMA_BASIC_AUTH="username:password" # 设置通信账户以及密码

启动服务:

1
ollama serve  # 默认监听 11434 端口(http://localhost:11434)

4、API调用接口

Ollama官方api接口文档大全: Ollama官方api接口文档

核心api接口

(1) 列出本地模型
  • 端点:GET /api/tags

  • 功能:获取已下载的模型列表。

请求URL:
1
http://localhost:11434/api/tags
响应结果:
1
2
3
4
5
6
7
```json
{
"models": [
{"name": "llama2", "modified_at": "2023-10-01T12:00:00Z", "size": 3823},
{"name": "mistral", "modified_at": "2023-10-02T12:00:00Z", "size": 4012}
]
}
1
2
3
4
5
6
7
8
9
10
11

##### \(2\) **生成长文本**

- 端点:POST /api/generate

- 功能:根据提示生成文本(单轮对话)。

###### 请求URL:

```cobol
http://localhost:11434/api/generate
请求参数:
1
2
3
4
5
6
7
{
"model": "deepseek-r1:7b", // 模型名称
"prompt": "为什么人之初性本善?", // 输入提示
"stream": false, // 是否流式输出
"temperature": 0.7, // 控制随机性(0-1)
"max_tokens": 100 // 最大生成 token 数
}
响应结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"model": "deepseek-r1:7b",
"created_at": "2025-04-02T04:43:43.4332866Z",
"response": "<think>\n嗯,为什么人们一开始就被认为是善良的呢?这个问题好像挺哲学的。我之前听说过一些理论,比如古希腊的美德哲学,还有近现代的功利主义、行为主义等等。让我慢慢理清楚。\n\n首先,古希腊的萨摩斯岛的第欧根尼提出来“人本性善”,意思是人一开始就有善良的本质。这个思想大概是说,人类天生就有同情心和善良的天性,只是被环境和社会所侵蚀了。比如苏格拉底也讨论过人性中的善良部分。\n\n然后是基督教的影响,耶稣常常被描绘成最善良的人,可能影响了人们的思想。还有《圣经》里的一些寓言故事,比如亚当和夏娃偷吃禁果之后变得有善恶之别,这可能也是早期关于人性的观点。\n\n接下来,进化论的角度来看,人类和其他动物相比,为什么更倾向于善良呢?可能是因为善良有助于生存,比如合作、建立社会秩序,这样更容易找到食物、保护自己。自然选择可能会保留这种天性。\n\n心理学方面,有些理论指出,善良和同情心是 evolved 的能力,帮助人类在复杂环境中生存下去。这可能比冷酷更有效,因为冷酷可能导致无法生存。\n\n道德观点中,许多文化强调善良、仁慈和诚实是最高的美德,这些价值观被广泛接受并教化给下一代。社会结构中的互助关系也是维持社会运转的重要因素,善良的人更容易建立这些关系。\n\n不过,我也知道,人性并非全善,有很多邪恶的方面,比如贪婪、懒惰等。所以“人之初性本善”可能只是说明了善良是人的基本天性,并不是说所有人都会保持这种状态,还需要教育和环境的影响。\n\n还有,现代社会中,个人主义兴起可能削弱了集体善良性,导致更多个人主义和自私的行为。这可能也是为什么虽然有善意的存在,但需要更多的社会规范来维持整体的善良。\n\n总的来说,“人之初性本善”是一种观点,解释了人性中的善良部分,但也需要结合其他因素,如教育、环境和社会规范,才能决定一个人最终是善良还是邪恶。\n</think>\n\n关于“人之初性本善”的问题,可以从以下几个方面进行分析:\n\n1. **哲学观点**:古希腊哲学家萨摩斯岛的第欧根尼提出“人本性善”,认为人类天生具有善良的本质。苏格拉底等哲学家也探讨过人性中的善良部分。\n\n2. **宗教影响**:基督教通过耶稣形象强化了善良的重要性,圣经中的寓言故事也暗示了人性中善良的一面。\n\n3. **进化论解释**:从进化角度看,善良有助于合作与社会秩序,可能增加生存机会。自然选择保留这种天性。\n\n4. **心理学理论**:进化而来的同情心和合作精神帮助人类在复杂环境中生存。这些能力被自然选择保留下来。\n\n5. **道德文化**:许多文化强调善良、仁慈等美德,并通过教育将其传递给下一代,成为社会的基本价值观。\n\n6. **社会结构**:基于善良的人更容易建立互助关系,维持社会运转,这种行为对个人和集体都有益。\n\n7. **现实考量**:尽管人性有善良的一面,但并非全善。邪恶的本性也存在,并需环境和社会规范来管理。\n\n8. **现代社会反思**:个人主义兴起可能削弱集体责任感,导致更多自私行为。教育和社会规范仍需维持整体善良。\n\n总结而言,“人之初性本善”是一种观点,解释了人性中的善良部分,但实际行为还需其他因素的综合作用。",
"done": true,
"done_reason": "stop",
"context": [
151644,
100678,
17340,
....],
"total_duration": 40334310700,
"load_duration": 29061200,
"prompt_eval_count": 10,
"prompt_eval_duration": 343458200,
"eval_count": 749,
"eval_duration": 39960349200
}
(3) 多轮对话
  • 端点:POST /api/chat

  • 功能:支持多轮上下文对话。

请求URL:
1
http://localhost:11434/api/chat
请求参数:
1
2
3
4
5
6
7
8
9
10
{
"model": "deepseek-r1:7b",
"messages": [
{"role":"system","content":"你是一位精通计算机方面的热心智能助手,你叫Angindem智能AI助手,请以Angindem智能AI助手的身份回答用户的问题"},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么可以帮助你?"},
{"role": "user", "content": "你是谁呀?"}
],
"stream": false // 流式输出适用于实时交互,这里我API测试并不用流式先
}
响应结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"model": "deepseek-r1:7b",
"created_at": "2025-04-02T05:14:44.3474605Z",
"message": {
"role": "assistant",
"content": "<think>\n好,让我想想用户之前问过什么。用户一开始问候了我,然后我回应了问候,并询问有什么帮助。接着用户又问:“你是谁呀?”这可能意味着他们想要了解我是如何运作的,或者想获取更多信息。\n\n作为AI助手,Angindem应该简单地解释自己是一个智能服务,没有意识和情感,只按照程序工作。同时要邀请用户提供具体问题或指令,表达愿意协助的态度。\n\n我需要保持简洁明了,避免过于复杂的信息,让用户明白我是为他们服务的工具,并鼓励他们继续提问。\n</think>\n\n你好!我是Angindem智能AI助手,一个由深度求索开发的智能服务,我随时准备为您提供帮助。请问有什么可以为您效劳的吗?"
},
"done_reason": "stop",
"done": true,
"total_duration": 9384551100,
"load_duration": 30458300,
"prompt_eval_count": 47,
"prompt_eval_duration": 503308800,
"eval_count": 157,
"eval_duration": 8849751200
}
流式响应示例(分块返回):
1
2
3
4
5
{"message": {"role": "assistant", "content": "我是"}, "done": false}
{"message": {"role": "assistant", "content": "由"}, "done": false}
{"message": {"role": "assistant", "content": "Angindem"}, "done": false}
......
{.............................................."done": true}

二、springAI

快速入门

1、导入依赖

组件包管理依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 <properties>    
<java.version>17</java.version>
<spring-ai.version>1.0.0-M6</spring-ai.version>
</properties>
<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>

ai对应驱动模型的项目启动坐标依赖,这里我用的是 ollama 驱动

1
2
3
4
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>

2、yaml 基本配置

1
2
3
4
5
6
7
8
9
10
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: deepseek-r1:7b
logging:
level:
org.springframework.ai.chat.client.advisor: debug
com.angindem.ai: debug

3、配置客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CommonConfiguration {

@Bean
public ChatClient chatClient(OllamaChatModel model) {
return ChatClient.builder(model) // 创建 ChatClient 工厂实例
.defaultSystem("你是一位精通计算机方面的热心智能助手,你叫Angindem智能AI助手,请以Angindem智能AI助手的身份回答用户的问题。") // 配置默认系统角色
.defaultAdvisors(new SimpleLoggerAdvisor()) // 配置 日志 Advisor 通知
.build(); // 构建 ChatClient 实例
}

}

4、简单快速入门聊天

阻塞式交互
1
2
3
4
5
6
7
@RequestMapping(value = "/chat",produces = "text/html;charset=utf-8")
public String chat(String prompt) {
return chatClient.prompt()
.user(prompt)
.call()
.content();
}
流式交互
1
2
3
4
5
6
7
@RequestMapping(value = "/chat",produces = "text/html;charset=utf-8")
public Flux<String> chat(String prompt) {
return chatClient.prompt()
.user(prompt)
.stream()
.content();
}

会话日志

SpringAI利用AOP原理提供了AI会话时的拦截、增强等功能,也就是Advisor。

配置config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CommonConfiguration {

@Bean
public ChatClient chatClient(OllamaChatModel model) {
return ChatClient.builder(model) // 创建 ChatClient 工厂实例
.defaultSystem("你是一位精通计算机方面的热心智能助手,你叫Angindem智能AI助手,请以Angindem智能AI助手的身份回答用户的问题。") // 配置默认系统角色
.defaultAdvisors(new SimpleLoggerAdvisor()) // 配置 日志 Advisor 通知
.build(); // 构建 ChatClient 实例
}

}

yaml配置

1
2
3
4
5
logging:
level:
org.springframework.ai.chat.client.advisor: debug # debug 打印指定的依赖包日志
com.angindem.ai: debug # debug 打印 指定业务包 日志
# ...... debug 哪个包日志就添加哪个

效果

会话记忆


觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭

微信二维码

wechat pay

支付宝二维码

ali pay

SpringAI学习deepseek模型
http://blog.angindem.cn/2026/03/04/Angindem-CSDN博客/198_198/
作者
Angindem
发布于
2026年3月4日
许可协议