兄弟们,今天咱来聊聊一个超有意思的技术组合 ——Spring AI + Ollama 实现 deepseek - r1 的 API 服务和调用。咱都知道,人工智能这几年那可是火得一塌糊涂,各种大模型你方唱罢我登场。deepseek - r1 就是其中一个挺厉害的模型,那怎么把它用起来,让它为咱们的项目服务呢?这就轮到 Spring AI 和 Ollama 闪亮登场啦!
一、啥是 Spring AI、Ollama 和 deepseek - r1
(一)Spring AI
Spring AI 呢,它就像是一个超级助手,专门为咱们开发人工智能应用提供各种便利。它基于咱们熟悉的 Spring 框架,有一套现成的工具和组件,能让咱快速搭建起人工智能相关的功能。比如说,它能帮咱们轻松地集成各种大模型,管理模型的调用,处理输入输出啥的,就像给咱们的项目装上了一个智能引擎,让开发 AI 应用变得简单又高效。
(二)Ollama
Ollama 又是什么呢?它是一个运行和管理大语言模型的平台。它的好处就在于,咱们不用费老大劲去自己部署和管理模型了,Ollama 帮咱们把这些麻烦事都搞定。它支持好多主流的大模型,而且提供了简单易用的 API,咱们可以通过这些 API 很方便地和模型进行交互,让模型给咱们干活。
(三)deepseek - r1
deepseek - r1 可是个实力派选手,它是一个功能强大的大模型,在自然语言处理方面表现相当出色。能帮咱们做文本生成、问答系统、智能客服等等好多实用的功能。今天咱就来看看怎么把它和 Spring AI、Ollama 一起搭配,发挥出最大的威力。
二、准备工作
在开始动手之前,咱得先把环境搭好。首先,你得确保你的开发环境里有 Java。要是没有的话,赶紧去下载安装一个,现在 Java 最新版都挺好用的,安装过程也不难,按照提示一步一步来就行。
然后呢,咱们得安装 Maven。Maven 是干啥的呢?它就像是一个大管家,帮咱们管理项目里用到的各种依赖。比如说,咱们要用 Spring AI 和 Ollama,就可以通过 Maven 很方便地把它们加到咱们的项目里。安装 Maven 也很简单,去 Maven 的官网下载安装包,解压之后配置一下环境变量就搞定啦。
接下来,咱们还得安装 Ollama。Ollama 的安装也不复杂,它支持好几种操作系统。你可以去 Ollama 的官网,按照它给的安装指南,根据你自己的操作系统来安装。安装好之后,启动 Ollama,确保它在正常运行。
三、创建 Spring Boot 项目
环境搭好之后,咱就可以开始创建 Spring Boot 项目啦。打开你喜欢的 IDE,比如说 IntelliJ IDEA 或者 Eclipse。在 IDE 里创建一个新的 Spring Boot 项目,这里选择 Maven 项目,然后在项目的pom.xml文件里添加 Spring AI 和 Ollama 相关的依赖。
复制<dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Spring AI --> <dependency> <groupId>io.micronaut.ai</groupId> <artifactId>micronaut-ai-openai</artifactId> <version>1.0.0</version> </dependency> <!-- Ollama --> <dependency> <groupId>com.github.jillesvangurp</groupId> <artifactId>ollama-java</artifactId> <version>0.1.0</version> </dependency> </dependencies>
这些依赖就是咱们项目的 “弹药库”,有了它们,咱们才能在项目里使用 Spring AI 和 Ollama 的各种功能。添加好依赖之后,Maven 会自动帮咱们下载这些依赖包,耐心等一会儿就行。
四、配置 Ollama 客户端
接下来,咱们得配置一下 Ollama 客户端,这样咱们的 Spring Boot 项目才能和 Ollama 进行通信。在 Spring Boot 项目的src/main/resources目录下创建一个application.properties文件,然后在里面添加 Ollama 的配置信息。
复制ollama.url=http://localhost:11434 ollama.url=http://localhost:11434
这里咱们假设 Ollama 运行在本地,端口是 11434,要是你安装的时候改了端口,记得把这里的端口号也改成你自己的。
五、编写代码调用 deepseek - r1
配置好之后,就到了最关键的部分啦,编写代码来调用 deepseek - r1。咱们先创建一个 Java 类,比如说叫OllamaService,在这个类里编写调用 Ollama 和 deepseek - r1 的方法。
复制import com.github.jillesvangurp.ollama.OllamaClient; import com.github.jillesvangurp.ollama.api.ChatCompletionRequest; import com.github.jillesvangurp.ollama.api.ChatCompletionResponse; import com.github.jillesvangurp.ollama.api.Message; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.ArrayList; import java.util.List; @Service publicclass OllamaService { @Value("${ollama.url}") privateString ollamaUrl; publicString generateText(String prompt) { OllamaClient client = new OllamaClient(ollamaUrl); List<Message> messages = new ArrayList<>(); messages.add(new Message("user", prompt)); ChatCompletionRequest request = new ChatCompletionRequest("deepseek - r1", messages); ChatCompletionResponse response = null; try { response = client.createChatCompletion(request); } catch (IOException e) { e.printStackTrace(); } assert response != null; return response.getChoices().get(0).getMessage().getContent(); } }
在这段代码里,咱们首先创建了一个OllamaClient对象,用来和 Ollama 进行通信。然后创建了一个ChatCompletionRequest对象,这里指定使用deepseek - r1模型,并且把用户的输入(也就是prompt)作为一条消息传进去。接着通过OllamaClient发送这个请求,得到ChatCompletionResponse,最后从响应里取出模型生成的文本返回。
六、在 Controller 中使用服务
代码写好了,怎么让它跑起来呢?咱们还得创建一个 Controller,在 Controller 里调用这个OllamaService。创建一个OllamaController类。
复制import org.springframework.beans.factory.annotation.Autowired; importorg.springframework.web.bind.annotation.GetMapping; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.bind.annotation.RestController; @RestController public class OllamaController { @Autowired private OllamaService ollamaService; @GetMapping("/generate") public String generateText(@RequestParam String prompt) { returnollamaService.generateText(prompt); } }
在这个 Controller 里,咱们通过@Autowired注解把OllamaService注入进来,然后创建了一个/generate的接口,当用户访问这个接口并且传入一个prompt参数的时候,就会调用OllamaService的generateText方法,返回模型生成的文本。
七、测试一下
现在,咱们的项目基本上就大功告成啦!启动 Spring Boot 项目,等项目启动成功之后,打开浏览器,输入http://localhost:8080/generate?prompt=你好,给我讲一个笑话(这里假设你的 Spring Boot 项目端口是 8080)。然后回车,稍等一会儿,你就能看到浏览器里返回了一段由 deepseek - r1 模型生成的笑话。
怎么样,是不是挺简单的?通过 Spring AI 和 Ollama,咱们轻轻松松就实现了对 deepseek - r1 模型的 API 服务和调用。当然啦,这只是一个简单的示例,在实际项目中,你可以根据自己的需求对代码进行扩展和优化,比如说增加更多的参数配置,处理更复杂的输入输出等等。
好啦,今天关于 Spring AI + Ollama 实现 deepseek - r1 的 API 服务和调用就讲到这里啦。