SpringAI+MCPServer+MCPClient快速入门

SpringAI + MCPServer + MCPClient 快速入门编写大纲

源代码地址:https://download.csdn.net/download/user_admin_god/90926893

1. 介绍

本文通过使用免费的智普AI的glm-4-flash模型,设计并实现了一个智能问答系统。在该系统中,我们编写了一个工具接口,专门处理那些大模型无法解答的复杂问题,并将其集成到MCPServer中。MCPClient的Web端接口能够智能地判断何时使用智普AI的glm-4-flash模型,何时调用MCPServer的工具接口,从而确保在大模型无法处理的情况下,系统通过MCP实现高效的协调与问题解决。这一方案不仅提升了AI问答的能力,还能更灵活地应对多样化的用户需求。

1.1 目标

本文的主要目标是帮助开发者了解如何结合 SpringAIMCPServerMCPClient 来创建一个高效的分布式应用程序。通过这个快速入门指南,开发者将能够:

  • 迅速掌握这些组件的基本用法及如何将它们集成到实际项目中;
  • 理解各个模块之间的架构设计和通信流程;
  • 学习如何通过SpringAI 提供的人工智能服务来增强应用功能;
  • 轻松实现一个客户端-服务器模型,并使用 SpringAI 实现智能化服务。
1.2 技术栈概述
(一)SpringAI

SpringAI 是一个基于 Spring 框架的人工智能服务构建工具,旨在帮助开发者通过简单的配置和接口集成AI功能。无论是自然语言处理、图像识别还是其他类型的智能服务,SpringAI 都提供了一套简洁的API接口,支持与流行的AI平台(如OpenAI)无缝对接。开发者可以通过它轻松实现复杂的AI任务。

SpringAI特点:

AI 模型集成与管理
Spring AI 提供对多种 AI 模型的支持,包括聊天模型、文本生成、图像生成、语音识别与合成等,支持同步和流式 API 选项。
统一的 API 接口
框架提供跨 AI 提供商的可移植 API,支持 OpenAI、Anthropic、Google、Microsoft、ZhiPu等主流平台,简化了不同模型间的切换和集成。
向量数据库支持
Spring AI 支持多种向量数据库,如 Chroma、Milvus、PostgreSQL/PGVector、Redis、Weaviate 等,提供类似 SQL 的元数据过滤 API,方便进行高效的相似性搜索和数据存储。
函数调用与工具集成
框架支持模型调用外部函数和工具,允许模型在推理过程中访问实时数据或执行特定操作,增强了模型的实用性和灵活性。
结构化输出与 POJO 映射
Spring AI 支持将 AI 模型的输出映射到 Java POJO(Plain Old Java Object),实现结构化数据处理,方便与其他系统的集成。
提示词模板与检索增强生成(RAG)
框架提供提示词模板功能,支持检索增强生成(RAG)策略,将外部知识库与 AI 模型结合,提高生成内容的准确性和相关性。
自动配置与 Spring Boot 集成
Spring AI 与 Spring Boot 无缝集成,支持自动配置和启动器,使得 AI 功能的集成过程更加简便和高效。

(二)MCPServer

MCPServer 是一个提供具体功能的服务端程序,类似于一个工具箱,里面包含了各种工具,例如文件读写、数据库查询、API 调用等。这些工具能够使大型语言模型(LLMs)以标准化的方式访问外部服务或数据源。

主要职责:

  1. 提供工具:Server 定义并实现具体的工具(Tool),这些工具构成了 MCP 的核心功能。例如,它可以是天气查询接口、数学运算功能、数据分析工具等。
  2. 处理请求:当 MCP Client 发送请求时,Server 负责解析请求内容,并根据需求执行相应的操作。
  3. 返回结果:完成操作后,Server 将处理结果返回给 Client。这可能包括从数据库获取信息、调用第三方 API,或进行其他数据处理任务。
(三)MCPClient

MCPClient 如同大型语言模型(LLM)的遥控器,负责向 Server 发送指令并接收结果。它的角色是将自然语言指令翻译成 Server 能理解的请求格式。

主要职责:

  1. 构建请求:Client 根据用户输入或 LLM 的需求,构建符合 MCP 协议的请求。它需要理解用户的意图,并将其转化为 Server 可执行的具体命令。
  2. 与 Server 通信:一旦构建好请求,Client 会通过网络与 Server 建立连接并发送请求。通常,这一过程遵循 JSON-RPC 2.0 规范,以确保通信的标准化和一致性。
  3. 接收响应:在接收到 Server 的响应后,Client 负责解读这些信息,并将有用的结果反馈给用户或 LLM。
