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

news/2025/2/23 4:01:20

一、前言

  随着人工智能技术的飞速发展,大语言模型(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:11434

spring.ai.ollama.chat.model=deepseek-r1:14b

3. 调用模型测试

@SpringBootTest(classes = AIdemoApplication.class)
public class OllamaTestDemo {

    @Autowired
    private OllamaChatModel ollamaChatModel;

    @Test
    public 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 {

    @Autowired
    private OllamaChatModel ollamaChatModel;

    @Test
    public 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,并享受其带来的高效和安全性。


http://www.niftyadmin.cn/n/5862947.html

相关文章

大数据SQL调优专题——引擎优化

引入 通过前面对目前大数据领域常见数据处理技术执行原理的梳理&#xff0c;我们会发现一条SQL语句&#xff0c;想要最终转换成集群可执行的物理计划&#xff0c;通常会经过如下图所示的一系列过程&#xff1a; 通常这些数据处理技术都会抽象一个执行器&#xff08;Driver&…

docker的mysql容器修改数据库root的登录密码后,navicat依然能用旧密码访问

1. docker进入mysql。 2.修改及查看账户。 USE mysql; SELECT User, Host, plugin FROM user WHERE User root; 3. 更新账户密码。 -- 更新 rootlocalhost 密码 ALTER USER rootlocalhost IDENTIFIED WITH caching_sha2_password BY 新密码; -- 更新 root% 密码&#xff…

模拟实现分布式文件存储

Q1:如何解决海量数据存的下的问题 传统做法是在单机存储。但是随着数据变多&#xff0c;会遇到存储瓶颈。 单机纵向扩展&#xff1a;内存不够加内存&#xff0c;磁盘不够加磁盘。有上限限制&#xff0c;不能无限制加下去。 多机横向扩展&#xff1a;采用多台机器存储&#x…

Vue 3 生命周期和生命周期函数

Vue.js 是一个用于构建用户界面的渐进式框架。随着 Vue 3 的发布&#xff0c;它引入了许多新的功能和改进&#xff0c;包括更灵活和性能更高的生命周期管理。在这份文档中&#xff0c;我们将详细介绍 Vue 3 的生命周期和相关生命周期函数。 一、生命周期概述 Vue 实例在其生命…

Python 入门教程(2)搭建环境 | 2.3、VSCode配置Python开发环境

文章目录 一、VSCode配置Python开发环境1、软件安装2、安装Python插件3、配置Python环境4、包管理5、调试程序 前言 Visual Studio Code&#xff08;简称VSCode&#xff09;以其强大的功能和灵活的扩展性&#xff0c;成为了许多开发者的首选。本文将详细介绍如何在VSCode中配置…

同程旅行对象存储实践:架构演进与未来展望

在数字化转型的浪潮中&#xff0c;同程旅行作为旅游行业的佼佼者&#xff0c;面临着海量数据存储与管理的挑战。为了应对这一挑战&#xff0c;同程旅行研发中心架构师周祝群及其团队开展了一系列对象存储实践&#xff0c;旨在构建一个可扩展、高可用、高性能且低成本的存储解决…

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑫】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase12 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月18日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-012测试用例 用例ID测试场景验证要点参考条款预期结果TC…

Linux、Docker、Redis常见面试题

1. Linux 什么是Linux&#xff1f; Linux是一种基于UNIX的操作系统&#xff0c;最初是由Linus Torvalds引入的。它基于Linux内核&#xff0c;可以运行在由Intel&#xff0c;MIPS&#xff0c;HP&#xff0c;IBM&#xff0c;SPARC和Motorola制造的不同硬件平台上。Linux中另一个…