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 电脑配置选择配置相应的模型。

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

运行
就可以查看到自己安装的模型。
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:
|
请求参数:
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) .defaultSystem("你是一位精通计算机方面的热心智能助手,你叫Angindem智能AI助手,请以Angindem智能AI助手的身份回答用户的问题。") .defaultAdvisors(new SimpleLoggerAdvisor()) .build(); } }
|
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) .defaultSystem("你是一位精通计算机方面的热心智能助手,你叫Angindem智能AI助手,请以Angindem智能AI助手的身份回答用户的问题。") .defaultAdvisors(new SimpleLoggerAdvisor()) .build(); } }
|
yaml配置
1 2 3 4 5
| logging: level: org.springframework.ai.chat.client.advisor: debug # debug 打印指定的依赖包日志 com.angindem.ai: debug # debug 打印 指定业务包 日志 # ...... debug 哪个包日志就添加哪个
|
效果

会话记忆