淺談AI大模型-MCP

MCP簡介

MCP(Model Context Protocol,模型上下文協議 ),24年11月初的時候Anthropic發了一篇技術博客,推出了他們的模型上下文協議MCP,介紹了一種規范:應用如何為LLM提供上下文。官網稱MCP為AI應用的USB-C端口,提供一種將AI模型連接到不同數據源、工具的標準化方法。

官網:

Introduction - Model Context Protocol

MCP遵循CS(客戶端-服務端)架構,一個AI應用可以連接到多個MCP服務器:

  • MCP Hosts(MCP 應用):如Claude Desktop、IDE、AI應用等,希望通過MCP訪問數據或工具。
  • MCP Clients(MCP 客戶端):與一對一與服務端進行連接,相當于我們應用中實現數據庫交互需要實現的一個客戶端。
  • MCP Servers(MCP 服務端):基于MCP協議實現特定功能的程序。
  • Local Data Sources:本地數據源,提供MCP服務器進行本地訪問。
  • Remote Services:遠端服務,供MCP服務器訪問遠端訪問,例如api的方式。

MCP演變過程

MCP 框架在 AI 代理與數據源和工具的通信方式方面提供了一致性,使整個生態系統更高效、更易于構建,最終創建一個連接性更強、功能更強大的 AI 環境。這一切都始于傳統的 LLM,到 RAG,再到 Agent 系統,再到 MCP。

AI兩年半:模型上下文協議(MCP)的演進過程,共分為四個階段:

第一階段:傳統大型語言模型(Traditional LLMs) 在這個階段,用戶直接與大型語言模型(LLM)進行交互。用戶提出查詢(Query),LLM 返回響應(Response)。這是最基礎的交互模式,此階段最明顯的特點是沒有使用新信息增強響應的機制,傳統LLM(如早期GPT系列)依賴預訓練的靜態知識庫,響應基于模型在訓練數據中學到的模式。它們缺乏實時外部數據訪問能力,輸出受限于訓練時的知識范圍。

第二階段:檢索增強生成(RAG) 在 RAG 階段,LLM 的能力得到了增強。除了直接處理用戶查詢外,LLM 還可以訪問外部數據(External Data)。模型可以從文檔、數據庫和 API 中檢索信息,這意味著 LLM 可以根據外部信息來生成更豐富、更準確的響應。

第三階段:AI Agent 這個階段引入了 AI Agent 的概念。用戶不再直接與單個 LLM 交互,而是與一個編排器 Agent(Orchestrator Agent)交互。這個編排器 Agent 引入協調多個專用代理的 Orchestrator 代理,不同的代理處理特定任務(研究、計劃、執行), 由 AI 管理的復雜工作流程,職責分散,通過專門的代理協作提高解決問題的能力,這使得系統能夠處理更復雜、需要多步驟的任務。

第四階段:模型上下文協議(MCP) 這是演進的最終階段,引入了模型上下文協議(MCP)。用戶與 MCP 進行交互,MCP 能夠整合 AI Agent 和各種服務(Services),AI 模型與外部工具/服務之間的無縫集成, 改進了整個 AI 生態系統的互作性。

LLM、Prompt、RAG、Agent

LLM 與 LLM指令

大型語言模型(LLM)是一種人工智能技術,利用深度學習方法,通過在大量文本數據上進行自監督學習,理解和生成人類語言。它們可以執行多種自然語言處理任務,如問答、文檔摘要、語言翻譯和句子完成。

LLM通常采用Transformer神經網絡架構,具有自注意力機制,能夠并行處理序列數據,顯著減少訓練時間。它們擁有數百億級別的參數,訓練于龐大數據集如Common Crawl(500億網頁)和維基百科(5700萬頁面),并能自學語法、語言和知識,無需人工標注數據。

核心聯系:指令是LLM的“操作界面”

  • 基礎LLM(未微調):
    • 本質是一個“文本補全模型”,根據上下文預測下一個詞,無法直接理解指令
    • 例如輸入“法國的首都是”,它會補全“巴黎”;但若輸入“告訴我法國的首都”,可能生成無關內容。
  • 指令微調的LLM(如ChatGPT):
    • 通過人工標注的指令數據(如“問:法國的首都是?答:巴黎”)進行微調,學會將用戶輸入解析為指令并執行
    • 此時輸入“告訴我法國的首都”,它會明確識別這是問答指令,輸出精準答案。

