自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MCP融合Spring AI,Java程序員大模型技術(shù)再上一層樓

人工智能
本文介紹模型上下文協(xié)議(MCP),其與Spring AI集成,為解決上述難題提供有效途徑,助力大語言模型在企業(yè)應(yīng)用開發(fā)中更好地落地。

在當(dāng)下的技術(shù)發(fā)展浪潮中,大語言模型(LLMs)正深度滲透至企業(yè)應(yīng)用開發(fā)領(lǐng)域,持續(xù)改寫著該領(lǐng)域的格局。開發(fā)者積極將其融入現(xiàn)代解決方案。然而,快速發(fā)展背后,大語言模型通信和上下文處理缺乏標(biāo)準(zhǔn)化協(xié)議的問題日益凸顯。

本文介紹模型上下文協(xié)議(MCP),其與Spring AI集成,為解決上述難題提供有效途徑,助力大語言模型在企業(yè)應(yīng)用開發(fā)中更好地落地。

1.問題:缺乏規(guī)范的大語言模型集成

如今,大多數(shù)開發(fā)者通過特定供應(yīng)商的API(如OpenAI、Anthropic或Azure OpenAI)與大語言模型進(jìn)行交互。盡管這些API功能強(qiáng)大,但在沒有標(biāo)準(zhǔn)接口的情況下進(jìn)行集成會導(dǎo)致以下問題:

  • 供應(yīng)商鎖定:更換大語言模型供應(yīng)商需要重寫核心邏輯。
  • 上下文處理不一致:不同供應(yīng)商在管理長期記憶、知識或工具訪問方面存在差異。
  • 系統(tǒng)行為不明確:沒有正式規(guī)范來定義模型的需求,以及它們?nèi)绾闻c外部工具和函數(shù)進(jìn)行交互。

而模型上下文協(xié)議(MCP)正是為解決這些問題而生。

2.什么是MCP

模型上下文協(xié)議(MCP)是一種與供應(yīng)商無關(guān)的協(xié)議,旨在實(shí)現(xiàn)大語言模型、智能體、工具、記憶系統(tǒng)和外部服務(wù)之間的互操作性。

模型上下文協(xié)議(MCP)是由Anthropic開發(fā)的開放標(biāo)準(zhǔn),如今已成為一種開放協(xié)議,得到了包括LangChain、LangGraph,甚至Spring AI在內(nèi)的多個社區(qū)和工具的支持。

可以把MCP想象成大語言模型領(lǐng)域的REST協(xié)議:它是一個簡潔且可擴(kuò)展的規(guī)范,定義了如何構(gòu)建輸入、輸出、工具、記憶和上下文。

3.人工智能的通用標(biāo)準(zhǔn):一次編寫,隨處可用

在AI領(lǐng)域,模型上下文協(xié)議(MCP)致力于打造統(tǒng)一的通信規(guī)范。OpenAI、Anthropic等行業(yè)巨頭已采用MCP。

這一協(xié)議為開發(fā)者帶來極大便利。過去,針對不同大語言模型供應(yīng)商和輔助應(yīng)用,需構(gòu)建定制集成?,F(xiàn)在,借助MCP,開發(fā)者只需實(shí)現(xiàn)一次,就能在Claude、ChatGPT等眾多應(yīng)用,以及未來支持該協(xié)議的客戶端中復(fù)用,有效提升開發(fā)效率,降低成本。

4.MCP如何工作:簡單的客戶端 - 服務(wù)器架構(gòu)

MCP的基礎(chǔ)是簡潔且模塊化的客戶端 - 服務(wù)器架構(gòu)??梢詫⑵湎胂蟪梢粋€中心輻射型模型,宿主應(yīng)用程序(客戶端)通過與多個專門的MCP服務(wù)器進(jìn)行通信來完成任務(wù)。

圖片圖片

