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

河间市网站建设价格学校网站建设命名

河间市网站建设价格,学校网站建设命名,什么网站可以在图片上做超链接,wordpress主题极简前言#xff1a; 该开发环境是在 3、后端持久化#xff08;SpringBoot3.5.0MybatisPlus3.5.5mysql8.4.0#xff09;环境搭建 上进行改造的#xff0c;用到了后端持久化#xff0c;主要改造的地方为数据库把email字段改为height#xff08;身高#xff09;#xff0c;…前言 该开发环境是在 3、后端持久化SpringBoot3.5.0MybatisPlus3.5.5mysql8.4.0环境搭建 上进行改造的用到了后端持久化主要改造的地方为数据库把email字段改为height身高该开发环境主要是设计了一个灌篮高手篮球经理对球队成员简单的查询通过这个场景把MCPServer、MCPClient、大模型、用户客户端相互的职责和关系简单捋一下其他的改造和实现一边贴代码一边解释 1、数据库表结构 数据库表结构以及数据初始化、user_info表 ET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for user_info -- ---------------------------- DROP TABLE IF EXISTS user_info; CREATE TABLE user_info (id varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ID主键,user_name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 用户名,sex varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 性别,hobby varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 爱好,special_skill varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 特长,score int(0) NULL DEFAULT NULL COMMENT 评分,height varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 身高,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT Dynamic;-- ---------------------------- -- Records of user_info -- ---------------------------- INSERT INTO user_info VALUES (3830a6dcd94e60e41e491a8701e10a48, 流川枫, 男, 睡觉, 大前锋, 98, 187cm); INSERT INTO user_info VALUES (463097bd7d06c7fbf709c40207c356c3, 牧绅一, 男, 未知, 后卫, 98, 184cm); INSERT INTO user_info VALUES (552cef7ea26dcb134623891417527cff, 樱木花道, 男, 赤木晴子, 大前锋, 97, 188cm); INSERT INTO user_info VALUES (6ebee37985f6cdf0ff6e7520c5441616, 仙道彰, 男, 钓鱼, 小前锋, 98, 190cm); INSERT INTO user_info VALUES (716bd21e54e5964058e4b9ad78cbaca3, 宫城良田, 男, 井上彩子, 后卫, 96, 168cm); INSERT INTO user_info VALUES (821a92f51a87be2d5d052e10a7223e70, 三井寿, 男, 三分球, 小前锋, 98, 184cm); INSERT INTO user_info VALUES (9f5553b0b67821bae5b5869fc8ff3a69, 赤木晴子, 女, 篮球迷, 啦啦队, 60, 156cm); INSERT INTO user_info VALUES (af2ab75e939b5cff8a95569b306be911, 井上彩子, 女, 宫城良田, 篮球经理, 70, 163cm); INSERT INTO user_info VALUES (d3f967929558b8c834396dd8aaa24e24, 泽北荣治, 男, 打篮球, 小前锋, 98, 186cm); INSERT INTO user_info VALUES (e6bf09db5717d9c60af41c9dde65f0d6, 赤木刚宪, 男, 吃香蕉, 中锋, 97, 199cm);SET FOREIGN_KEY_CHECKS 1;该表中存储了一些球员的基本信息以便篮球经理查看 2、MCPServer搭建 1pom.xml文件 该文件在之前  3、后端持久化SpringBoot3.5.0MybatisPlus3.5.5mysql8.4.0环境搭建 的基础上改动不多整体如下 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.everything.autotest/groupIdartifactIdspring_ai_project/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetjava.version17/java.versionspring-boot.version3.5.0/spring-boot.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.5.0/version/parentdependencies!-- mcp-server-webmvc --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-mcp-server-webmvc/artifactIdversion1.0.0/version/dependency!-- Web 模块 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency!-- MyBatisPlus --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.5/version/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactId/dependency!-- Selenium WebDriver --dependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-java/artifactIdversion4.31.0/version/dependency!-- WebDriver Manager --dependencygroupIdio.github.bonigarcia/groupIdartifactIdwebdrivermanager/artifactIdversion6.1.0/version/dependency!-- SLF4J API --dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion2.0.9/version/dependency!-- Log4j2核心实现包 --dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.24.3/version/dependency!-- SLF4J与Log4j2的桥接器 --dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-slf4j2-impl/artifactIdversion2.24.3/versionexclusionsexclusionartifactIdlog4j-core/artifactIdgroupIdorg.apache.logging.log4j/groupId/exclusion/exclusions/dependency/dependencies/project 只增加了一个MCPServer的必须文件注意版本号使用当前最新版本Spring AI 1.0.0如下 !-- mcp-server-webmvc -- dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-mcp-server-webmvc/artifactIdversion1.0.0/version /dependency 2application.yml文件 文件加入了Spring AI所需要的最简参数整体application.yml如下 server:port: 9091 spring:ai:mcp:server:name: slamdunk-mcp-serverversion: 1.0.0sse-endpoint: /sse/slamdunk-mcp-serverdatasource:url: jdbc:mysql://localhost:3306/everythingtest?useUnicodetruecharacterEncodingutf8characterSetResultsutf8username: rootpassword: 1234driver-class-name: com.mysql.cj.jdbc.Driverdebug: true mybatis-plus:mapper-locations: classpath:mapper/*.xmlglobal-config:db-config:id-type: ASSIGN_UUIDfield-strategy: NOT_EMPTYdb-type: MYSQLconfiguration:map-underscore-to-camel-case: truecall-setters-on-nulls: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpl MCPServer的yml文件配置唯一注意的一点就是sse-endpoint: /sse/slamdunk-mcp-server sse-endpoint这个参数需要在代码里做一些特殊处理才能生效处理完成后MCPClient调用时才不会报404错误 3java文件 UserInfoMCPServerFacade.java package com.everything.autotest.demo.mcpserverdemo;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.everything.autotest.demo.mybatisplus3demo.UserInfo; import com.everything.autotest.demo.mybatisplus3demo.userinfo.UserInfoService; import org.springframework.ai.tool.annotation.Tool; import org.springframework.ai.tool.annotation.ToolParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.List;Service public class UserInfoMCPServerFacade {AutowiredUserInfoService userInfoService;Tool(name getInfo, description 根据球员姓名获取某个球员的详细信息)public UserInfo getInfo(ToolParam(description 球员姓名) String userName) throws Exception {var userInfoQueryWrapper new QueryWrapperUserInfo();userInfoQueryWrapper.like(user_name, userName);return userInfoService.getOne(userInfoQueryWrapper);}Tool(name getList, description 获取所有球员信息)public ListUserInfo getList() {return userInfoService.list();} } 做一个简单解释 1、简单的可以理解为这个类相当于之前的Controller层之前的Controller层的参数是从页面或者第三方的restful调用过来现在改为从MCPClient客户端调用调过来之后后面处理的逻辑不变依然是调用UserInfoService层来查询数据库和处理逻辑并返回到UserInfoMCPServerFacade 2、为什么这个类名后缀起成Facade因为目前也没啥标准规范个人理解是如果起名成Controller感觉有点怪怪的如果起名成Service又和对应持久化层的Service有点混淆所以干脆起成门面Facade这样也有面子。 3、关于注解及api使用方法会在后面更细节的分析这篇先把运行环境搭起来 SlamDunkMCPRegisterConfiguration.java package com.everything.autotest.demo.mcpserverdemo;import org.springframework.ai.tool.ToolCallbackProvider; import org.springframework.ai.tool.method.MethodToolCallbackProvider; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class SlamDunkMCPRegisterConfiguration {Beanpublic ToolCallbackProvider userInfoTools(UserInfoMCPServerFacade userInfoMCPServerFacade){return MethodToolCallbackProvider.builder().toolObjects(userInfoMCPServerFacade).build();} } 把UserInfoMCPServerFacade搞进来 SlamDunkMCPServerConfig.java package com.everything.autotest.demo.mcpserverdemo;import com.fasterxml.jackson.databind.ObjectMapper; import io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider; import org.springframework.ai.mcp.server.autoconfigure.McpServerProperties; import org.springframework.beans.factory.ObjectProvider; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.ServerResponse;Configuration public class SlamDunkMCPServerConfig {BeanPrimarypublic WebMvcSseServerTransportProvider webMvcSseServerTransportProvider(ObjectProviderObjectMapper objectMapperProvider, McpServerProperties serverProperties) {ObjectMapper objectMapper objectMapperProvider.getIfAvailable(ObjectMapper::new);return new WebMvcSseServerTransportProvider(objectMapper, serverProperties.getSseMessageEndpoint(),serverProperties.getSseEndpoint());}Beanpublic RouterFunctionServerResponse mvcMcpRouterFunction(WebMvcSseServerTransportProvider transportProvider) {return transportProvider.getRouterFunction();}} SlamDunkMCPServerConfig.java这个类完全就是为了让sse-endpoint这个参数生效其实可以不配sse-endpoint这个参数也行但是感觉配出来高大上一点 通过以上配置MCPServer就搭建完毕了运行起来浏览器输入 http://localhost:9091/sse/slamdunk-mcp-server 如果界面是这样说明mcpServer配置成功 MCPServer搭建成功 3、MCPClient搭建 MCPClient和MCPServer是两个不同的工程最好不要写在一个工程里分两个Model这样容易串端口 在这之前首先参考  4、大模型本地运行环境搭建 把本地大模型搭起来 然后浏览器输入 http://localhost:11434/ 如果显示下图则说明大模型运行成功 1pom.xml文件 文件必要依赖如下 !-- mcp-client -- dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-mcp-client/artifactId /dependency !-- 使用的大模型依赖 -- dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-ollama/artifactId /dependency dependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion1.0.0/versiontypepom/typescopeimport/scope/dependency/dependencies /dependencyManagement 以上配置我不确定能不能生效因为对于Client配置我改了很多次又没有重新install可能会有缓存如果不生效或者有问题请参考Server的配置把版本号显示写 还是要注意Spring AI的版本号一定要选1.0.0版本当前最新版 2application.yml文件 server:port: 9100 spring:ai:ollama:base-url: http://localhost:11434chat:model: llama3.2mcp:client:enabled: truename: slamdunk-mcp-clientversion: 1.0.0 # request-timeout: 30stype: syncsse:connections:server1:url: http://localhost:9091sse-endpoint: /sse/slamdunk-mcp-servertoolcallback:enabled: true 这里的sse-endpoint: /sse/slamdunk-mcp-server与服务器保持一致注意一定要用1.0.0版别用M版本 3java文件 SlamDunkClientConfig.java package com.gempharmatech.mcpclient;import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.ai.tool.ToolCallbackProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class SlamDunkClientConfig {Autowiredprivate OllamaChatModel ollamaChatModel;Autowiredprivate ToolCallbackProvider toolCallbackProvider;Beanpublic ChatClient chatClient() {StringBuilder sb new StringBuilder();sb.append(你是一个篮球经理需要对篮球队内的一切事务所处判断和决策。);sb.append(根据球员姓名获取某个球员的详细信息。);sb.append(获取所有球员信息。);sb.append(最后可以通过诙谐幽默的方式回答出问题重点是诙谐幽默可以允许你自由发挥);return ChatClient.builder(ollamaChatModel).defaultSystem(sb.toString()).defaultAdvisors(new SimpleLoggerAdvisor()).defaultToolCallbacks(toolCallbackProvider).build();} }SlamDunkMCPClintController.java  package com.gempharmatech.mcpclient;import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; import org.springframework.ai.chat.client.ChatClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController;RestController public class SlamDunkMCPClintController {Resourceprivate ObjectMapper objectMapper;Resourceprivate ChatClient chatClient;PostMapping(/slamdunk/gogogo)public String getInfo(RequestBody String jsonData) throws Exception {var node objectMapper.readTree(jsonData);var message node.get(message).asText();return chatClient.prompt().user(message).call().content();} } MCPClient搭建成功 4、整体测试各种场景 首先说明一下UserInfoService中的两个查询方法 1数据库列表全查调用MybatisPlus封装好的list()接口全查 2根据userName模糊查询 1postman中输入把球员名字叫流川枫的信息诙谐幽默的展示一下 感觉还行这个大模型呆萌呆萌的 2postman中输入查询分数排名前五的球员信息每个人的信息一行展示 从这个结果看大模型虽然只返回给5条但是并没有按照分数最高的5个人返回这一点可以在后面优化让大模型能更深入的理解返回正确结果 3postman中输入查询性别是女性的球员信息每个人的信息一行展示 这个怎么说呢大模型开起车来也是棒棒的其实这个llama3.2大模型才2G另外就是给大模型的指令可以更精细化后面文章会讲到当前能做到这样已经很不错了主要是萌新后期会换个厉害点的模型 以上就是Spring AIMCPServerMCPClientOllama开发环境搭建的第一篇搭建完毕大家也大致了解几个组件之间的调用顺序和配合关系了吧下期见
http://www.hkea.cn/news/14413843/