聯系:指令是用戶與LLM交互的“橋梁”,而指令微調讓LLM從“文本生成器”升級為“任務執行者”。

Prompt提示詞工程

  • 類比:像對助手說“幫我寫一封辭職信”或“用Java寫一個冒泡排序”,Prompt就是你對AI的“任務指令”。
  • 技術角度:Prompt是模型的輸入文本,模型通過分析其語義和上下文生成后續內容。

Prompt的常見類型

類型

特點

示例

指令型

直接給出任務要求

“總結這篇文章的核心觀點”

角色扮演型

指定模型身份

“假設你是莎士比亞,寫一首十四行詩”

示例型

提供輸入-輸出樣例引導

“將‘你好’翻譯成法語:Bonjour → 現在翻譯‘謝謝’”

鏈式思考

要求分步驟推理

“解方程2x+3=7,請逐步解釋”

結構化輸出

指定格式(JSON/表格等)

“列出中國三大城市,格式:{城市:人口}”

角色扮演

你好,就是我們的提示詞,但是現實生活中,當我們和不同人聊天時,即便是完全相同的話,對方也會根據自己的經驗給出不同的答案。

所以我們一般會這么會增加一個系統的prompt,作用是為了描述AI的角色與性格

RAG

RAG(Retrieval-Augmented Generation,檢索增強生成)是一種將信息檢索與大語言模型(LLM)生成能力結合的技術,旨在提升AI回答的準確性、時效性和可解釋性。

RAG解決的核心問題

  • LLM的局限性
    • 知識固化:傳統LLM依賴訓練時的靜態數據,無法實時獲取新知識(如2024年新聞)。
    • 幻覺風險:可能生成看似合理但錯誤的內容。
    • 專業領域不足:對細分領域(如最新醫學研究)缺乏深度知識。
  • RAG的應對:通過動態檢索外部知識庫,為LLM提供實時、準確的參考信息。

RAG的工作原理

流程分為兩步

  1. 檢索(Retrieval)
    • 用戶提問后,RAG從外部知識庫(數據庫、文檔、網頁等)中檢索相關片段。
    • 例如:提問“2024年諾貝爾獎得主是誰?” → 檢索最新新聞或官網數據。
  1. 生成(Generation)
    • 將檢索到的信息與用戶問題一起輸入LLM,生成最終回答。
    • 例如:模型結合檢索到的“2024年諾貝爾化學獎得主:XXX”和問題,生成完整回復。

RAG的小demo

https://cloud.dify.ai/apps

AI Agent

AI Agent(人工智能代理)是指一種能夠自主執行任務、與環境交互并做出決策的AI系統。例如,聊天機器人(如我,Grok)、虛擬助手或自動化工作流中的AI工具都可稱為AI Agent。這些代理通常基于機器學習或大語言模型,能夠處理自然語言、分析數據或執行特定任務。

  • 大語言模型是AI Agent的核心組件之一
  • 許多AI Agent以大語言模型為基礎,利用其自然語言處理能力來理解用戶輸入、生成回復或執行任務。例如,我(Grok)是一個AI Agent,基于xAI的大語言模型技術。
  • LLM提供語義理解、對話生成和知識推理能力,使AI Agent能夠與人類進行智能交互。
  • AI Agent利用LLM實現復雜功能
  • AI Agent通常結合LLM與其他技術(如強化學習、規則引擎或外部工具)來完成特定任務,比如搜索、規劃、自動化工作流等。
  • 例如,LLM可以幫助AI Agent理解用戶意圖(如“幫我訂機票”),并通過調用外部API或工具完成任務。

Function Calling

舉個例子,假設我想讓AI幫我打開并且管理電腦文件

與用戶之間的交互,假設說我要讓AI幫我找原神的安裝目錄

此時AI->解析用戶的User prompt生成system prompt函數去調用ai agent,ai agent將調用結果返回給ai,ai再將結果進行語言組織返回給我們用戶。

存在的問題

有些些Tool的功能其實挺通用的,比如說一個瀏覽網頁的工具,可能多個Agent都需要,那我總不能在每個Agent面都拷貝一份相同的代碼吧,太麻煩了,也不優雅,于是大家想到了一個辦法

引出MCP

MCP模型上下文協議

MCP的幾種通訊模式

