spingboot+springAi+MCP+deepseek实现智能聊天结合orm框架查询数据库

260 阅读5分钟

spingboot+springAi+MCP+deepseek实现智能聊天结合orm框架查询数据库

引言 随着近来两年AI的冲击,相信越来越多的码农深感焦虑,一是害怕自己当前所在岗位会被替代,二来想要学习AI,也不知道从哪里入手。同样作为一个资深老爪哇程序猿的我一样深感疲惫。想去尝试新鲜的东西,却是有点力不从心,无从下手。最近呢在各大技术平台,还真被我捞了点东西,现在我将其整理在一起,结合平时爪哇常用场景实现一些简单功能,望能给同样迷茫的你带去一丝希望。。。

以下是我们作为java程序员经常遇到的一类场景,就是前端查询,后端直接去数据库查询,试想很多企业在拥抱AI的今天,他可能连AI是啥都不清楚,他们所能想象的场景就是一个聊天对话框,对话,然后获取他们想要结果,因为平时各大平台就是这么做的,所以,未来很多企业很可能想实现这样的功能,一个聊天窗口,咨询问题,回复他们想要的企业业务领域结果。

以往系统都是BS架构,那么对于传统企业的传统系统来改造成一个支持聊天就能获取专业知识的功能的痛点在哪呢?没错!就是钱!你得打造一个AI知识库,除了人力,你得投入大量的机器成本!那么如何大大缩减成本,还能利用AI智能聊天就能实现各位老板想要的专业业务结果呢?

有没有一种方式就是传统系统的基础上,我尽量少做改造,并且对高性能算法的机器也不用投入太多呢?一个字就是“省钱”!答案当然是有肯定的,以下我介绍的虽不是万能的,但是一定程度上能解决这种业务场景,大家可以尝试并作进一步的优化。

他就是最近火到爆的Model Context Protocol (MCP)!

一、先来讲讲MCP

现代 Web 应用正加速与大语言模型(LLMs)深度融合,构建超越传统问答场景的智能解决方案。为突破模型知识边界,增强上下文理解能力,开发者普遍采用多源数据集成策略,将 LLM 与搜索引擎、数据库、文件系统等外部资源互联。然而,异构数据源的协议差异与格式壁垒,往往导致集成复杂度激增,成为制约 AI 应用规模化落地的关键瓶颈。因此,Anthropic公司推出了模型上下文协议(Model Context Protocol, MCP),通过标准化接口为 AI 应用与外部数据源建立统一交互通道。这一协议体系不仅实现了数据获取与操作的规范化,更构建起可扩展的智能体开发框架,使开发者能够基于原生 LLM 能力快速构建复杂工作流。

关于MCP的架构,这里可以看看ByteByteGo的这张架构图:

在这里插入图片描述MCP遵循客户端 - 服务器架构,围绕几个关键组件:

MCP Host:用户使用的应用程序,比如:Claude客户端、Cursor这样的AI应用程序,它与大语言模型集成,提供 AI 交互环境以访问不同工具和数据源。

MCP Client:与MCP Server建立并维护一对一连接的组件。它属于AI应用程序的内部组件,使其能够与 MCP Server通信。例如,若需要 PostgreSQL 数据,MCP 客户端会将请求格式化为结构化消息发送给 MCP 服务器。

MCP Server:外部数据源集成并公开与之交互功能的组件。作为中间件连接 AI 模型与外部系统(如 PostgreSQL、Google Drive 或 API)。例如,当 Claude 分析 PostgreSQL 中的销售数据时,PostgreSQL 的 MCP 服务器会充当 Claude 与数据库之间的连接器。

再来看看这张架构图 在这里插入图片描述 是不是最近经常在哪看到这张图,好了这个mcp到底何方神圣,我来用白话介绍一下: MCP就是AI的"通用适配器"。想象你有很多不同类型的服务和数据库。AI需要和这些服务交流时就显得无从入手,MCP解决了这个问题 ,它就像一个统一的翻译官,让AI以统一方式所有服务打通,从而实现与各种应用或数据源交互。

ok,话不多说,接下来我们来实操!!

二、注册deepseek账号

首先注册个deepseek账号,交费,获取api-key。当然此处也可用其他ai模型,使用方式大同小异,后续有时间再更新。

题外话,此处我用的是deepseek官方提供API,自然要掏钱啦,建议个人想玩的,或者小企业,可以本地部署个小模型,后续直接调用本地api

deepseek官网地址:platform.deepseek.com/

注册好,先交个10元,为测试用嘛,没必要充值太多,土豪随意!

接下来获取api-key。

注意:只有创建时候复制,创建好后之后删除权限! 在这里插入图片描述

三、传统系统改造成MCP模式架构设计

在这里插入图片描述

四、代码演示

先倒入pom依赖

在这里插入图片描述

配置环境变量

在这里插入图片描述

此处我们以一个文具查询demo为例举例

文具实体类

在这里插入图片描述

服务层接口

在这里插入图片描述

服务层实现

在这里插入图片描述

MCP服务配置

在这里插入图片描述

控制器层

在这里插入图片描述

测试

ok,至此,开始测试,首先给数据库表弄几条文具测试数据,然后模拟聊天请求:

![在这里插入图片描述](direct/9768a54d362f4190a7bbbb61336f40f1.png

ok,这样我们就完成了一个简单聊天查询功能!