2. 环境准备
  • 3.1 软件要求

    • JDK 21+:建议使用 JDK 21 或更高版本,可以通过华为云镜像下载链接获取。
    • Spring Boot 3:推荐使用 Spring Boot 3.4.5 版本。Spring Boot 是一个非常流行的框架,能够简化 Java 后端应用的构建过程,自动配置和快速开发。
    • Maven 3.9.2:Maven 是一种强大的构建和项目管理工具,用于依赖管理、构建配置及项目生命周期管理。建议使用 Maven 3.9.2 版本。
    • IntelliJ IDEA 2024.3:这款IDE是目前最受开发者青睐的Java开发工具之一,具备强大的代码编辑与调试功能,能够极大地提高开发效率。
    • MySQL 8.0+:MySQL 是一个开源的关系型数据库管理系统,8.0 版本具有更高的性能和更强的特性支持。
    • Mybatis-Plus 3.5.12:这是 Mybatis 的增强工具,能够简化数据库操作,并提高代码的可维护性。3.5.12 版本是本项目所推荐的版本。
  • 3.2 安装步骤

    1. 安装 Java 开发环境
    • 首先,下载并安装 JDK 21+,确保系统的环境变量已经配置好,例如 JAVA_HOMEPATH,这样 Java 可以在命令行中直接调用。

    • 安装完成后,通过执行以下命令验证是否成功安装:

    java -version
    

    输出应该显示 JDK 的版本信息。

    1. 配置 Spring Boot 项目
    • 使用IntelliJ IDEA打开或创建一个新的 Spring Boot 项目。可以通过以下步骤快速创建 Spring Boot 项目:

      • 打开 IntelliJ IDEA,选择 File -> New Project
    • 在项目类型中选择 Spring Initializr,并根据项目需求配置相关的参数。

    • 完成项目初始化后,选择正确的 Spring Boot 版本(3.4.5 推荐版本)。

    1. 添加必要的依赖项

    pom.xml 文件中添加项目所需的依赖项,主要包括:

    • spring-boot-starter-web:提供构建 Web 应用的基础功能,支持 RESTful 风格的 Web 服务。
    • spring-retry:用于支持自动重试机制,可以帮助应用在失败时进行重试,确保应用的高可用性。
    • spring-cloud:提供 Spring Cloud 的相关组件,适合微服务架构的开发。
3. 项目创建结构
两个模块  mcp-client  和 mcp-server
├─mcp-client
│  ├─src
│  │  └─main
│  │      ├─java
│  │      │  └─com
│  │      │      └─gt
│  │      │          └─demo
│  │      │              └─mcpclient
│  │      │                  ├─ai
│  │      │                  ├─controller
│  │      │                  ├─domain
│  │      │                  ├─mapper
│  │      │                  ├─service
│  │      │                  │  └─impl
│  │      │                  └─utils
│  │      └─resources
└─mcp-server├─src│  └─main│      ├─java│      │  └─com│      │      └─gt│      │          └─demo│      │              └─mcpserver│      │                  ├─ai│      │                  ├─controller│      │                  ├─domain│      │                  ├─mapper│      │                  ├─proxy│      │                  ├─service│      │                  │  └─impl│      │                  └─utils│      └─resources
4. 工程核心代码
  • 4.1 MCPServer Pom依赖
        <properties><java.version>21</java.version><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool-all.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</artifactId><version>${spring-ai.version}</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>${mybatis-plus.version}</version></dependency></dependencies>```- 4.2 **MCPServer Properties配置**```properties# 服务名称spring.application.name=mcp-server# 服务运行使用端口server.port=8081# MySQL数据库配置spring.datasource.url=jdbc:mysql://localhost:3306/test_admin_123?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=truespring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.username=guotongspring.datasource.password=123456spring.datasource.hikari.maximum-pool-size=5# MyBatis# mapper.xml 位置mybatis-plus.mapper-locations=classpath:mapper/*.xml# 实体类位置mybatis-plus.type-aliases-package=com.example.entity# mybatis-plus的sql日志mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl# 下划线转驼峰自动mybatis-plus.configuration.map-underscore-to-camel-case=true# 逻辑删除mybatis-plus.global-config.db-config.logic-not-delete-value=0mybatis-plus.global-config.db-config.logic-delete-field=isDelmybatis-plus.global-config.db-config.logic-delete-value=2-# thymeleaf 模板引擎-# 禁用缓存-开发的时候spring.thymeleaf.cache=false# sspring.thymeleaf.encoding=utf-8sys.conf.file.path=D:/confwindow.dev.file.path=D:/csp# mcp服务配置spring.ai.mcp.server.name=mcp-serverspring.ai.mcp.server.version=1.0.0spring.ai.mcp.server.description=AI服务spring.ai.mcp.server.type=asyncspring.ai.mcp.server.sse-message-endpoint=/mcp/messages```- 4.3 **MCPServer 模型工具接口**
