Spring AI + Ollama 实现 DeepSeek-R1 API 服务和调用

随着大语言模型的快速发展,越来越多的开发者开始探索如何将这些强大的推理模型本地化运行。DeepSeek-R1,作为一款性能卓越的开源AI模型,以其低成本和出色的推理能力在技术圈内引起了广泛关注。本文将详细介绍如何使用Ollama部署DeepSeek-R1,并结合Spring Boot与Spring AI实现API服务调用,帮助开发者在本地化环境下实现高效的AI服务。

1. DeepSeek-R1 简介及亮点

DeepSeek-R1 是一款开源的AI语言模型,凭借其出色的推理能力和强大的性能,在科技界引起了广泛的关注。它的性能甚至在某些任务上超越了OpenAI的GPT-4等业内领先的语言模型。与其他大型语言模型不同,DeepSeek-R1的最大亮点是它支持本地部署。这意味着用户不仅可以在自己的计算环境中运行模型,还能更好地保护隐私,确保数据不被外部服务访问。

DeepSeek-R1的开源特性使得开发者能够对其进行定制和优化,以满足特定的应用需求。而且,DeepSeek-R1的低成本也使其成为了一个理想的选择,特别适合那些需要高效推理的开发者和小型企业。通过Ollama,DeepSeek-R1可以非常容易地在本地设备上运行,进一步降低了技术门槛。

2. Ollama:运行助手

对于许多用户来说,在普通笔记本电脑或其他本地硬件上运行强大的AI模型通常是一个难题。传统的大模型如GPT-4、BERT等需要强大的计算资源和复杂的部署步骤,这让很多开发者望而却步。Ollama的出现正是为了解决这一问题,它为本地部署大语言模型提供了一种简单、便捷的方法。

Ollama是专门为本地运行大语言模型设计的工具,操作简单且直观,即使是没有深厚技术背景的用户也能够轻松上手。Ollama支持多个平台,包括Windows、macOS和Linux,使得用户能够在不同的操作系统环境下都能方便地运行DeepSeek-R1等模型。通过Ollama,用户能够在个人电脑上实现高效的AI推理,无需依赖云服务,既节省了成本,又能更好地控制数据隐私。

3. 开始操作:环境设置

在实际操作之前,我们需要完成一些基本的环境设置。以下是详细的操作步骤。

步骤1:安装Ollama

首先,用户需要在本地机器上安装Ollama。安装过程非常简单,以下是详细的步骤:

  1. 访问Ollama官网,下载与你操作系统匹配的版本(支持Windows、macOS和Linux)。

  2. 下载完成后,运行安装程序并按照提示完成安装。

对于Linux系统用户,可以通过以下命令进行安装:

curl -fsSL https://ollama.com/install.sh | sh

步骤2:验证Ollama安装

在继续进行后续步骤之前,确保Ollama已成功安装。打开终端或命令提示符,输入以下命令:

ollama --version

如果成功安装,终端会返回Ollama的版本号。如果没有返回版本号,说明安装失败,请检查安装步骤并重试。

步骤3:下载DeepSeek-R1

一旦确认Ollama安装无误,就可以开始下载DeepSeek-R1了。在终端中运行以下命令:

ollama run deepseek-r1

根据你的网络速度,这个过程可能需要一些时间。请耐心等待,直到下载完成。

步骤4:运行DeepSeek-R1

下载完成后,我们可以使用以下命令来启动DeepSeek-R1模型:

ollama run deepseek-r1

此时,DeepSeek-R1就会在本地设备上成功启动,准备为你提供推理服务。

4. 使用 GPU 加速运行 DeepSeek-R1

对于希望在GPU上运行DeepSeek-R1的用户,Ollama提供了GPU加速选项。通过利用NVIDIA或AMD的GPU,用户可以大幅提高推理速度,特别是在使用大规模模型(如DeepSeek-R1的671B版本)时,GPU加速能够显著提升性能。

4.1 配置 NVIDIA GPU

如果你的机器配有NVIDIA显卡,可以通过以下命令来指定要使用的GPU。假设你有四张NVIDIA A10显卡,可以执行以下命令来使用所有的显卡:

export CUDA_VISIBLE_DEVICES=0,1,2,3

如果只有一张GPU,你可以指定为:

export CUDA_VISIBLE_DEVICES=0
4.2 配置 AMD GPU

如果你的设备使用AMD显卡,配置稍有不同。你需要设置HIP_VISIBLE_DEVICES环境变量来指定使用的GPU。例如:

export HIP_VISIBLE_DEVICES=0

通过这种方式,你可以确保Ollama使用GPU加速,从而提升模型的运行效率。

4.3 DeepSeek-R1的硬件要求

