当前位置: 首页 > news >正文

Spring AI + Ollama 实现调用DeepSeek-R1模型API

一、前言

  随着人工智能技术的飞速发展,大语言模型(LLM)在各个领域的应用越来越广泛。DeepSeek 作为一款备受瞩目的国产大语言模型,凭借其强大的自然语言处理能力和丰富的知识储备,迅速成为业界关注的焦点。无论是文本生成、代码编写,还是智能问答、数据分析,DeepSeek 都展现出了巨大的潜力。

  为了更好地将 DeepSeek 的强大能力赋能到实际项目中,本文将介绍如何利用 Spring AI 和 Ollama 实现 DeepSeek 模型的调用。Spring AI 作为 Spring 生态系统中用于构建 AI 应用的框架,提供了便捷的 API 和丰富的功能,能够帮助我们快速集成各种 AI 模型。而 Ollama 则是一个轻量级的工具,可以方便地在本地运行和管理大型语言模型,为开发者提供了更加灵活和高效的模型部署方案。

  通过本文的学习,您将掌握如何使用 Spring AI 和 Ollama 搭建一个简单的应用,并实现对 DeepSeek 模型的调用,从而为您的项目注入更强大的 AI 能力。

二、Spring AI介绍

  Spring AI 是 Spring 生态系统中的一个新兴项目,旨在为开发者提供一套简单、统一的 API 和工具,以便更轻松地将人工智能(AI)能力集成到 Spring 应用中。随着 AI 技术的快速发展,越来越多的企业希望将大语言模型(LLMs)、机器学习模型和其他 AI 功能融入自己的业务系统。Spring AI 应运而生,为开发者提供了一个标准化的方式来访问和调用各种 AI 模型和服务。

在这里插入图片描述

主要功能:

1.大语言模型(LLMs)集成

支持调用 OpenAI、DeepSeek、Hugging Face 等主流大语言模型。
提供统一的 API 进行文本生成、对话、翻译等任务。

2.向量数据库支持

集成向量数据库(如 Pinecone、Weaviate),用于存储和检索高维向量数据,支持语义搜索和推荐系统。

3.提示词工程(Prompt Engineering)

提供工具和模板,帮助开发者优化与大语言模型的交互,提升模型输出的准确性和相关性。

4.数据预处理和后处理

提供数据清洗、格式化等功能,确保输入数据符合模型要求,并对模型输出进行后处理。

5.可扩展性

支持自定义模型和算法,开发者可以根据需求扩展 Spring AI 的功能。

三、Ollama介绍

  Ollama 是一个轻量级、开源的工具,旨在帮助开发者更轻松地在本地运行和管理大型语言模型(LLMs)。它专注于简化模型的部署和使用流程,使得开发者无需复杂的配置即可快速上手。Ollama 支持多种流行的开源大语言模型(如 LLaMA、Mistral、DeepSeek 等),并提供了简单易用的命令行工具和 API,方便开发者将模型集成到自己的应用中。

  关于Ollama本地部署 DeepSeek 模型,参考我之前的文章 DeepSeek-R1本地部署详细指南: 《DeepSeek-R1本地部署详细指南!(Ollama+Chatbox AI+Open WebUI)》。

一定要先在本地部署 DeepSeek 模型,不然后面项目中无法使用。

四、SpringBoot项目中使用本地DeepSeek模型(代码实战)

整体版本SpringBoot 版本3.4.2 + JDK 17 + Ollama版本1.0.0-M6

1. 依赖引入

在这里插入图片描述

  <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency>

2. 添加配置

spring.ai.ollama.base-url=http://localhost:11434spring.ai.ollama.chat.model=deepseek-r1:14b

3. 调用模型测试

@SpringBootTest(classes = AIdemoApplication.class)
public class OllamaTestDemo {@Autowiredprivate OllamaChatModel ollamaChatModel;@Testpublic void startOllama() {String prompt = "hello";System.out.println("开始。。。");String callResult = ollamaChatModel.call(prompt);System.out.println(callResult);}
}

4. 测试结果

Hello! How can I assist you today?

在这里插入图片描述

