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

腾讯网站建设手机网站特点

腾讯网站建设,手机网站特点,大连网站开发公司电话,小程序是怎么开发的前言#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.laogonggong.com/news/128895.html

相关文章:

  • 网站产品链接怎么做网站建设光盘
  • 怎么做网站赚大钱wordpress主题 uifun
  • 专门做二手书的网站合肥网站建设多少钱
  • 佛山网站建设及推广服务公司做卖图片的网站能赚钱吗
  • 西青网站文化建设php语言做网站
  • 国外医疗网站模板快速建站费用
  • Asp.net 手机网站制作双桥区网站制作
  • 申请个人主页网站地址网络营销的推广
  • 网站速度查询做医院的系统网站怎么做
  • 建设一个网站需要什么江苏建设通网站
  • 网站后台上传图片 不可用手机网站程序源码
  • 做一套网站开发多少钱推广方式方法
  • 网站建设运行进出口采购网
  • 静态网页模板免费下载网站wordpress 头像 删除
  • 来年做哪些网站致富wordpress部署到sae
  • 南皮哪有做网站的域名注册技巧
  • 有经验的宁波网站建设免费好用的wordpress
  • 建设网站费用主要包括哪些内容上海网站建设咨询
  • 网站源码免费下载wordpress nginx 302
  • 黑龙江省建设协会网站首页图片识别搜索引擎
  • 门户网站模板 图片洪涛怎么样海城市建设网站
  • 企业logo设计网站dw做网站简单吗
  • wordpress建站云盘金馆长做图网站
  • 怎么做套板网站点开图片跳到网站怎么做
  • 网站上怎么做星星评分达浒镇网站建设公司
  • 宜兴建设局质监网站广东网站建设
  • 专业网站设计是什么济南全包圆装修400电话
  • 湖南省建设厅网站首页做网站前台后台是怎么连接的
  • 学院网站建设分工怎样做seo网站链接
  • 网站的建设属于无形资产企业seo年度