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

基于 Spring AI + Ollama + MCP Client 打造纯本地化大模型应用

文章目录

  • 简介
  • Spring Boot
  • Ollama 模型
  • llama3.2 聊天示例
  • MCP 客户端示例
  • MCP 服务端实现

简介

在大模型浪潮席卷各行各业的今天,Java 作为企业级开发的绝对主力,如何无缝接入 AI 能力成为开发者关注的焦点。Spring AI 的诞生,正是为 Java 生态提供了统一、简洁、面向生产的大模型集成方案。

本文将带你从零开始,基于 Spring Boot 3 + Spring AI + Ollama + MCP Client,搭建一个支持 本地大模型调用 与 工具函数调用(Function Calling) 的完整 AI 应用。

  • 如何在本地部署 Ollama 并运行轻量级模型(如 llama3.2:1b、llama3.2:3b)
  • 如何使用 Spring AI 集成 Ollama,实现自然语言对话
  • 如何通过 MCP(Model Context Protocol)Client 实现模型对工具的动态调用,例如查询天气、访问数据库等
  • 无需 GPU、无需联网调用第三方 API、数据完全本地化,真正实现私有化、低延迟、高安全的 AI 能力集成。

Spring Boot

  • https://start.spring.io/

在这里插入图片描述

Ollama 模型

  • https://ollama.com/library/llama3.2/tags
# 模型大小 1.3 GB
ollama pull llama3.2:1b
# 模型大小 2.0GB
ollama pull llama3.2:3b

注: deepseek-r1:1.5b 是不支持 tools 调用;MCP应用推荐使用 llama3.2:1b 模型。

在这里插入图片描述

llama3.2 聊天示例

  • build.gradle
dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.ai:spring-ai-starter-model-ollama'testImplementation 'org.springframework.boot:spring-boot-starter-test'testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
  • application.properties
spring.application.name=demo
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=llama3.2:3b
  • DemoApplication.java
@SpringBootApplication
public class DemoApplication {@Autowiredprivate OllamaChatModel chatModel;public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@Beanpublic ChatResponse runner() {ChatResponse response = chatModel.call(new Prompt(new UserMessage("介绍下Spring AI")));System.out.println(response);return response;}}

在这里插入图片描述

MCP 客户端示例

在这里插入图片描述

  • build.gradle
dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.ai:spring-ai-starter-mcp-client'implementation 'org.springframework.ai:spring-ai-starter-model-ollama'testImplementation 'org.springframework.boot:spring-boot-starter-test'testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
  • application.properties
spring.application.name=demo
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=llama3.2:3bspring.ai.mcp.client.name=spring-ai-mcp-client
spring.ai.mcp.client.version=1.0.0
spring.ai.mcp.client.type=sync
spring.ai.mcp.client.sse.connections.server1.url=http://localhost:9800
spring.ai.mcp.client.toolcallback.enabled=true
  • ChatService.java
@Service
public class ChatService {private final ChatClient chatClient;public ChatService(OllamaChatModel ollamaChatModel, List<McpSyncClient> mcpSyncClientList) {var mcpToolCallbackProvider = new SyncMcpToolCallbackProvider(mcpSyncClientList);ToolCallback[] toolCallbacks = mcpToolCallbackProvider.getToolCallbacks();for (ToolCallback toolCallback : toolCallbacks) {System.out.println("toolCallback:" + toolCallback.getToolDefinition());}chatClient = ChatClient.builder(ollamaChatModel).defaultToolCallbacks(toolCallbacks).build();}public String askQuestion(String prompt) {return chatClient.prompt(prompt).call().content();}}
  • DemoApplication.java
@SpringBootApplication
public class DemoApplication {@Autowiredprivate ChatService chatService;public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@Beanpublic String runner() {String res = chatService.askQuestion("查询姓名:“林俊杰”的用户信息");System.out.println(res);return res;}}

在这里插入图片描述

MCP 服务端实现

  • 将 DeepSeek 集成到 Spring Boot 项目实现通过 AI 对话方式操作后台数据
http://www.dtcms.com/a/332676.html

相关文章:

  • Java研学-SpringCloud(三)
  • 如何安装 Homestead ?
  • 【学习笔记】JVM内存模型
  • 告别碎片化管理!飞算JavaAI实现端到端业务全流程智能监控
  • Ubuntu DNS 综合配置与排查指南
  • IP生意的天花板更高了吗?
  • 【数据分享】2022 年黑龙江省小麦、玉米和水稻幼苗影像数据集
  • Logstash 实战指南:从入门到生产级日志处理
  • GitHub 热榜项目 - 日榜(2025-08-15)
  • 硬核实用!R+贝叶斯解决真实问题:参数估计(含可靠性分析) + 回归建模(含贝叶斯因子比较) + 生产级计算实践 赠「常见报错解决方案」秘籍!
  • ubuntu 24.04 通过部署ollama提供大模型api接口
  • 线程P5 | 单例模式[线程安全版]~懒汉 + 饿汉
  • CANDB++中的CAN_DBC快速编辑方法,使用文本编辑器(如notepad++和VScode)
  • Redis 知识点与应用场景
  • 六十六、【Linux数据库】MySQL数据导入导出 、 管理表记录 、 匹配条件
  • 日本服务器哪些服务商是可以免费试用的?
  • 拒绝“效果图”返工:我用Substance 3D Stager构建产品可视化工作流
  • 计算机视觉(opencv)实战五——图像平滑处理(均值滤波、方框滤波、高斯滤波、中值滤波)附加:视频逐帧平滑处理
  • vue2生命周期详解
  • Claude Opus 4.1深度解析:抢先GPT5发布,AI编程之王主动出击?
  • 【线上问题】1分钟学会如何定位 Java 应用 CPU 飙升问题
  • Spring中存在两个相同的Bean是否会报错?
  • Amazon Bedrock如何轻松实现复杂的生成式AI模型?
  • 纯C++实现halcon的threshold
  • 【Java EE进阶 --- SpringBoot】初识Spring(创建SpringBoot项目)
  • zynq代办事项
  • Vue 侦听器(watch 与 watchEffect)全解析2
  • 【100页PPT】数字化转型集团信息化总体解决方案(附下载方式)
  • Swift 实战:用最长递增子序列算法解“俄罗斯套娃信封”问题(LeetCode 354)
  • 日本服务器租用选哪个机房国内访问比较快?