Stdio(標準輸入輸出)

  • 描述:通過操作系統的標準輸入(stdin)和標準輸出(stdout)管道進行進程間通信(IPC)。客戶端與服務器以JSON-RPC 2.0格式交換消息,消息以換行符(\n)分隔。
  • 適用場景:主要用于本地通信,適合客戶端和服務器運行在同一臺機器上的場景,例如本地命令行工具、開發環境或調試。
  • 特點
    • 優點:實現簡單,低延遲,無需網絡配置,適合本地批處理任務或簡單工具調用。
  • 缺點:僅限于本地進程通信,不支持分布式部署或遠程訪問,同步阻塞式通信,發送方需等待接收方處理完畢。

SSE(Server-Sent Events,服務器發送事件)

  • 特點:基于 HTTP 的單向通信協議,服務器可主動向客戶端推送數據。
    • 使用長連接(Long Polling),通過事件流(text/event-stream)傳輸數據。
    • 輕量級,適合實時性要求較高的場景(如狀態更新、日志流)。
  • 適用場景
    • Web 應用中服務器向瀏覽器實時推送數據(如股票行情、聊天消息)。
    • Agent 作為服務端向監控端推送連續狀態(如訓練進度、傳感器數據)。

Streamable HTTP(可流式傳輸的HTTP)

  • 特點
    • 基于 HTTP 的流式數據傳輸,支持分塊編碼(Transfer-Encoding: chunked)。
    • 允許逐步發送/接收數據,無需等待完整響應(如大文件傳輸、AI 生成的逐步輸出)。
    • 雙向或單向流式通信,兼容 RESTful 接口。
  • 適用場景
    • 大模型逐詞生成文本(如 ChatGPT 的流式回復)。
    • 代理間傳輸大型文件或實時流數據(如視頻流分析)。

Spring AI

項目要求:選JDK> 17