具體如下:

  • MCP宿主:這些是前端工具或應(yīng)用程序,如Claude桌面應(yīng)用、代碼編輯器或人工智能智能體,它們希望與數(shù)據(jù)、工具或邏輯進(jìn)行交互。
  • MCP客戶端:每個宿主應(yīng)用程序通過該協(xié)議與一個或多個MCP服務(wù)器保持專用連接。這使得客戶端可以發(fā)送請求、接收響應(yīng),甚至觸發(fā)工具。
  • MCP服務(wù)器:這些是輕量級的后端程序,通過模型上下文協(xié)議公開特定功能,如訪問本地文件、觸發(fā)API或運(yùn)行工作流。每個服務(wù)器都可以是專門構(gòu)建且獨(dú)立的。
  • 本地?cái)?shù)據(jù)源:用戶本地機(jī)器上的文件、數(shù)據(jù)庫或微服務(wù),可由MCP服務(wù)器安全訪問。
  • 遠(yuǎn)程服務(wù):MCP服務(wù)器可以連接的API或云平臺,擴(kuò)展了服務(wù)器的功能范圍,使其超越本地環(huán)境。

MCP支持開發(fā)者圍繞一種名為JsonRpcMessage的正式模式來構(gòu)建大語言模型交互。

5.MCP與Spring AI集成

Spring AI通過提供即用型的Spring Boot啟動器,使將模型上下文協(xié)議(MCP)集成到應(yīng)用程序變得輕松。這些啟動器涵蓋客戶端和服務(wù)器端設(shè)置,并支持多種通信傳輸方式,如標(biāo)準(zhǔn)輸入輸出(STDIO)和服務(wù)器發(fā)送事件(SSE)。

5.1 客戶端啟動器

這些啟動器幫助應(yīng)用程序連接到MCP服務(wù)器:

  • spring-ai-starter-mcp-client:核心的MCP客戶端,內(nèi)置對基于STDIO和HTTP的SSE通信的支持。
  • spring-ai-starter-mcp-client-webflux:使用WebFlux為SSE傳輸添加響應(yīng)式支持。

5.2 服務(wù)器啟動器

這些用于使用Spring Boot構(gòu)建自定義MCP服務(wù)器:

  • spring-ai-starter-mcp-server:使用STDIO傳輸?shù)幕痉?wù)器設(shè)置,適用于基于進(jìn)程的通信。
  • spring-ai-starter-mcp-server-webmvc:使用Spring MVC提供SSE服務(wù)器支持,適用于基于Servlet的環(huán)境。
  • spring-ai-starter-mcp-server-webflux:適用于使用Spring WebFlux的應(yīng)用程序的SSE服務(wù)器的響應(yīng)式版本。

支持STDIO、Servlet SSE、WebFlux和WebMVC傳輸。

圖片圖片

6.使用STDIO傳輸啟動Spring AI MCP服務(wù)器

以下是一個完整的示例,展示如何使用Spring AI設(shè)置MCP服務(wù)器。該示例功能完備,且使用Spring Boot進(jìn)行了清晰的組織。此示例使用spring-ai-starter-mcp-server,并可選支持STDIO和/或基于HTTP的SSE傳輸。

官方文檔提供了詳細(xì)指南:https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html

6.1 Maven依賴

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-mcp-server-spring-boot-starter</artifactId>
</dependency>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
@SpringBootApplication
publicclass SpringMcpApplication {
    privatestaticfinal Logger log = LoggerFactory.getLogger(SpringMcpApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(SpringMcpApplication.class, args);
    }

    @Bean
    public List<ToolCallback> danTools(SpringMCPServerService courseService) {
        log.info(Arrays.toString(Thread.currentThread().getStackTrace()).replace(',', '\n'));

        return Arrays.asList(ToolCallbacks.from(courseService));
    }
}

@Service
publicclass SpringMCPServerService {
    @Tool(name = "get_system_information", description = "Gathers detailed system-level diagnostics including directory info, OS and architecture details, JVM configuration, memory stats, CPU load, and installed software versions.")
    public static SystemInfo getSystemInfo() {
        SystemInfo info = new SystemInfo();
        Properties props = System.getProperties();
        info.osName = props.getProperty("os.name");
        //......
    }
}
spring.application.name=courses
spring.main.web-application-type=none
spring.ai.mcp.server.name=jagnya-selflearn-mcp
spring.ai.mcp.server.versinotallow=0.0.1
spring.main.banner-mode=off
logging.pattern.cnotallow=

