使用 Spring AI + Ollama 构建生成式 AI 应用的方法

 更新时间:2024年11月04日 08:56:57   作者:程序猿DD  
通过集成SpringBoot和Ollama,本文详细介绍了如何构建生成式AI应用,首先,介绍了AI大模型服务的两种实现方式,选择使用ollama进行部署,随后,通过SpringBoot+SpringAI来实现应用构建,本文为开发者提供了一个实用的指南,帮助他们快速入门生成式AI应用的开发

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

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

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

参考资料

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

构建 Spring 应用

通过spring initializr创建Spring Boot应用

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

点击“generate”按钮获取工程

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

写个单元测试,尝试在Spring Boot应用里调用本地的ollama服务

@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {
    @Autowired
    private OllamaChatModel chatModel;
    @Test
    void 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模型之间的对接。剩下的就是与业务逻辑的结合实现,这里读者根据自己的需要去实现即可。

可能存在的一些疑问

如何使用其他AI模型

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

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

如何植入现有应用?

打开上面工程的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依赖就可以了。

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

到此这篇关于如何用 Spring AI + Ollama 构建生成式 AI 应用的文章就介绍到这了,更多相关Spring AI  Ollama 构建生成式 AI 应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现文件复制及文件夹复制几种常用的方式

    Java实现文件复制及文件夹复制几种常用的方式

    这篇文章主要给大家介绍了关于Java实现文件复制及文件夹复制几种常用的方式,java复制文件的方式其实有不少种,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • SpringCloud及Nacos服务注册IP选择问题解决方法

    SpringCloud及Nacos服务注册IP选择问题解决方法

    这篇文章主要介绍了SpringCloud及Nacos服务注册IP选择问题,为什么注册的IP和真实IP不符合呢,原因是Nacos客户端在注册服务时会从机器网卡中选择一个IP来注册,所以,当注册了的是非真实IP后,另一台机器调用时是不可能调通的,知道问题原因就是解决方法,一起看看吧
    2024-01-01
  • Java读文件修改默认换行符的实现

    Java读文件修改默认换行符的实现

    这篇文章主要介绍了Java读文件修改默认换行符的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring+SpringMVC配置事务管理无效原因及解决办法详解

    Spring+SpringMVC配置事务管理无效原因及解决办法详解

    这篇文章主要介绍了Spring+SpringMVC配置事务管理无效原因及解决办法详解,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • Spring事务传播行为问题解决

    Spring事务传播行为问题解决

    这篇文章主要介绍了Spring事务传播行为问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Spring MVC各种参数进行封装的方法实例

    Spring MVC各种参数进行封装的方法实例

    这篇文章主要给大家介绍了关于Spring MVC各种参数进行封装的相关资料,SpringMVC内置多种数据类型转换器,可以根据请求中的参数与后端控制器方法的参数的关系为我们实现简单的数据封装,需要的朋友可以参考下
    2023-06-06
  • SpringBoot多数据源配置完整指南

    SpringBoot多数据源配置完整指南

    在复杂的企业应用中,经常需要连接多个数据库,Spring Boot 提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下
    2025-04-04
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 浅析Java集合及LIst接口

    浅析Java集合及LIst接口

    这篇文章主要介绍了Java集合及LIst接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • gradle安装配置以及使用最新方法

    gradle安装配置以及使用最新方法

    这篇文章主要给大家介绍了关于gradle安装配置以及使用的相关资料,Gradle是一个基于ApacheAnt和ApacheMaven概念的项目自动化构建开源工具,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论