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

【Spring AI】 1接入 Ollama实践

Spring AI 接入 Ollama 实践学习笔记

  • Ollama 官方文档
  • Spring AI 快速开始
  • Spring AI Ollama 集成文档

1. pom.xml 依赖配置

前置条件: 请确保你已安装好 Java 17+、Maven、Ollama,并已下载好所需大模型。

pom.xml 中添加 Spring AI 及 Ollama 相关依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
<!-- 数据库相关依赖 -->
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2. application.yml 基础配置

注意: 你必须在 yml 中指定 Ollama 的 base-url 和模型名称,否则后续无法正常调用。

spring:ai:ollama:base-url: http://localhost:11434 # Ollama 服务地址chat:options:model: deepseek-r1:7b  # 必须指定模型名!temperature: 0.7datasource:url: jdbc:mysql://localhost:3306/yourdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: yourpassworddriver-class-name: com.mysql.cj.jdbc.Driver

ollama的所有配置选项参考文档
https://www.spring-doc.cn/spring-ai/1.0.0/api_chat_ollama-chat.html


3. Ollama 基础模型调用

前置条件: 你已完成 yml 配置,且 Ollama 服务和模型已启动。

// 查看已安装模型  
ollama list // 运行指定模型
ollama run 模型名称

最基础的 AI 聊天接口实现:

@Autowired
private OllamaChatModel chatModel;@GetMapping("/chat/ai/generate")
public RestVO<String> generate(@RequestParam String message) {return RestVO.success(this.chatModel.call(message));
}

4. 流式对话接口实现

通过 text/event-stream 实现流式输出,提升用户体验:

@GetMapping(value = "/chat/ai/generateStream", produces = "text/event-stream;charset=UTF-8")
public Flux<ChatResponse> generateStream(@RequestParam String message) {List<Message> messageList = List.of(new UserMessage(message), new SystemMessage("中文回答"));Prompt prompt = new Promp
http://www.lqws.cn/news/586855.html

相关文章:

  • 周赛98补题
  • C/C++ 使用rapidjson库 操作Json格式文件(创建、插入、解析、修改、删除)
  • 【数论 构造】 P11036 【MX-X3-T3】「RiOI-4」GCD 与 LCM 问题|普及+
  • 高效读取文件中指定行段的两种方法
  • mysql运维语句
  • C++ Vector的使用(下)
  • Qt Hello World 程序
  • ES6从入门到精通:箭头函数
  • C++ Vector的使用(上)
  • Linux基础环境开发工具apt、vim和gcc/g++
  • Excel 中拖动公式时,如何让引用的单元格“固定”或“变动”?
  • Vue3——项目配置eslint+prettier
  • Instruct-GPT奖励模型的损失函数与反向传播机制解析
  • [15-2] 读写内部FLASH读取芯片ID 江协科技学习笔记(20个知识点)
  • 【C++指南】C++ list容器完全解读(三):list迭代器的实现与优化
  • 如何查看服务器的运行日志?
  • 关于Spring的那点事(1)
  • 【CSS】Grid 布局基础知识及实例展示
  • 内网ubuntu系统安装mysql
  • 《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
  • 算法题练习
  • 前端Vue面试八股常考题(一)
  • 【STM32HAL-第1讲 基础篇-单片机简介】
  • Redis Lua 调试器(LDB)完全指南
  • 具身智能的仿真技术(具身智能入门三)
  • 用Python采集CBC新闻:如何借助青果网络海外代理IP构建稳定采集方案
  • datax-web报错:连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境)
  • NAT 类型及 P2P 穿透
  • 信创项目oracle数据库迁移到达梦数据库需要会有哪些问题?如何解决?
  • Linux云计算基础篇(2)