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

Spring AI 系列之十九 - Ollama集成Deepseek

之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说真是一个福音,其功能已经能满足基于大模型开发企业级应用。借着这次机会,给大家分享一下Spring AI框架。

注意由于框架不同版本改造会有些使用的不同,因此本次系列中使用基本框架是 Spring AI-1.0.0,JDK版本使用的是19
代码参考: https://github.com/forever1986/springai-study

目录

  • 1 Ollama
  • 2 示例演示
    • 2.1 部署机器准备(可选)
    • 2.2 Ollama的安装
    • 2.3 开放AutoDL端口(可选)
    • 2.4 代码
    • 2.5 演示效果

前两章对ChatClient和ChatModel进行了源码分析,了解了Spring AI底层对聊天大模型的实现。在Spring AI中对聊天大模型的支持还是比较广泛的,下面是来自《官方文档》目前为止支持的大模型如下:

在这里插入图片描述

上面很多都是直接使用其厂商的云端服务即可,但是对于大多数用户来说,如果聊天大模型想本地部署或者其它云上部署,对于很多大模型开发者来说,可能绕不开以下最常用的2个部署方式:

  • Ollama:使用 Ollama,用户可以本地运行各种大型语言模型(LLMs)并从它们生成文本。Spring AI 通过 OllamaChatModel API 支持 Ollama 的聊天完成功能。
  • HuggingFace:Hugging Face 的TGI是一种专为在云端部署大型语言模型(LLM)而设计的解决方案,它通过 API 使这些模型得以被访问使用。TGI 通过诸如连续批处理、令牌流式传输和高效内存管理等特性,为文本生成任务提供了优化的性能表现。如果说Ollama是解决部署各类大模型的本地方案,那么Hugging Face 的TGI就是解决部署各种大模型的云端方案。Spring AI 通过 HuggingfaceChatModel API 支持 Hugging Face 的TGI部署的的聊天大模型。

接下来2章将讲述如何部署以及Spring AI如何访问Ollama和HuggingFace,本章从Ollama开始。

1 Ollama

如果部署过大模型的朋友,应该知道大模型部署比较麻烦,更何况要使用不同大模型,其API接口也有些小差异。这时候就有人想着要是能一键部署就好了,这时候Ollama就出现了。
Ollama 是一个强大的本地推理大模型平台,旨在简化模型的本地部署、管理和推理工作流。它允许用户在本地机器上拉取、管理、运行大模型,并提供多种访问方式,包括本地 CLI、HTTP 接口以及通过 OpenAI 客户端的集成。这篇文章将详细介绍 Ollama 的功能,如何使用 Ollama 拉取模型、运行模型,并通过多种方式访问推理服务。
简单理解,它就是一个大模型的安装工具,可以安装各类大模型,并且适合于各种平台Windows、Linux、MacOS、Docker等等。因此它就变成越来越受欢迎,因此它能部署的大模型也就越来越多。这一点上,Spring AI 也是有一样的目的,就是让用户使用起来方便,这样很多大模型都会提供Spring AI的插件,这样用户就不用担心模型迁移的事情。

2 示例演示

示例说明:本次演示通过Ollama部署deepseek-r1:7b模型,并通过Spring AI客户端进行访问

2.1 部署机器准备(可选)

说明:由于本人比较穷,没有很好的显卡,因此在网上租了一台,在AutoDL上面租赁的。如果自己机子的,可以自己安装,不用参考这一部分

1)在AutoDL申请一台机子,显卡3090即可

在这里插入图片描述

2)其镜像选择ubuntu22.04即可

在这里插入图片描述

3)通过Web界面JupyterLab工具访问
在这里插入图片描述

2.2 Ollama的安装

1)执行以下命令安装Ollama

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

在这里插入图片描述

2)安装成功之后,启动Ollama(注意:这里设置端口

export OLLAMA_HOST="0.0.0.0:6006"
ollama serve

在这里插入图片描述

说明:这里增加一个临时变量配置,将ollama的HOST设为0.0.0.0是允许外部访问。端口设置为6006是因为AutoDL只提供6006端口对外访问(如果你这边是自己本地机子,可以不用设置该变量)

3)下载deepseek-r1:7b模型