依賴
 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.6</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webflux</artifactId><version>${spring-ai.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency></dependencies>
Tools注冊
@Configuration
public class ToolConfig {@Resourceprivate ApplicationContext applicationContext;@Beanpublic ToolCallbackProvider toolCallbackProvider() {// 獲取所有工具Bean(假設都在tools包下且有ToolBean注解)Map<String, Object> toolBeans = applicationContext.getBeansWithAnnotation(ToolBean.class);return MethodToolCallbackProvider.builder().toolObjects(toolBeans.values().toArray()).build();}}
函數調用
package com.springai.mcp.jdbc;import com.springai.mcp.annotation.ToolBean;
import jakarta.annotation.Resource;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;@Component
@ToolBean
public class DBTool {@Resourceprivate JdbcTemplate jdbcTemplate;private final String sql = "SELECT TABLE_NAME, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'hwsj_activity'";private final String schemaSql = "SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS " +"WHERE TABLE_SCHEMA = 'hwsj_activity' AND TABLE_NAME = ?";@Tool(name = "getTables", description = "獲取所有可用的表名")public List<String> getTables() {List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);return maps.stream().map(map -> {String tableName = String.valueOf(map.get("TABLE_NAME"));String tableComment = String.valueOf(map.get("TABLE_COMMENT"));return tableName + " (" + tableComment + ")";}).collect(Collectors.toList());}@Tool(name = "getTableSchema", description = "根據表名獲取Schema")public String getTableSchema(@ToolParam(description = "表名") List<String> tables) {return tables.stream().filter(t -> !t.isBlank()).map(tableName -> {List<Map<String, Object>> columns = jdbcTemplate.queryForList(schemaSql, tableName);String tablePrompt = columns.stream().map(map -> {String name = String.valueOf(map.get("COLUMN_NAME"));String type = String.valueOf(map.get("DATA_TYPE"));String comment = String.valueOf(map.get("COLUMN_COMMENT"));return String.format("%s (%s) - %s", name, type, comment);}).collect(Collectors.joining(", \n"));return String.format("Table: %s (%s)\n", tableName, tablePrompt);}).collect(Collectors.joining("\n"));}@Tool(name = "runSql", description = "執行SQL查詢結果")public List<Map<String, Object>> runSql(@ToolParam(description = "sql") String sql) {if (sql.contains("DELETE") || sql.contains("UPDATE") || sql.contains("INSERT")) {throw new RuntimeException("執行SQL僅限于查詢語句!");}return jdbcTemplate.queryForList(sql);}
}

MCP調試

https://github.com/modelcontextprotocol/inspector介紹

本地啟動

訪問

常見的MCP 客戶端介紹

Claude、Cline、Cursor,Trae等,這邊介紹下trae,crusor有時候會經常抽風

MCP通用配置格式

{"mcpServers": {"spring-ai-mysql": {"command": "java","args": ["-jar","/Users/taqu/IdeaProjects/spring-ai-mcp-demo/target/mcp-0.0.1-SNAPSHOT.jar"]}}
}

mcpServers服務器集合

spring-ai-mysql:mcp服務名稱

command:服務器啟動命令

args:啟動參數

實現效果

討論環節

參考文檔

下一代企業IT架構:MCP中臺和軟件的進化_mcp架構-CSDN博客

10分鐘講清楚 Prompt, Agent, MCP 是什么_嗶哩嗶哩_bilibili

https://zhuanlan.zhihu.com/p/1903594795324118469

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912313.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912313.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912313.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL數據庫基礎概述

前言&#xff1a; MySQL作為全球應用最廣泛的開源關系型數據庫管理系統&#xff08;RDBMS&#xff09;?&#xff0c;憑借其高性能、高可靠性與零成本特性&#xff0c;已成為Web應用、企業系統的核心數據引擎。它遵循SQL標準&#xff0c;通過表結構實現數據的結構化存儲&#x…

桌面小屏幕實戰課程:DesktopScreen 16 HTTP

飛書文檔http://https://x509p6c8to.feishu.cn/docx/doxcnrxBs55qGn6xoysTcJpqwRf /home/kemp/work/esp/esp-idf/examples/protocols/http_request 源碼下載方式參考&#xff1a; 源碼下載方式 心知天氣 注冊賬號&#xff0c;申請產品&#xff0c;獲取密鑰 產品 天氣數據 H…

vs2019 + QT下 vs2019創建的項目打開ui文件失敗

問題: 在vs2019 QT模式下。使用2019創建工程后。點擊ui文件打開時。出現奔潰&#xff0c;如下圖 解決方式&#xff1a; ui文件->右鍵->打開方式->添加->程序->點擊三個點->qcreator(qt安裝目錄) ->設置為默認值->確定 點擊設置為默認值&#xff0c;點…

WPS之PPT鏤空效果實現

1、準備一張圖片&#xff0c;剪切存入剪貼板 2、把圖片設為背景 右鍵 》 設置背景格式 》 圖片或紋理填充 》 圖片填充選擇剪貼板 3、插入一個矩形覆蓋全圖&#xff0c;設置無線條漸變填充從左到右 4、插入圓角矩形 5、單擊小黃點調整弧度 6、選擇無線條幻燈片背景填充 7、插…

服務注冊中心的本質抉擇:從業務本質看AP與CP的終極之選

本文從服務注冊中心的本質職責出發&#xff0c;通過分析其核心功能、業務場景和技術約束&#xff0c;深入探討服務注冊中心在架構設計上應該優先保證AP還是CP特性。文章首先剖析服務注冊中心的根本使命&#xff0c;然后從分布式系統原理、生產實踐案例和性能表現三個維度進行對…

mybatis-plus從入門到入土(一):快速開始

? 朋友們, 大家好, 從今天開始我想開一個系列博客。名字起的比較隨意就叫Mybatis-Plus從入門到入土, 這系列博客的定位是從基礎使用開始, 然后逐步深入全面的了解Mybatis-Plus框架, 寫這個博客的主要原因是工作中經常用到Mybatis-Plus框架, 因而對這個框架相對比較了解一些, 順…

如何快速將iPhone中的文本保存到電腦上

您的 iPhone 上是否有很多重要的短信&#xff0c;并且您想將短信備份到計算機上&#xff1f;我們都知道傳輸消息與傳輸照片不同&#xff0c;但幸運的是&#xff0c;您可以使用相關的工具和方法來實現。我們介紹了 4 種方法來解釋如何將 iPhone 中的文本保存到計算機。所有的辦法…

【OpenGL學習】(八)圖形變換

OpenGL圖形變換介紹&#xff1a;https://learnopengl-cn.github.io/01%20Getting%20started/07%20Transformations 【OpenGL學習】&#xff08;八&#xff09;圖形變換 本項目將通過變換矩陣&#xff0c;對【OpenGL學習】&#xff08;七&#xff09;紋理單元 中的圖形進行縮放…

從理論到實戰:解密大型語言模型的核心技術與應用指南

一、Transformer&#xff1a;語言理解與生成的基石 Transformer 架構的出現&#xff0c;徹底改變了自然語言處理&#xff08;NLP&#xff09;的格局。它以“注意力”為核心&#xff0c;將全局依賴的捕捉效率推向新高。下面用 圖簡要概覽其數據流&#xff1a; 從上圖可見&#…

kali換源

在Kali Linux中切換軟件源可以提高軟件下載速度&#xff0c;下面為你介紹切換源的方法。 一、備份原配置文件 首先備份原配置文件&#xff0c;避免操作失誤導致問題&#xff1a; sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak二、編輯源配置文件 使用以下命令編…

從決策樹到隨機森林:Python機器學習里的“樹形家族“深度實戰與原理拆解

引言 在機器學習的算法森林中&#xff0c;有一對"樹形兄弟"始終占據著C位——決策樹像個邏輯清晰的"老教授"&#xff0c;用可視化的樹狀結構把復雜決策過程拆解成"是/否"的簡單判斷&#xff1b;而它的進階版隨機森林更像一支"精英軍團&quo…

uniapp,每次請求時,中斷上次請求

1.封裝uni.request import {BASE_URL} from "/config/config.js"import store from "/store/index.js"; class RequestManager {constructor() {this.requestTasks new Map() // 存儲所有請求任務this.baseURL BASE_URLthis.header {Content-Type: app…

DuDuTalk | 武漢賽思云科技有限公司通過武漢市人工智能企業認定!

近日&#xff0c;2025年武漢市人工智能企業名單正式公布&#xff01;武漢賽思云科技有限公司&#xff08;以下簡稱賽思云科技&#xff09;憑借卓越的技術實力與創新成果&#xff0c;成功入選武漢市人工智能企業。這是對公司長期深耕AI語音智能領域、推動數字化轉型的高度認可&a…

STM32實現傅里葉變換精確計算采樣電流值

以下是基于離散傅里葉變換(DFT)算法在單片機上實現精確電流值計算的全流程指南,結合硬件選型、算法優化、代碼實現及實際應用場景分析,綜合多篇技術文檔的實踐要點: ?? 一、系統設計核心要點 硬件選型與配置 單片機選擇:優先采用帶硬件浮點單元(FPU)的STM32F4/F7系列…

python 爬蟲 下載視頻

測試 OK II 在開發者工具里面 直接搜索m3u8 可以直接找相對應連接地址繼續分析 這個m3u8 url地址是從哪里過來的 在什么地方有 III 我們想要視頻數據 <m3u8連接> 在 網頁源代碼里面有獲取整個視頻內容 --》分為N個視頻片段《ts文件》-->在m3u8連接里面--> 視頻播放…

希爾伯特空間:無窮維度的幾何世界

希爾伯特空間&#xff1a;無窮維度的幾何世界 從量子物理到信號處理&#xff0c;希爾伯特空間為現代科學與工程提供了強大的數學框架 引言&#xff1a;無限維度的舞臺 在數學和物理學的廣闊領域中&#xff0c;希爾伯特空間扮演著至關重要的角色。這個完備的內積空間不僅推廣了…

Transformer結構與代碼實現詳解

參考&#xff1a; Transformer模型詳解&#xff08;圖解最完整版&#xff09; - 知乎https://zhuanlan.zhihu.com/p/338817680GitHub - liaoyanqing666/transformer_pytorch: 完整的原版transformer程序&#xff0c;complete origin transformer programhttps://github.com/lia…

Adobe InDesign 2025

Adobe InDesign 2025(ID2025)桌面出版軟件和在線發布工具,報刊雜志印刷排版設計軟件。Adobe InDesign中文版主要用于傳單設計,海報設計,明信片設計,電子書設計,排版,手冊設計,數字雜志,iPad應用程序和在線交互文檔。它是首款支持Unicode文本處理的主流DTP應用程序,率先使用新型…

Linux下獲取指定時間內某個進程的平均CPU使用率

一、引言 通過pidstat工具可以測量某個進程在兩個時間點之間的平均CPU利用率。 二、pidstat工具的安裝 pidstat屬于sysstat套件的一部分。以Ubuntu系統為例&#xff0c;執行下面命令下載安裝sysstat套件&#xff1a; apt-get install sysstat 執行完后&#xff0c;終端執行p…

1.4 蜂鳥E203處理器NICE接口詳解

一、NICE接口的概念 NICE&#xff08;Nuclei Instruction Co-unit Extension&#xff09;接口是蜂鳥E203處理器中用于擴展自定義指令的協處理器接口&#xff0c;基于RISC-V標準協處理器擴展機制設計。它允許用戶在不修改處理器核流水線的情況下&#xff0c;通過外部硬件加速特…