相关文章:

  • 有哪些做共享充电宝的网站学做转手绘的网站
  • 建筑工程网站搭建服装网站建设项目实施报告范文
  • dedecms 金融类网站模板受欢迎的邢台做网站
  • 福州最好的网站建设网络公司企业网站服务器选择
  • 网站的首屏 一屏 二屏是什么意思360搜索网址是多少
  • 免费做简易网站wordpress添加心情
  • 自主建站护肤品主题网站怎么做
  • 国外做建材的网站有哪些北京网站开发制作公司
  • 厦门网站seo优化wordpress 新浪云
  • 农特产品电商网站建设目标建立网站的服务器
  • 保山网站建设优化珠海建站联系方式
  • 网站建设与管理专业就业方向wordpress回复显示插件
  • 网站怎么做关键词流量seo入门教学
  • 淡水网站建设网络广告的缺点
  • 大庆 网站制作建一个wordpress网站成本
  • 购物网站技术实施方案推广网站排名
  • 网站设计需要什么证wordpress 打包 转移
  • 中山门户网站建设优化方案怎么写
  • 汕尾建设网站制作网页免费
  • 国内网站备案修改wordpress文章发布时间
  • 网站建设前台功能设计与实现腾讯公司网页设计
  • 江宁交通建设集团网站河南省和城乡建设厅网站
  • 网站内页产品 首页推荐银川网站网站建设
  • 余姚网站推广公司整人做我女朋友网站
  • 哪个网站做自考题目免费wordpress标题不居中
  • 国内老牌的室内设计网站可视化小程序开发工具
  • 宜兴做阿里巴巴网站莱芜都市网下载
  • 建材网站方案用wordpress做网站教程
  • 东台建网站贵州成品网站
  • 推荐几个自学做衣服的网站湘潭网站建设问下磐石网络