5. 在测试一个问题

@SpringBootTest(classes = AIdemoApplication.class)
public class OllamaTestDemo {@Autowiredprivate OllamaChatModel ollamaChatModel;@Testpublic void startOllama() {String prompt = "请将下面的文字翻译成英文:";String message = "今天天气真好。";System.out.println("开始。。。");String callResult = ollamaChatModel.call(prompt + " " + message);System.out.println(callResult);}
}

在这里插入图片描述

五、总结

  Spring AI作为Spring生态系统中的一个重要组成部分,专注于提供人工智能相关的服务和支持,为开发者提供了便捷的开发环境和丰富的功能接口。而Ollama工具则以其强大的大型语言模型(LLMs)支持能力而著称,使得用户能够在本地环境中轻松运行各种LLMs,并享受其带来的高效和安全性。

相关文章:

Spring AI + Ollama 实现调用DeepSeek-R1模型API

一、前言 随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;LLM&#xff09;在各个领域的应用越来越广泛。DeepSeek 作为一款备受瞩目的国产大语言模型&#xff0c;凭借其强大的自然语言处理能力和丰富的知识储备&#xff0c;迅速成为业界关注的焦点。无论是文本生…...

如何在本地和服务器新建Redis用户和密码

文章目录 一. Redis安装二. 新建Redis用户&#xff0c;测试连接2.1 本地数据库2.2 线上数据库2.2.1 安装和配置2.2.2 测试连接 三. 配置四. 分布式 一. Redis安装 Redis安装 可以设置开机自动启动&#xff0c;也可以在去查看系统服务&#xff0c;按[win R]&#xff0c;输入命…...

jmeter接口测试(一)

一、什么是接口测试&#xff1f;为什么要做接口测试&#xff1f; 接口测试&#xff1a;就是测试项目和项目之间&#xff0c;模块和模块之间&#xff0c;组件和组件之间的数据交互和权限鉴定&#xff08;鉴权&#xff09;。 前后端分离&#xff1a;前后端联调。mock模拟&#x…...

Java-11

淘天集团2025届春季校园招聘在线笔试-研发 1。设有一个顺序共享栈storageArray[70]&#xff0c;其中栈X的栈顶指针top1的初值为-1&#xff0c;栈Y的栈顶指针top2的初值为70&#xff0c;通过不断进行入栈操作&#xff0c;直到storageArray数组已满&#xff0c;此时top1 top2 …...

js中常用方法整理

数据类型 typeOf()Number&#xff08;&#xff09;parseInt()parseFloat()- * / %检测数据类型转换为数字转换为整数类型转换为浮点类型非加法的数字运算toString()Boolean()String()转换为字符串&#xff0c;不能转换undefined/null字符串拼接转换为布尔类型转换为字符串、所有…...

umi react+antd 判断渲染消息提示、input搜索、多选按钮组

记得map里返回的每层遍历结构都要带上key&#xff08;图里没加&#xff0c;最近在接手react&#xff0c;熟悉中......

Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器

目录 登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1 介绍2.3.2 生成和校…...

【嵌入式常用工具】Srecord使用

文件格式 -Intel 表示hex格式-Motorola 表示S19格式-BINary 表示bin格式 截取指定地址段 srec_cat input.s19 -Motorola -crop 0x80010000 0x80380000 -output output.s19 -Motorola -address-length4填充指定地址段 srec_cat input.s19 -Motorola -fill 0xFF 0x100 0x200 …...

SwiftUI基础组件之HStack、VStack、ZStack详解

文章目录 引言一、HStack&#xff08;水平堆栈&#xff09;1.1 基本概念1.2 基本创建1.3 常用属性1.3.1 spacing1.3.2 alignment 二、VStack&#xff08;垂直堆栈&#xff09;2.1 基本概念2.2 基本创建2.3 常用属性2.3.1 spacing2.3.2 alignment 三、ZStack&#xff08;深度堆栈…...

第2章 深入理解Thread构造函数