根据你选择的DeepSeek-R1模型版本,其硬件配置需求会有所不同。以下是DeepSeek-R1模型的各个版本及其对应的硬件要求:

5. 使用 Spring Boot + Spring AI 调用 DeepSeek-R1

在完成Ollama的安装和DeepSeek-R1的本地部署后,接下来我们可以通过Spring Boot与Spring AI来调用DeepSeek-R1模型,并实现API服务。Spring Boot提供了丰富的功能,能够轻松与Ollama结合,处理来自客户端的请求,并返回模型的推理结果。

5.1 构建 Spring Boot 项目

首先,使用Spring Initializr创建一个Spring Boot项目,并添加Spring AI依赖。确保在pom.xml中包含以下依赖项:

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

5.2 配置 Ollama

在Spring Boot的application.properties文件中,配置Ollama的服务地址和要调用的模型:

spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=deepseek-r1:1.5b
5.3 编写代码调用模型

在Spring Boot项目中,我们可以编写代码来调用DeepSeek-R1模型。以下是一个简单的测试类,演示如何使用Ollama与DeepSeek-R1进行交互:

@SpringBootTest(classes = DemoApplication.class)
public class TestOllama {

@Autowired
private OllamaChatModel ollamaChatModel;

@Test
public void testChatModel() {
String prompt = "请将以下英文翻译成中文:";
String message = "Ollama now supports tool calling with popular models such as Llama 3.1.";

String result = ollamaChatModel.call(prompt + " " + message);
System.out.println(result);
}
}

5.4 测试与结果

运行以上代码,Spring Boot会向Ollama发送请求,并返回DeepSeek-R1生成的翻译结果。例如:

{
"response": "Ollama现在支持使用如Llama 3.1等流行模型进行工具调用。",
"error": null
}

总结

通过结合Ollama与Spring Boot,我们可以在本地环境中快速实现DeepSeek-R1模型的部署与API服务。Ollama简化了大语言模型的本地部署过程,而Spring Boot提供了灵活的API调用方式,让开发者能够方便地集成和使用这些强大的AI模型。希望本文的内容能够帮助你快速掌握DeepSeek-R1的本地部署与API调用,实现高效的AI推理服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 20.04配置网络

1&#xff0c;检查自己网络是否配通。 网络配置成功显示的网络图标 不成功的网络图标 如果看不见网络图标&#xff0c;可以使用ping命令。连接一下百度网。 ping www.baidu.com ping失败的样子 ping成功的样子 2&#xff0c;接下来进入正题&#xff0c;我们开始配置网络。 这…

ElasticSearch入门

目录 1._cat 2.索引一个 document 3.查询document 4.更新document 5.删除document 或 index 6.批量_bulk API 1._cat Get/_cat/nodes 查看所有节点 Get/_cat/indices 查看所有索引&#xff08;indices &#xff1a;index的复数) Get/_cat/master 查看…

java练习(8)

ps:题目来自力扣 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作…

Java常用类

文章目录 包装类(Wrapper)包装类的继承体系装箱和拆箱包装类与String类型的相互转换 String类创建 String 对象的两种方式String 类的常见方法案例演示 StringBuffer类类的继承体系String VS StringBufferStringBuffer构造器String 和 StringBuffer 相互转换StringBuffer 类常见…

算法设计与分析三级项目--管道铺设系统

摘 要 该项目使用c算法逻辑&#xff0c;开发环境为VS2022&#xff0c;旨在通过Prim算法优化建筑物间的连接路径&#xff0c;以支持管线铺设规划。可以读取文本文件中的建筑物名称和距离的信息&#xff0c;并计算出建筑物之间的最短连接路径和总路径长度&#xff0c;同时以利用…

【C语言系列】深入理解指针(5)

深入理解指针&#xff08;5&#xff09; 一、sizeof和strlen的对比1.1sizeof1.2strlen1.3sizeof和strlen的对比 二、数组和指针笔试题解析2.1 一维数组2.2 字符数组2.2.1代码1&#xff1a;2.2.2代码2&#xff1a;2.2.3代码3&#xff1a;2.2.4代码4&#xff1a;2.2.5代码5&#…

设计模式——策略模式

设计模式——策略模式 简单介绍一个例子 策略模式是设计模式里面比较简单的设计模式&#xff0c;其特点简单又实用&#xff0c;并且可以让你的代码看起来高大上&#xff0c;维护代码时还方便扩张 多重条件语句不易维护&#xff0c;而使用策略模式可以避免使用多重条件语句&…

【玩转 Postman 接口测试与开发2_018】第14章:利用 Postman 初探 API 安全测试

《API Testing and Development with Postman》最新第二版封面 文章目录 第十四章 API 安全测试1 OWASP API 安全清单1.1 相关背景1.2 OWASP API 安全清单1.3 认证与授权1.4 破防的对象级授权&#xff08;Broken object-level authorization&#xff09;1.5 破防的属性级授权&a…

