如何用 Spring AI + Ollama 构建生成式 AI 应用

news/2025/7/9 10:59:10/文章来源:https://www.cnblogs.com/didispace/p/18524288

为了构建生成式AI应用,需要完成两个部分:

  • AI大模型服务:有两种方式实现,可以使用大厂的API,也可以自己部署,本文将采用ollama来构建
  • 应用构建:调用AI大模型的能力实现业务逻辑,本文将采用Spring Boot + Spring AI来实现

Ollama安装与使用

进入官网:https://ollama.com/ ,下载、安装、启动 ollama

具体步骤可以参考我之前的这篇文章:手把手教你本地运行Meta最新大模型:Llama3.1

构建 Spring 应用

  1. 通过spring initializr创建Spring Boot应用

  2. 注意右侧选择Spring Web和Spring AI对Ollama的支持依赖

  1. 点击“generate”按钮获取工程

  2. 使用IDEA或者任何你喜欢的工具打开该工程,工程结构如下;

  1. 写个单元测试,尝试在Spring Boot应用里调用本地的ollama服务
@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {@Autowiredprivate OllamaChatModel chatModel;@Testvoid ollamaChat() {ChatResponse response = chatModel.call(new Prompt("Spring Boot适合做什么?",OllamaOptions.builder().withModel(OllamaModel.LLAMA3_1).withTemperature(0.4).build()));System.out.println(response);}}

运行得到如下输出:

ChatResponse [metadata={ id: , usage: { promptTokens: 17, generationTokens: 275, totalTokens: 292 }, rateLimit: org.springframework.ai.chat.metadata.EmptyRateLimit@7b3feb26 }, generations=[Generation[assistantMessage=AssistantMessage [messageType=ASSISTANT, toolCalls=[], textContent=Spring Boot是一个基于Java的快速开发框架,主要用于创建独立的、生产级别的应用程序。它提供了一个简化的配置过程,使得开发者能够快速构建和部署Web应用程序。Spring Boot适合做以下几件事情:1. **快速开发**: Spring Boot提供了一系列的自动配置功能,可以帮助开发者快速创建基本的应用程序,减少手动编写配置代码的时间。
2. **独立运行**: Spring Boot可以作为一个独立的应用程序运行,不需要额外的容器或服务器支持。
3. **生产级别的应用程序**: Spring Boot提供了许多生产级别的特性,例如安全、监控和部署等功能,可以帮助开发者创建高性能、可靠的应用程序。
4. **Web 应用程序**: Spring Boot可以用于创建Web应用程序,包括RESTful API、WebSockets和其他类型的Web应用程序。
5. **微服务架构**: Spring Boot支持微服务架构,允许开发者将一个大型应用程序分解成多个小型服务,每个服务都可以独立运行和部署。总之,Spring Boot是一个强大的框架,可以帮助开发者快速创建、测试和部署生产级别的应用程序。, metadata={messageType=ASSISTANT}], chatGenerationMetadata=ChatGenerationMetadata{finishReason=stop,contentFilterMetadata=null}]]]

上述样例工程打包放公众号了,如果需要的话,关注"程序猿DD",发送关键词spring+ollama获得下载链接。

小结

通过本文的介绍,我们就已经完成了Spring Boot应用与Ollama运行的AI模型之间的对接。剩下的就是与业务逻辑的结合实现,这里读者根据自己的需要去实现即可。

可能存在的一些疑问

  1. 如何使用其他AI模型

通过ollama的 Models 页面,可以找到各种其他模型:

选择你要使用的模型来启动即可。

  1. 如何植入现有应用?

打开上面工程的pom.xml,可以看到主要就下面两个依赖:

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

所以,如果要在现有工程引入的话只要引入spring-ai-ollama-spring-boot-starter依赖就可以了。

好了,今天的分享就到这里。最近较忙,分享较少,感谢持续的关注与支持 _

如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!

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

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

相关文章

MyBatis-Plus条件构造器:构建安全、高效的数据库查询

MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。一、关于条件构造器(Wrapper) 1.1 简介 MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编…

layui表格中格式化日期

//1.引入 util layui.use([table, admin], function () { var util = layui.util;//2.表格内容格式化 {field: staTime, title: 开始时间, width: 120, align: center, templet: function (d) { return util.toDateString(d.staTime, "yyyy-MM-dd") } }});

数据结构 - 图之代码实现

图遍历分为深度优先遍历(DFS)和广度优先遍历(BFS),DFS一直往下走直到没路再返回,BFS先走所有路一步。文章还介绍了以邻接矩阵存储无向图的实现方法,包括定义、初始化、获取点数量等操作。书接上回,我们继续来聊聊图的遍历与实现。01、遍历 在图的基本功能中有个很重要的…

Docker一件安装脚本及代理配置拉取官方镜像

Docker一件安装脚本及代理配置拉取官方镜像当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。欢迎交流学习技术交流,个人微信: "JasonYin2020"(添加时请备注来源及…

深夜观世界赛

S14, Faker他又做到了。 17年的时候, 听身边同学讨论RNG与SKT、全华班、加里奥。那时还是农药+暴雪玩家的我, 还对这个由资本与游戏一起构筑的电竞文化没那么熟悉。难以想象,横跨我入坑之前到退坑之后的十多年,一个选手迈过时代的鸿沟依旧站在世界的顶点。诚然,过程或许可能…

CF1554E You

题面题解 注意a[u]是点u位置的a,不是每选一个点然后把非标记个数丢进vector里( 每选择一个点,相当于把相邻的非标记的边标为外向,最后一个点u的外向边个数就是a[u] 又观察发现每种边定向方案都可以构造(拓扑),所以一共有2^(n-1)种方案 设f[k]表示gcd=k,g[k]表示k|gcd,…

汽车虚拟仿真软件有哪些?行业软件大盘点!

汽车虚拟仿真可以大大提高汽车的研发效率和质量,降低成本和风险,增强汽车的竞争力和创新能力。本文将带领大家了解汽车虚拟仿真软件有哪些、汽车虚拟仿真实际应用以及汽车云交互实时渲染平台三个要点。汽车虚拟仿真是指利用计算机技术,根据汽车的设计、制造、测试、运行等各…

创建和销毁对象(一)

用静态工厂方法代替构造器 为了获得一个类的实例,可以使用公有构造器,也可以提供一个公有的静态工厂方法,他只是一个返回类的实例的静态方法public static Boolean valueOf(boolean b) { //Boolean是bool的一个Java装箱类return b ? Boolean.TRUE : Boolean.FALSE; } 静态…