6.2 關(guān)鍵配置說明

  • STDIO模式要求

禁用Web應(yīng)用類型(spring.main.web-application-type=none

禁用Spring啟動橫幅(spring.main.banner-mode=off

清空控制臺日志模式(logging.pattern.cnotallow=

7.MCP服務(wù)器與Claude(Anthropic)客戶端的集成

現(xiàn)在我們已經(jīng)實(shí)現(xiàn)了MCP服務(wù)器,接下來要將它與Anthropic的Claude AI進(jìn)行集成。這可以驗(yàn)證服務(wù)器是否正常運(yùn)行,以及是否能夠?yàn)橄馛laude這樣符合MCP規(guī)范的客戶端提供上下文數(shù)據(jù)。

圖片圖片

8.MCP服務(wù)器與Claude桌面應(yīng)用集成:分步指南

以下是如何將基于Spring的MCP服務(wù)器與Claude桌面應(yīng)用(Anthropic)進(jìn)行集成,以驗(yàn)證一切是否按預(yù)期工作:

1) 如果尚未下載,請從Anthropic網(wǎng)站下載并安裝Claude桌面應(yīng)用。

2) 啟動Claude桌面應(yīng)用程序。Claude設(shè)計(jì)為支持通過模型上下文協(xié)議(MCP)與自定義人工智能模型服務(wù)器進(jìn)行通信。

  • 進(jìn)入Claude的“設(shè)置”。
  • 導(dǎo)航到“開發(fā)者”部分。
  • 點(diǎn)擊“編輯配置”以打開claude_desktop_config.json
  • 使用自定義MCP服務(wù)器配置更新claude_desktop_config.json。例如:
{
    "mcpServers": {
        "jagnya-spring-mcp": {
            "command": "/Users/user/Library/Java/JavaVirtualMachines/sapmachine-21.0.6/Contents/Home/bin/java",
            "args": [
                "-jar",
                "/Users/<add ur path to jar>/spring-mcp/target/spring-mcp-0.0.1-SNAPSHOT.jar"
            ]
        }
    }
}

3) 保存配置后,重啟Claude桌面應(yīng)用。

如果一切配置正確,你會看到:

  • 一個代表開發(fā)者工具的錘子圖標(biāo)???
  • 一個代表自定義集成的插件圖標(biāo)??
  • 點(diǎn)擊錘子圖標(biāo)打開MCP工具。
  • 在Claude中輸入以下內(nèi)容:Hi, get my system details with the Java version installed.
  • Claude會彈出一個權(quán)限請求對話框,點(diǎn)擊“允許”。

圖片圖片


責(zé)任編輯:武曉燕 來源: Java學(xué)研大本營
相關(guān)推薦

2015-03-30 09:48:33

程序員更上一層樓

2020-03-01 18:00:00

人工智能AI環(huán)保

2012-05-24 09:32:55

虛擬化vmareIBM

2024-06-20 13:22:13

C++11C++模板

2019-08-26 14:53:32

數(shù)據(jù)中心運(yùn)維管理宕機(jī)

2013-06-06 06:52:28

Ubuntu 13.0

2023-12-06 16:50:01

Godot 4.2開源

2019-08-26 10:10:57

數(shù)據(jù)中心運(yùn)維宕機(jī)

2012-05-28 14:18:33

Web

2011-03-31 09:51:45

Windows XP

2023-12-19 18:08:47

MySQL方法優(yōu)化查詢

2009-10-23 14:46:43

2011-03-31 09:57:54

Windows XP

2023-11-01 13:34:37

Python

2023-08-31 08:25:25

2017-11-29 15:57:00

敏捷開發(fā)DevOps

2021-09-21 15:17:09

API微服務(wù)后端

2014-08-18 14:54:54

Git

2010-05-25 10:12:17

微軟虛擬化技術(shù)Hyper-V

2023-04-26 13:55:00

Python開發(fā)技能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號