MySQL的 MVCC详解

MVCC是多版本并发控制&#xff0c;允许多个事务同时读取和写入数据库&#xff0c;而无需互相等待&#xff0c;从而提高数据库的并发性能。 在 MVCC 中&#xff0c;数据库为每个事务创建一个数据快照。每当数据被修改时&#xff0c;MySQL不会立即覆盖原有数据&#xff0c;而是生…

【Uniapp-Vue3】z-paging插件组件实现触底和下拉加载数据

一、下载z-paing插件 注意下载下载量最多的这个 进入Hbuilder以后点击“确定” 插件的官方文档地址&#xff1a; https://z-paging.zxlee.cn 二、z-paging插件的使用 在文档中向下滑动&#xff0c;会有使用方法。 使用z-paging标签将所有的内容包起来 配置标签中的属性 在s…

UG NX二次开发(Python)-API函数介绍与应用实例(三)-UFLayer类操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1 前言2、UFLayer类说明3、获取当前工作图层4、移动对象到特定的图层1 前言 采用Python语言进行UG NX二次开发的帮助材料很少,采用录制的方法是一种比较容易实现的方式,但是使用UFun函数更容易上…

免费PDF 转换成 Word、PPT、Excel 格式的工具

在当今数字化办公的时代&#xff0c;文件格式的转换需求日益频繁。我们的软件应运而生&#xff0c;它是一款专业的 PDF 转换成 Word、PPT、Excel 格式的工具&#xff0c;为您的办公流程带来极大便利。 下载地址&#xff1a;https://pan.quark.cn/s/8c42ac2e4bf5 核心功能&…

deepseek从网络拓扑图生成说明文字实例

deepseek对话页面中输入问题指令&#xff1a; 我是安全测评工程师&#xff0c;正在撰写系统测评报告&#xff0c;现在需要对系统网络架构进行详细说明&#xff0c;请根据附件网络拓扑图输出详细说明文字。用总分的段落结构&#xff0c;先介绍各网络区域&#xff0c;再介绍网络…

排序算法--希尔排序

希尔排序是插入排序的改进版本&#xff0c;适合中等规模数据排序&#xff0c;性能优于简单插入排序。 // 希尔排序函数 void shellSort(int arr[], int n) {// 初始间隔&#xff08;gap&#xff09;为数组长度的一半&#xff0c;逐步缩小for (int gap n / 2; gap > 0; gap …

【NR-NTN】3GPP Release 18中NR-NTN过程描述

本文参考3GPP规范&#xff1a; 【1】《TS 38.300 V18.4.0 NR; NR and NG-RAN Overall Description; Stage2》 1. 概述 图1展示了一个非地面网络&#xff08;NTN&#xff09;的示例&#xff0c;通过NTN载荷和NTN网关为用户设备&#xff08;UE&#xff09;提供非地面NR接入。图…

python3中错误与异常初识

一. 简介 在 编写 Python时&#xff0c;经常会遇到一些报错信息。接下来开始学习 Python3 中错误和异常。 本文首先初步了解一下 Python3中的错误和异常。 二. python3 中错误与异常初识 Python 中有两种错误&#xff1a;语法错误与异常。 1. 语法错误 Python 的语法错误…

一文解释nn、nn.Module与nn.functional的用法与区别

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;零基础入门PyTorch框架_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 …

“AI隐患识别系统,安全多了道“智能护盾”

家人们&#xff0c;在生活和工作里&#xff0c;咱们都知道安全那可是头等大事。不管是走在马路上&#xff0c;还是在工厂车间忙碌&#xff0c;又或是住在高楼大厦里&#xff0c;身边都可能藏着一些安全隐患。以前&#xff0c;发现这些隐患大多靠咱们的眼睛和经验&#xff0c;可…

口腔扫描仪(口扫)核心算法——点云三维重建

口腔扫描仪&#xff08;口扫&#xff09;的核心算法涉及三维点云获取、配准、去噪、补全及表面重建等多个技术环节&#xff0c;以下从技术原理、关键算法和应用挑战进行详细解析&#xff1a; 1. 数据采集与成像原理 口腔扫描的核心在于快速、高精度获取牙齿与软组织表面几何信…

VLL CCC远程连接实验

1、CE1和CE2的配置 CE1和CE2的配置很简单&#xff0c;只需要在接口E0/0/0上配置ip地址即可&#xff1b; 2、PE1的配置 配置CCC名称为CE1-CE2&#xff0c;将E0/0/1&#xff08;连接CE1&#xff09;作为入接口&#xff0c;入标签为100&#xff0c;出去的时候换成200&#xff0c…