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

【Spring AI】Java结合ollama实现大模型调用

在较新的Java版本中,编译器已经支持了接入各种AI模型工具进行开发,这篇文章我会介绍如何利用Spring AI进行大模型的调用的基础方法。

环境准备

由于这篇文章是结合ollama进行演示,所以在开始前需要先安装ollama服务,这个的具体步骤我在之前的文章中也详细的介绍过了 ollama部署大模型以及连续分片调用的实现_ollama 调用大模型-CSDN博客

由于兼容性的问题,目前支持Spring AI的最低编译器版本为17,更低的编译器可能会出现兼容性问题,所以首先要准备jdk17+的版本。这个在idea中可以一键下载

Spring的版本需要为3.x

操作步骤

1.创建项目

依赖地址选择Spring官方地址(阿里云镜像Spring版本过低,无法支持Spring AI)

创建为maven项目,jdk选择17以上的版本

 点击下一步

选择Web下的Spring Web和AI下的ollama

点击创建

 在pom文件中可以看到已经自动添加了ollama的依赖

 <!--ollama--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-ollama</artifactId></dependency>

2.添加配置信息

在默认的application.properties配置文件中添加如下信息

# ollama服务上模型的名称
spring.ai.ollama.chat.model= huanhuan_deepseek_r1:1.5b
# ollama服务的地址(默认地址http://127.0.0.1:11434)
spring.ai.ollama.base-url= http://127.0.0.1:11434

要选择ollama上已经拉取的模型名称,我指定的模型是我自己训练后的模型,同样想要该效果的可以参考我之前的文章 LLaMA-Factory部署以及大模型的训练(细节+新手向)-CSDN博客 

和  LLaMA-Factory微调后模型导入ollama-CSDN博客

3.创建接口

在根路径下创建一个Controller,标记为RestController,指定访问入口为"/ai"。注入chatClient,注意这个对象需要通过构造器注入

@RestController
@RequestMapping("/ai")
public class AiController {ChatClient chatClient;//需要构造器注入public AiController(ChatClient.Builder chatClient) {this.chatClient = chatClient.build();}}

在其中添加这个方法

 @RequestMapping("/chat")public String chat(String prompt){//构建提示词->用户提示词->调用模型->取出响应return chatClient.prompt().user(prompt).call().content();}

这是一个链式处理,该方法的作用是使用chatClient构建提示词中的用户提示词,将传入的字符串作为用户提示词,并使用call()方法请求大模型,最终取出响应中的content内容返回。

5.测试结果

启动Springboot项目,在浏览器访问

http://localhost:8080/ai/chat?prompt=%E4%BD%A0%E5%A5%BD

由于是一个简单示例,并没有编写详细的前端页面,所以直接通过url构建请求

效果如下

 由此实现了一个简单的Spring AI使用ollama进行大模型调用的功能

http://www.xdnf.cn/news/3292.html

相关文章:

  • Java对集合进行操作,赋值新字段
  • 微前端统一状态树实现方案
  • 傅里叶与相位偏移
  • Python实例题:Python实现简易局域网视频聊天工具
  • 日记 - 2025.4.30 四月计划回顾、五月计划安排
  • Python10天突击-字符串输出
  • 【NumPy完全指南】从基础操作到高性能计算实战
  • LeetCode路径总和系列问题解析:I、II、III的解决方案与优化
  • 深入剖析ELT与ETL的区别
  • 3.5/Q1,GBD最新文章解读
  • (即插即用模块-特征处理部分) 四十五、(2024 TGRS) SFF 浅层特征融合模块
  • 远程 Debugger 多用户环境下的用户隔离实践
  • 12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档)
  • malloc的实现原理
  • [Android 15] 在GlobalActionsDialog 中新增项目
  • 业务部绩效考核关键指标与数据分析
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十讲)
  • 第六部分:实战项目与拓展
  • Windows下Dify安装及使用
  • 【AI提示词】SWOT分析师
  • Qt快速上手:QSettings高效配置读写实战指南
  • 解锁Windows异步黑科技:IOCP从入门到精通
  • 基于SpringBoot的母婴商城系统设计与实现(附源码+PPT+论文)
  • 电脑重复图片太多?推荐一款开源的图片去重工具ImageContrastTools
  • 你的Java项目经历,是金子还是沙子?
  • 快充诱骗协议芯片的工作原理及应用场景
  • 可视化网页自动化流程管理工具
  • 混合开发与平台集成:自定义插件开发
  • 【C++QT】Combo Box 组合框控件详解
  • intellij idea最新版git开启Local Changes