```java@Component@Slf4jpublic class McpToolService {@Resourceprivate SysUserMapper sysUserMapper;@Tool(description = "根据传入用户名称获取AiGodLike系统用户信息接口")public String getAiGodLikeUserInfoByName(@ToolParam(description = "隔壁老郭系统的用户名称(mack,jay,hans)") String userName) {log.info("隔壁老郭系统用户名称:{}", userName);List<SysUser> sysUserList = sysUserMapper.selectList(Wrappers.lambdaQuery(SysUser.class).like(SysUser::getUserName, userName));log.info("隔壁老郭系统用户信息:{}", sysUserList);return "隔壁老郭系统用户-王八蛋" + sysUserList;}}
  • 4.4MCPServer 注册工具接口
    /*** @author makejava*/@SpringBootApplication@MapperScan("com.gt.demo.mcpserver.mapper")public class McpServerApplication {public static void main(String[] args) {SpringApplication.run(McpServerApplication.class, args);}@Beanpublic ToolCallbackProvider aiGodLikeUserInfoByNameTools(McpToolService mcpToolService) {return MethodToolCallbackProvider.builder().toolObjects(mcpToolService).build();}}```- 4.5 **MCPClient Pom配置**```xml<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--糊涂万能工具箱--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool-all.version}</version></dependency><!--流式响应式--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-client-webflux</artifactId><version>${spring-ai.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--MCP客户端--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-client</artifactId><version>${spring-ai.version}</version></dependency><!--智普AI--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-zhipuai</artifactId><version>${spring-ai.version}</version></dependency><!--Mysql数据库--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>${mysql.version}</version></dependency><!--lombok--><!----><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry --><dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>2.0.12</version></dependency><!--mybatis-plus--><!----><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>${mybatis-plus.version}</version></dependency></dependencies>
  • 4.5 MCPClient application.properties
# 服务名称
spring.application.name=mcp-client# 服务运行使用端口
server.port=8082# MySQL数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test_admin_123?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=guotong
spring.datasource.password=123456
spring.datasource.hikari.maximum-pool-size=5# MyBatis# mapper.xml 位置
mybatis-plus.mapper-locations=classpath:mapper/*.xml
# 实体类位置
mybatis-plus.type-aliases-package=com.example.entity
# mybatis-plus的sql日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
# 下划线转驼峰自动
mybatis-plus.configuration.map-underscore-to-camel-case=true
# 逻辑删除
mybatis-plus.global-config.db-config.logic-not-delete-value=0
mybatis-plus.global-config.db-config.logic-delete-field=isDel
mybatis-plus.global-config.db-config.logic-delete-value=2# thymeleaf 模板引擎
# 禁用缓存-开发的时候
spring.thymeleaf.cache=false
# s
spring.thymeleaf.encoding=utf-8
sys.conf.file.path=D:/conf
window.dev.file.path=D:/cspspring.ai.mcp.client.enabled=true
spring.ai.mcp.client.name=my-mcp-client
spring.ai.mcp.client.version=1.0.0
spring.ai.mcp.client.request-timeout=30s
spring.ai.mcp.client.type=SYNC
spring.ai.mcp.client.sse.connections.server1.url=http://localhost:8081spring.ai.zhipuai.api-key=0baf0413c6c0c6b0d011ae8489a2c9c0.ejfhVbF6Z653Cy1I
spring.ai.zhipuai.base-url=https://open.bigmodel.cn/api/paas
spring.ai.zhipuai.embedding.options.model=glm-4-flash
spring.ai.zhipuai.chat.options.model=glm-4-flash
spring.ai.zhipuai.chat.options.temperature=0.7
  • 4.5 MCPClient 调用AI模型问答
         /*** AI---式调用问答*/@RequestMapping(value = "/jsonToSay", method = RequestMethod.GET)public String jsonToSay(@RequestParam String question) {var chatClient = chatClientBuilder.defaultTools(toolCallbackProvider).build();System.out.println("=== 聊天模式已启动(=====");// 调用 AI 并打印回复String content = chatClient.prompt(question).call().content();System.out.println("\n>>> AI 回复: " + content);return content;}
5. 运行与测试
  • 5.1 启动Spring Boot应用
    • 运行MCPServer和MCPClient应用程序。
      在这里插入图片描述关键会打印:MCPClient 注册到MCPServer上了

2025-05-28T14:41:46.290+08:00 INFO 1828 — [mcp-server] [nio-8081-exec-5] i.m.server.McpAsyncServer : Client initialize request - Protocol: 2024-11-05, Capabilities: ClientCapabilities[experimental=null, roots=null, sampling=null], Info: Implementation[name=my-mcp-client - server1, version=1.0.0]

  • 5.2 测试API调用
    • 使用Postman或类似工具向MCPClient发送请求,验证服务器和AI服务是否正常工作。
    • 问一个不会协调去掉MCPServer工具的问题,全都是走大模型完成回答在这里插入图片描述
    • 问一个大模型完成回答不了的,满足MCPServer工具的语义的问题,走MCPServer工具
    • 在这里插入图片描述

NICE JAVA的 MCP+AI全线路打通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux `vi/vim` 编辑器深度解析与高阶应用指南

Linux `vi/vim` 编辑器深度解析与高阶应用指南 一、核心功能解析1. 模式系统2. 与主流编辑器对比二、核心操作体系1. 高效导航命令2. 文本操作矩阵三、高阶配置体系1. .vimrc 配置示例2. 插件管理系统四、企业级开发实践1. 代码编辑技巧2. 宏录制与批量处理五、可视化与多窗口1…

Java五种方法批量处理List元素全解

Java:如何优雅批量处理List中的每个元素 一、场景分析&#xff1a;为什么需要批量处理List&#xff1f;二、核心方法&#xff1a;五种实现方式对比2.1 普通for循环&#xff08;最直接的方式&#xff09;代码示例&#xff1a;优缺点&#xff1a; 2.2 Java 8 replaceAll&#xff…

【Elasticsearch】`_refresh`和`_flush`的区别

在Elasticsearch中&#xff0c;_refresh和_flush操作虽然看似都与“刷新”有关&#xff0c;但它们的功能和作用范围有显著区别&#xff1a; _refresh操作 - 目的&#xff1a;使索引操作&#xff08;如新增、更新、删除文档&#xff09;后的更改能够立即被搜索到。 - 工作原理…

Java核心数据类型:String深度解析(JDK 8+)

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 问题驱动&#xff1a;从用户注册场景说起 场景描述&#xff1a;开发一个用户注册功能时&#xff0c;需要处理用户名的校验、格式化和存储。你可能会遇到…

人员睡岗检测算法AI智能分析网关V4打造工业/安防/交通等多场景应用方案

一、引言​ 在工业生产、安防监控等多领域&#xff0c;众多岗位需员工长时间值守&#xff0c;如流水线工人、监控值班员等。但高强度工作易引发睡岗问题&#xff0c;导致生产效率下降&#xff0c;甚至造成安全事故与财产损失。传统人工巡检响应慢、成本高&#xff0c;难以满足…

自动生成提示技术突破:AUTOPROMPT重塑语言模型应用

AUTOPROMPT 预训练语言模型的显著成功促使人们研究这些模型在预训练期间学习了哪些类型的知识。将任务重新表述为填空题(例如,完形填空测试)是衡量此类知识的自然方法 但是,它的使用受到编写合适提示所需的手动工作和猜测的限制。为了解决这个问题,我们开发了 AUTOPROMP…

6个月Python学习计划 Day 7 - 复盘 + 测试日

第一周 Day 1 - Python 基础入门 & 开发环境搭建 Day 2 - 条件判断、用户输入、格式化输出 Day 3 - 循环语句 range 函数 Day 4 - 列表 & 元组基础 Day 5 - 字典&#xff08;dict&#xff09;与集合&#xff08;set&#xff09; Day 6 - 综合实战&#xff1a;学生信息…

Pycharm and Flask 的学习心得(9)

request对象&#xff1a; 1. request包含前端发送过来的所有请求数据 将from表单里的内容CV到request里面&#xff0c;可以添加if语句来做判断出请求类型后的操作 在网页上的表单上input的数据&#xff0c;后端如何获取呢&#xff1f; request对象获取前端发送来的数据 // …

设计模式-依赖倒转原则

依赖倒转原则 依赖倒转原则 (Dependency Inversion Principle, DIP) 是面向对象设计中 SOLID 原则的第五个原则。 它包含两条核心思想&#xff1a; 高层模块不应该依赖于低层模块。两者都应该依赖于抽象。 高层模块 (High-level modules): 通常包含复杂的业务逻辑和策略&…

AI赋能引爆短剧全球化风潮,腾讯云媒体处理助力短剧平台出海吸金

2023年&#xff0c;中国短剧市场以全平台8000万日投放、近500亿规模的爆发式增长震惊行业。紧凑的内容、爽快的剧情令国内观众迅速爱上了几分钟一集的微短剧。然而在平台内卷、监管收紧、巨头入场等因素的冲击下&#xff0c;不到两年时间&#xff0c;这条赛道就已陷入红海。但与…

开源第三方库发展现状

摘要&#xff1a;当前&#xff0c;开源第三方库生态正呈现爆发式增长趋势。GitHub 目前已托管超过 4.2 亿个代码仓库&#xff0c;远超早期统计的 1 亿规模&#xff0c;显示出开发者社区的活跃度持续攀升。同时&#xff0c;37 个主流包管理器所维护的开源组件数量可能已达到数千…

服务器开机自启动服务

前言&#xff1a; 将服务器中脚本开启自启动执行 步骤&#xff1a; 1.创建一个 systemd 服务文件: /etc/systemd/system/ 目录下创建一个新的服务文件。例如&#xff0c;命名为 myapp.service&#xff1a; sudo nano /etc/systemd/system/myapp.service2.编写 [Unit] Descri…

采用Bright Data+n8n+AI打造自动化新闻助手:每天5分钟实现内容日更

一、引言 在信息爆炸的时代&#xff0c;作为科技领域的内容创作者&#xff0c;我每天都要花费2-3小时手动收集行业新闻、撰写摘要并发布到各个社群。直到我发现Bright Datan8nAI这套"黄金组合"&#xff0c;才真正实现了从"人工搬运"到"智能自动化&qu…

ROS云课三分钟-3D性能测试supertuxkart和游戏推荐等-国际象棋

ROS云课三分钟-破壁篇GCompris-一小部分支持Edu应用列表-2025-CSDN博客 很多时候&#xff0c;有一种思维定势&#xff0c;将人锁住&#xff0c;人口就是囚。 口人囚~口加人等于囚-CSDN博客 如果突破&#xff0c;跳出问题&#xff0c;再看问题。 这门课程&#xff0c;或者这个平…

学习率及相关优化参数详解:驱动模型高效训练

一、引言 在模型微调的核心参数体系中&#xff0c;优化相关参数是决定训练效率与模型性能的关键变量。它们如同精密机械的齿轮&#xff0c;彼此联动、相互影响&#xff0c;共同调控着模型在参数空间中的搜索路径。本文将围绕学习率、训练轮数、批处理大小、梯度累积和学习率调…

golang 柯里化(Currying)

使用场景&#xff1a;参数在语义上属于不同组&#xff0c;Go 语法无法在单次调用中声明多组可变参数&#xff0c;通过柯里化可以实现分步接收参数。 有的参数是在不同时间段产生&#xff0c;使用Currying可以让函数记住&#xff08;缓存&#xff09;参数&#xff0c;避免应用代…

电脑革命家测试版:硬件检测,6MB 轻量无广告 清理垃圾 + 禁用系统更新

各位电脑小白和大神们&#xff0c;我跟你们说啊&#xff01;有个超牛的东西叫电脑革命家测试版&#xff0c;这是吾爱破解论坛的开发者搞出来的免费无广告系统工具集合&#xff0c;主打硬件检测和系统优化&#xff0c;就像是鲁大师这些软件的平替。下面我给你们唠唠它的核心功能…

R 语言科研绘图第 52 期 --- 网络图-分组

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

EfficientLLM: Efficiency in Large Language Models 高效大模型

目录 第1章&#xff1a;引言第2章&#xff1a;观察与见解2.1 总体观察&#xff08;Overall Observations&#xff09;2.2 从EfficientLLM基准中得出的新见解 第3章&#xff1a;背景3.1 大语言模型&#xff08;LLMs&#xff09;3.2 提升LLMs效率的方法3.2.1 硬件创新3.2.2 软件优…

SFTP工具类实现文件上传下载_

import com.jcraft.jsch.*; import com.jcraft.jsch.ChannelSftp.LsEntry;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.*;/*** SFTP工具类*/ public class SftpFile {static Sessio…