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

Spring AI Alibaba 与 Ollama 集成初探:从环境搭建到首次调用


一、背景与目标


Ollama 作为轻量级本地大模型运行框架,支持快速部署如 Qwen、Llama 等模型;Spring AI Alibaba 则提供了丰富的 AI 能力集成组件。本文记录首次尝试通过 Spring AI Alibaba 调用本地 Ollama 服务的完整过程,包括环境配置、代码实现及问题解决。


二、环境准备与依赖配置


1. 项目初始化


基于 Spring Boot 3.5.6 创建 Maven 项目,核心依赖如下(配置于 pom.xml):
Spring Boot 基础组件:spring-boot-starter-web(提供 Web 能力)、spring-boot-starter(核心 Starter)。
JSON 处理:jackson-databind(解析 Ollama API 响应)。
Lombok:简化实体类代码(需指定版本 1.18.30 避免编译问题)。
Spring AI Alibaba BOM:统一管理 AI 组件版本(spring-ai-alibaba-bom:1.0.0.2)。
关键

pom.xml 配置片段:

    <properties><java.version>17</java.version><lombok.version>1.18.30</lombok.version> <!-- Lombok 版本声明 --></properties><dependencyManagement><dependencies><!-- Spring AI Alibaba 依赖版本管理 --><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-bom</artifactId><version>1.0.0.2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- Web 能力支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Lombok 简化实体类 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- JSON 解析 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency></dependencies>

三、核心代码实现


1. 定义 API 交互模型


根据 Ollama API 文档(/api/chat 接口),创建请求/响应实体类:
OllmaChatRequest:封装请求参数(模型名称、对话消息列表)。
OllmaChatResponse:接收 API 响应(包含模型返回的消息内容)。
使用 Lombok 的 @Data 注解自动生成 Getter/Setter,避免手动编写:

package com.example.springaialibaba.entery;import lombok.Data;
import java.util.List;-------------------------------------------------------3个文件@Data // 自动生成 Getter/Setter
public class OllmaChatRequest {private String model; // 模型名称(如 qwen:1.8b)private List<Message> messages; // 对话消息列表}
@Data
public  class Message {private String role; // 角色:user/assistantprivate String content; // 内容
}@Data
public class OllmaChatResponse {private String model;private Message message; // 同请求中的 Message 结构
}

2. 实现 Ollama 调用服务


创建 OllmaClient 服务类,通过 RestTemplate 调用 Ollama API

package com.example.springaialibaba.service;import com.example.springaialibaba.entery.Message;
import com.example.springaialibaba.entery.OllmaChatRequest;
import com.example.springaialibaba.entery.OllmaChatResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;import java.util.List;@Service
public class OllmaClient {@Value("${spring.ai.ollma.base-url}")private String baseUrl;@Value("${spring.ai.ollma.default-model}")private String defaultModel;private final RestTemplate restTemplate = new RestTemplate();// 调用 Ollma 进行对话public String chat(String question) {// 构建请求// 构建请求OllmaChatRequest request = new OllmaChatRequest();request.setModel(defaultModel);Message msg = new Message();msg.setRole("user");msg.setContent(question);request.setMessages(List.of(msg));// 调用 Ollma APIOllmaChatResponse response = restTemplate.postForObject(baseUrl + "/api/chat",request,OllmaChatResponse.class);// 提取回答return response.getMessage().getContent();}
}

3. 配置 Ollma 连接信息


在 application.yml 中指定 Ollma 服务地址和默认模型

spring:ai:ollma:base-url: http://192.168.x.xxx:11434 # 本地 Ollma 服务地址default-model: qwen:1.8b # 已下载的模型名称

4. 大模型调用

package com.example.springaialibaba.controller;import com.example.springaialibaba.service.OllmaClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/local-ai")
public class LocalAiController {@Autowiredprivate OllmaClient ollmaClient;@GetMapping("/ask")public String ask(@RequestParam String question) {return ollmaClient.chat(question);}
}

四、首次调用与结果


启动 Spring Boot 应用后,通过 Controller 调用 OllmaClient.chat("Hello Ollama!"),成功接收模型响应:

http://localhost:8080/local-ai/ask?question=你是谁

五、总结


本次尝试成功实现了 Spring AI Alibaba 与本地 Ollma 服务的集成,核心步骤包括:
通过 Maven BOM 统一管理 AI 组件版本;
使用 Lombok 简化实体类定义,解决编译期方法缺失问题;
针对 API 响应结构调整模型类,确保 JSON 反序列化正确;
通过日志调试定位并解决网络请求与响应解析问题。

http://www.dtcms.com/a/470517.html

相关文章:

  • 营销型网站的标准网站flash导入页
  • 汉中专业网站建设开发怎么上国外网站
  • Windows上离线安装 PostgreSQL
  • MySQL——表的操作
  • langchain官网翻译:Build a Question/Answering system over SQL data
  • 我的HarmonyOS百宝箱
  • 广州十大室内设计公司排名网站推广seo教程
  • h5网站用什么软件做网站域名备案证书下载
  • 南京本地网站有哪些做网页需要什么
  • 机器学习破解生命之谜:内在无序蛋白质设计迎来革命性突破
  • Springboot之常用注解
  • 从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 14--二次开发--封装公共方法 2
  • 做平面的公司网站DNF做钓鱼网站
  • SpringBoot 集成 LangChain4j RAG Redis
  • 【QT】customPlot 设置图例透明背景和文字颜色
  • AT指令解析:ring_buffer、信号量、互斥量等基础知识
  • 任务网站(做任务学技能的)潍坊市建设局网站
  • 【算法】——动态规划之路径问题
  • 阿里云企业建站教程泰州东方医院
  • 东阿县住房和城乡建设局网站申请做版主 再什么网站
  • 深入理解数据在内存中的存储:整数与浮点数的二进制表示
  • 广东网站营销seo费用品牌推广活动有哪些
  • 特效音网站建设公司官网制作平台
  • MySQL数据库安装后,如何设置自动化备份策略?
  • 【开题答辩全过程】以 保险业务信息管理系统为例,包含答辩的问题和答案
  • 进口食品销售销售在那个网站做seo托管
  • 公司模板网站建设成绩查询系统网站开发
  • 建设大淘客网站雅布设计师
  • Oracle ADRCI工具全面使用指南:从基础到故障诊断实战
  • 美食网站设计欣赏上海著名网站建设