export OLLAMA_HOST="0.0.0.0:6006"
ollama run deepseek-r1:7b

在这里插入图片描述

下载完成
在这里插入图片描述

2.3 开放AutoDL端口(可选)

说明:该步骤是因为我使用了远程机子AutoDL,而AutoDL只开放6006端口,如果你使用自己的机子,可以跳过这一步

1)本地设置可以访问AutoDL服务器的6006端口

参考视频:AutoDL暴露6006端口教程
在这里插入图片描述

在这里插入图片描述

2)访问:http://localhost:6006
在这里插入图片描述

说明:当你在本地使用:http://localhost:6006 访问到即说明本地已经和AutoDL打通了6006端口

2.4 代码

1)新建lesson16子模块

2)在lesson16子模块下,新建ollama子模块,其pom引入如下:

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

3)新建application.properties配置文件

# Ollama配置 这个url是Ollama服务器地址
spring.ai.ollama.base-url=http://localhost:6006
spring.ai.ollama.chat.options.model=deepseek-r1:7b
spring.ai.ollama.chat.options.temperature=0.7

4)新建OllamaController演示类

import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OllamaController {private final OllamaChatModel chatModel;@Autowiredpublic OllamaController(OllamaChatModel chatModel) {this.chatModel = chatModel;}@GetMapping("/ai/generate")public String generate(@RequestParam(value = "message", defaultValue = "你是谁?") String message) {return this.chatModel.call(message);}}

5)新建启动类Lesson23OllamaApplication :

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Lesson23OllamaApplication {public static void main(String[] args) {SpringApplication.run(Lesson23OllamaApplication.class, args);}
}

2.5 演示效果

http://localhost:8080/ai/generate

在这里插入图片描述

结语:本章演示了如何使用Ollama部署大模型,并通过Spring AI进行访问。Ollama通过统一规范,让不同厂商的大模型统一化,这个对后续应用非常友好,因此现在很多人都喜欢使用该方式部署大模型,因此了解Ollama以及Spring AI 如何使用非常重要。下一章继续讨论如何使用huggingface部署大模型。

Spring AI系列上一章:《Spring AI 系列之十八 - ChatModel》
Spring AI系列下一章:《Spring AI 系列之二十 - Hugging Face 集成》

http://www.dtcms.com/a/293068.html

相关文章:

  • 配置https ssl证书生成
  • 数字护网:一次深刻的企业安全体系灵魂演练
  • 接口测试用例选择及效能优化策略
  • vcs门级仿真(后仿真)指南
  • 如何处理各行业的DDOS问题?
  • VUE2 学习笔记3 v-on、事件修饰符、键盘事件
  • JAVA后端面试笔记
  • 前端性能优化:从“龟速“到“闪电“的终极加速指南
  • c++day05(ASCII)
  • Git GitHub精通:前端协作开发的“瑞士军刀“!
  • 字符串相关函数
  • visual studio 性能调试
  • 大数据之Hive:Hive中week相关的几个函数
  • 【Java】SVN 版本控制软件的快速安装(可视化)
  • Qt中的栅格布局的核心机制与栅格布局中的元素隐藏后重新排列布局解决方案解析
  • 基于CH32V203F8P6 interface_debug_print支持浮点格式输出
  • 模型优化-------模型压缩
  • Python之格式化Conda中生成的requirements.txt
  • timesFM安装记录
  • JavaWeb学习打卡10(HttpServletRequest详解应用、获取参数,请求转发实例)
  • PyTorch常用工具
  • 我的第一个开源项目 -- 实时语音识别工具
  • C++中的list(2)简单复现list中的关键逻辑
  • 水电站自动化升级:Modbus TCP与DeviceNet的跨协议协同应用
  • CMake实践:CMake3.30版本之前和之后链接boost的方式差异
  • 渗透部分总结
  • 从 COLMAP 到 3D Gaussian Splatting
  • vue2的scoped 原理
  • Flex/Bison(腾讯元宝)
  • 开源AI智能客服、AI智能名片与S2B2C商城小程序在客户复购与转介绍中的协同效应研究