Thread的构造函数。 2.1 线程的命名 在构造一个Thread时可以为其命名。 2.1.1 线程的默认命名 下面构造函数中&#xff0c;并没有为线程命名。 Thread() Thread(Runnable target) Thread(ThreadGroup group, Runnable target)打开源码会看到 public Thread(Runnable targe…...

PLC扫描周期和工作原理

可编程逻辑控制器&#xff08;PLC&#xff09;的运行原理和扫描周期是其实现工业自动化的核心机制。以下从运行原理、扫描周期组成、关键特性及优化方向等方面进行详细阐述&#xff1a; 一、PLC运行原理 PLC采用**循环扫描&#xff08;Cyclic Scan&#xff09;**的工作模式&am…...

玩转Docker | 使用Docker部署本地自托管reference速查表工具

玩转Docker | 使用Docker部署本地自托管reference速查表工具 前言一、Reference介绍Reference简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署reference服务下载镜像创建容器检查容器状态检查服务端口安全设置四、访问reference应用五、测试与…...

MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 2

第02章_MySQL的数据目录 1. MySQL8的主要目录结构 1.1 数据库文件的存放路径 MySQL数据库文件的存放路径&#xff1a;/var/lib/mysql/ MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件&#xff0c;之后在运行过程中产生的数据也都会存储到这个目录下的某些文件…...

跟着 Lua 5.1 官方参考文档学习 Lua (3)

文章目录 2.5 – Expressions2.5.1 – Arithmetic Operators2.5.2 – Relational Operators2.5.3 – Logical Operators2.5.4 – Concatenation2.5.5 – The Length Operator2.5.6 – Precedence2.5.7 – Table Constructors2.5.8 – Function Calls2.5.9 – Function Definiti…...

ORM框架详解:为什么不直接写SQL?

想象一下&#xff0c;你正在开发一个小型的在线书店应用。你需要存储书籍信息、用户数据和订单记录。作为一个初学者&#xff0c;你可能会想&#xff1a;“我已经学会了SQL&#xff0c;为什么还要使用ORM框架呢&#xff1f;直接写SQL语句不是更简单、更直接吗&#xff1f;” 如…...

【Server Components 解析:Next.js 的未来组件模型】

&#x1f6e0;️ Server Components 解析&#xff1a;Next.js 的未来组件模型 本文将用 3000 字 &#xff0c;带你彻底掌握 React Server Components 的核心原理与实战技巧。无论你是刚接触 Next.js 的新手&#xff0c;还是想优化现有项目的老手&#xff0c;这里都有你需要的关…...

2025最新智能优化算法:改进型雪雁算法(Improved Snow Geese Algorithm, ISGA)求解23个经典函数测试集,MATLAB

一、改进型雪雁算法 雪雁算法&#xff08;Snow Geese Algorithm&#xff0c;SGA&#xff09;是2024年提出的一种新型元启发式算法&#xff0c;其灵感来源于雪雁的迁徙行为&#xff0c;特别是它们在迁徙过程中形成的独特“人字形”和“直线”飞行模式。该算法通过模拟雪雁的飞行…...

基于spring boot物流管理系统设计与实现(代码+数据库+LW)

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本次开发一套物流管理系统有管理员和用户…...

HTTP 和RESTful API 基础,答疑

一文搞懂RESTful API - bigsai - 博客园 1. API 路径 开头必须 /&#xff0c;表示绝对路径&#xff0c;不支持 . 或 ..&#xff08;相对路径&#xff09;。API 结尾 / 通常不需要&#xff0c;但部分框架会自动处理 / → 无 /。 ✅ 推荐 GET /api/v1/products # 资源集合…...

【数据挖掘】深度挖掘

【数据挖掘】深度挖掘 目录&#xff1a;1. 减少样本集的数量知识点示例 2. 对噪声比集剪枝知识点示例建立局部树代码示例&#xff08;使用 Python 和 scikit - learn 库构建局部决策树&#xff09;代码解释注意事项 最大超平面定义原理求解方法代码示例&#xff08;使用 Python…...

HarmonyOS APP开发之玩透 postCardAction 的三大通信心法

