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

【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进行大模型调用的功能

相关文章:

  • 大数据治理自动化与智能化实践指南:架构、工具与实战方案(含代码)
  • 一种动态分配内存错误的解决办法
  • 蓝桥杯 序列计数
  • nginx 代理时怎么更改 Remote Address 请求头
  • 单片机-89C51部分:11、IIC 、传感器温湿度
  • 机器手电机驱动器小体积解决方案
  • mybatis-plus 枚举实现模版,导入,导出
  • Spring AI应用系列——基于ARK实现多模态模型应用
  • OpenHarmony - 小型系统内核(LiteOS-A)(十七)标准库
  • 游戏性能测试
  • 【Linux庖丁解牛】—环境变量!
  • C#规避内存泄漏的编码方法
  • 嵌入式软件--stm32 DAY 5 USART串口通讯(上)
  • linux中sigint和sigterm的区别
  • CSS:选择器-基本选择器
  • 虚实结合赋能嵌入式教育:基于嵌入式仿真实验教学平台的智能门禁系统实验深度解析
  • 通义灵码全面接入Qwen3:AI编程进入智能体时代,PAI云上部署实战解析
  • 文章记单词 | 第51篇(六级)
  • CKESC STONE 80A-L 电调专业测评
  • VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧
  • 2025五一档新片电影总票房破亿
  • 北京亦庄启动青年人才创新创业生态示范区
  • 擦亮“世界美食之都”金字招牌,淮安的努力不止于餐桌
  • 事关广大农民利益,农村集体经济组织法5月1日起施行
  • 住房和城乡建设部办公厅主任李晓龙已任部总工程师
  • 东风着陆场近日气象条件满足神舟十九号安全返回要求