玩透 postCardAction 的三大通信心法做鸿蒙 UI 开发的兄弟&#xff0c;只要碰过服务卡片&#xff08;Service Widget&#xff09;&#xff0c;多半都经历过这样一种“血压飙升”的时刻&#xff1a;产品经理想要在卡片上做一个简单的按钮交互&#xff0c;你顺手写了个点击事件&a…...

Diffusers库实现AI图像修复与扩展的实战指南

1. 使用Diffusers库进行图像修复与扩展的完整指南在数字图像处理领域&#xff0c;图像修复(Inpainting)和图像扩展(Outpainting)是两项极具实用价值的技术。作为一名长期使用Stable Diffusion的开发者&#xff0c;我发现Hugging Face的Diffusers库为这些任务提供了强大的工具链…...

轮式与足式移动机器人的运动学/动力学约束与控制分析

轮式与足式移动机器人的运动学/动力学约束与控制分析 摘要 移动机器人按移动方式可大致分为轮式机器人、足式机器人与轮足混合式机器人三大类。轮式机器人在平坦地面上具有高速高效率的优势&#xff0c;但因非完整约束导致运动自由度受限&#xff1b;足式机器人能够通过离散落足…...

Go语言变量与数据类型完全指南

概述Go语言以其简洁的类型系统著称&#xff0c;变量声明方式多样&#xff0c;数据类型清晰明了。本文详细介绍Go语言中的变量声明、基本数据类型、类型转换以及可见性规则&#xff0c;帮助读者打下坚实的类型基础。一、变量声明1.1 var 声明标准的变量声明使用 var 关键字&…...

面阵相机 vs 线阵相机:堡盟与大恒相机选型差异全解析 附C++ 实战演示

面阵相机 vs 线阵相机&#xff1a;堡盟与大恒相机选型差异全解析 附C 实战演示面阵 vs 线阵&#xff1a;工业视觉的“广角镜”与“扫描仪”&#x1f50d; 核心差异&#xff1a;一帧 vs 一行面阵相机 (Area Scan)&#xff1a;瞬间的“广角镜”线阵相机 (Line Scan)&#xff1a;连…...

FreeModbus移植避坑指南:如何优雅地处理临界区与事件队列(含FreeRTOS示例)

FreeModbus在RTOS环境下的临界区与事件队列实战解析 当你第一次在FreeRTOS上成功运行FreeModbus时&#xff0c;那种成就感令人难忘。但很快&#xff0c;随着系统复杂度提升&#xff0c;随机崩溃、数据错乱、死锁等问题接踵而至——这几乎是每个嵌入式开发者都会经历的噩梦。不同…...

PTA天梯赛L2-012通关秘籍:手把手教你用C++搞定小顶堆的四种关系判断

PTA天梯赛L2-012通关秘籍&#xff1a;手把手教你用C搞定小顶堆的四种关系判断 在算法竞赛的战场上&#xff0c;堆结构就像瑞士军刀般不可或缺。今天我们要破解的PTA天梯赛L2-012题目&#xff0c;正是考察小顶堆构建与关系判断的经典案例。这道题看似简单&#xff0c;却暗藏多个…...

终极指南:如何使用哔咔漫画下载器快速建立个人漫画图书馆

终极指南&#xff1a;如何使用哔咔漫画下载器快速建立个人漫画图书馆 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器&#xff0c;带图形界面 带收藏夹&#xff0c;已打包exe 下载速度飞快 项目地址: https://gitcode.com/…...

新概念英语第二册36_Across the channel

Lesson 36: Across the channel 横渡海峡Key words and expressions Debbie Hart 黛比哈特set up a world record 创立一个世界纪录train v. 训练anxiously 焦急地intend 打算solid 固体的&#xff0c;硬…...

全网最全的医药数据库挖掘教学专栏,只需要399元,不断更新,欢迎订阅!

当前的医药数据科学和R语言领域&#xff0c;网络上和书籍市面上一大堆资料&#xff0c;表面看起来琳琅满目&#xff0c;价格从几十元的书籍到动辄几千元一次的线下培训班都有。但绝大多数培训或书籍都受限于时间和篇幅&#xff0c;浅尝辄止&#xff0c;很多仅仅是基础入门&…...