【NLP】将 LangChain 与模型上下文协议 (MCP) 结合使用

news2025/7/23 17:48:57

  🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

一、MCP出现的目的

MCP 的出现是为了解决大型语言模型 (LLM) 应用程序的一个关键限制,即它们与外部数据源和工具的隔离。

基于 LLM 的应用的重点领域之一是数据传输。将数据传送到 LLM 进行推理,这是 RAG 实现的目标,而微调和 MCP 的目标也是如此。

MCP 的主要目的是标准化基于 LLM 的应用程序如何连接到不同的系统,如下图所示:

二、消除定制集成

AI 代理面临的挑战是将数据传递给 AI 代理,或者换句话说,将基于 AI 代理/LLM 的应用程序集成到外部数据源。

人们曾多次尝试利用 GUI、Web 浏览器和 Web 搜索来实现无缝集成。这些方法各有优缺点。

MCP 具有作为通用接口发挥作用的潜力,可以将其视为 AI 的 USB-C 的虚拟/软件版本。

实现 LLM/AI 代理和外部资源之间的无缝、安全和可扩展的数据交换。

MCP 采用客户端-服务器架构,其中 MCP 主机(AI 应用程序)与 MCP 服务器(数据/工具提供商)进行通信

开发人员可以使用MCP构建可重复使用的模块化连接器,并为流行平台提供预构建的服务器,从而创建社区驱动的生态系统。

MCP 的开源特性鼓励创新,允许开发人员扩展其功能,同时通过细粒度权限等功能保持安全性。

最终,MCP 旨在将 AI 代理从孤立的聊天机器人转变为深度集成到数字环境中的情境感知、可互操作的系统。

三、分步说明

Anthropic 的模型上下文协议 (MCP) 是一个开源协议,用于将 LLM 与上下文、工具和提示连接起来。它拥有越来越多的用户,可用于连接各种工具或数据源。在这里,我们将演示如何将任何 MCP 服务器连接到 LangGraph 代理并使用 MCP 工具……

如果您像我一样,获得一个原型作品,无论它多么简单,都会带来极大的清晰感和理解力;至少在我自己看来是这样。

首先,打开一个终端应用程序(WIN+R输入CMD)。

使用conda创建python虚拟环境用来运行代码;下面的命令创建了名为langchain_mcp_env的虚拟环境。

conda create -n langchain_mcp_env python=3.11.11

然后运行此命令来激活(进入)虚拟环境:

conda activate langchain_mcp_env langchain_openai langgraph

按顺序运行以下代码行:

pip install langchain-mcp-adapters

在一个终端选项卡中,创建一个文本文件:

vim math_server.py

并粘贴以下python代码:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Math_MCP")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

@mcp.tool()
def multiply(a: int, b: int) -> int:
    """Multiply two numbers"""
    return a * b

@mcp.tool()
def sub(a: int, b: int) -> int:
    """Multiply two numbers"""
    return a - b

@mcp.tool()
def divide(a: int, b: int) -> float:
    """Multiply two numbers"""
    return (a / b)

if __name__ == "__main__":
    mcp.run(transport="stdio")

现在我们要使用ollama运行模型服务……

使用ollama自定义qwen2.5:7b模型名称为gpt-4o(避免不能进行工具调用)

ollama cp qwen2.5:7b gpt-4o:latest 

启动ollama模型服务

ollama serve

 创建一个文件来粘贴客户端代码:

vim client.py

将以下代码粘贴到文件中: 

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import asyncio


model = ChatOpenAI(base_url="http://localhost:11434/v1",api_key="EMPTY",model="gpt-4o")

server_params = StdioServerParameters(
    command="python",
    # Make sure to update to the full absolute path to your math_server.py file
    args=["math_server.py"],
)

async def run_agent():
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            # Initialize the connection
            await session.initialize()

            # Get tools
            tools = await load_mcp_tools(session)

            # Create and run the agent
            agent = create_react_agent(model, tools)
            agent_response = await agent.ainvoke({"messages": "计算下面算术题给出最终答案:(4 + 5 -3) x (12÷3) -11 ?"})

            return agent_response

# Run the async function
if __name__ == "__main__":
    result = asyncio.run(run_agent())
    print("调用工具列表如下:\n")
    print(result['messages'][1].tool_calls)
    print("大模型各个步骤输出:\n")
    print('\n==============================\n'.join([i.content for i in result['messages']]))

使用以下命令运行客户端: 

python client.py

客户端将运行一次并以以下输出结束: 

四、结论

MCP 是一种将 AI 代理与提供上下文和记忆的信息和服务相集成的便捷方式。MCP 通过标准化接口与模块化设计,打破了大型语言模型(LLM)与外部数据源、工具的隔离壁垒,实现了数据传输与功能集成的高效化与通用化。其客户端 - 服务器架构不仅支持开发者构建可复用的连接器(如数学计算工具示例),还通过开源生态与细粒度权限管理,推动 AI 代理从孤立的聊天机器人向深度融入数字环境的情境感知系统进化。从 RAG 的数据推理到模型微调,MCP 为 LLM 应用提供了统一的数据交互范式,助力 AI 工具链在跨平台、跨系统场景下实现安全、可扩展的无缝协同,成为推动 AI 应用落地的关键基础设施。

 

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

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

相关文章

使用NMEA Tools生成GPS轨迹图

前言 在现代科技快速发展的时代,GPS定位技术已经广泛应用于各种领域,如导航、物流、运动追踪等。为了获取和分析GPS数据,我们常常需要使用一些专业的工具。本文将详细介绍如何使用一款名为“NMEA Tools”的APK应用,结合GPSVisual…

1. pytorch手写数字预测

1. pytorch手写数字预测 1.背景2.准备数据集2.定义模型3.dataloader和训练4.训练模型5.测试模型6.保存模型 1.背景 因为自身的研究方向是多模态目标跟踪,突然对其他的视觉方向产生了兴趣,所以心血来潮的回到最经典的视觉任务手写数字预测上来&#xff0…

AXI 协议补充(二)

axi协议存在slave 和master 之间的数据交互,在ahb ,axi-stream 高速接口 ,叠加大位宽代码逻辑中,往往有时序问题,valid 和ready 的组合电路中的问题引发的时序问题较多。 本文根据axi 协议和现有解决反压造成的时序问题的方法做一个详细的科普。 1. 解决时序问题的方法:…

Linux 基础指令入门指南:解锁命令行的实用密码

文章目录 引言:Linux 下基本指令常用选项ls 指令pwd 命令cd 指令touch 指令mkdir 指令rmdir 指令 && rm 指令man 指令cp 指令mv 指令cat 指令more 指令less 指令head 指令tail 指令date 指令cal 指令find 指令按文件名搜索按文件大小搜索按修改时间搜索按文…

标准精读:2025 《可信数据空间 技术架构》【附全文阅读】

《可信数据空间 技术架构》规范了可信数据空间的技术架构,明确其作为国家数据基础设施的定位,以数字合约和使用控制技术为核心,涵盖功能架构(含服务平台与接入连接器的身份管理、目录管理、数字合约管理等功能)、业务流程(登记、发现、创建空间及数据流通利用)及安全要求…

山东大学软件学院项目实训-基于大模型的模拟面试系统-面试官和面试记录的分享功能(2)

本文记录在发布文章时&#xff0c;可以添加自己创建的面试官和面试记录到文章中这一功能的实现。 前端 首先是在原本的界面的底部添加了两个多选框&#xff08;后期需要美化调整&#xff09; 实现的代码&#xff1a; <el-col style"margin-top: 1rem;"><e…

Webug4.0靶场通关笔记05- 第5关SQL注入之过滤关键字

目录 一、代码审计 1、源码分析 2、SQL注入分析 &#xff08;1&#xff09;大小写绕过 &#xff08;2&#xff09;双写绕过 二、第05关 过滤型注入 1、进入靶场 2、sqlmap渗透 &#xff08;1&#xff09;bp抓包保存报文 &#xff08;2&#xff09;sqlmap渗透 &…

ONLYOFFICE文档API:更强的安全功能

在数字化办公时代&#xff0c;文档的安全性与隐私保护已成为企业和个人用户的核心关切。如何确保信息在存储、传输及协作过程中的安全&#xff0c;是开发者与IT管理者亟需解决的问题。ONLYOFFICE作为一款功能强大的开源办公套件&#xff0c;不仅提供了高效的文档编辑与协作体验…

解析楼宇自控系统:分布式结构的核心特点与优势展现

在建筑智能化发展的进程中&#xff0c;楼宇自控系统作为实现建筑高效运行与管理的关键&#xff0c;其系统结构的选择至关重要。传统的集中式楼宇自控系统在面对日益复杂的建筑环境和多样化的管理需求时&#xff0c;逐渐暴露出诸多弊端&#xff0c;如可靠性低、扩展性差、响应速…

C#数字图像处理(三)

文章目录 前言1.图像平移1.1 图像平移定义1.2 图像平移编程实例 2.图像镜像2.1 图像镜像定义2.2 图像镜像编程实例 3.图像缩放3.1 图像缩放定义3.2 灰度插值法3.3 图像缩放编程实例 4.图像旋转4.1 图像旋转定义4.2 图像旋转编程实例 前言 在某种意义上来说&#xff0c;图像的几…

SQL Transactions(事务)、隔离机制

目录 Why Transactions? Example: Bad Interaction Transactions ACID Transactions COMMIT ROLLBACK How the Transaction Log Works How Data Is Stored Example: Interacting Processes Interleaving of Statements Example: Strange Interleaving Fixing the…

【机器学习基础】机器学习入门核心:Jaccard相似度 (Jaccard Index) 和 Pearson相似度 (Pearson Correlation)

机器学习入门核心&#xff1a;Jaccard相似度 &#xff08;Jaccard Index&#xff09; 和 Pearson相似度 &#xff08;Pearson Correlation&#xff09; 一、算法逻辑Jaccard相似度 (Jaccard Index)**Pearson相似度 (Pearson Correlation)** 二、算法原理与数学推导1. Jaccard相…

QT之头像剪裁效果实现

文章目录 源码地址&#xff0c;环境&#xff1a;QT5.15&#xff0c;MinGW32位效果演示导入图片设置剪裁区域创建剪裁小窗口重写剪裁小窗口的鼠标事件mousePressEventmouseMoveEventmouseReleaseEvent 小窗口移动触发父窗口的重绘事件剪裁效果实现 源码地址&#xff0c;环境&…

【GPT入门】第40课 vllm与ollama特性对比,与模型部署

【GPT入门】第40课 vllm与ollama特性对比&#xff0c;与模型部署 1.两种部署1.1 vllm与ollama特性对比2. vllm部署2.1 服务器准备2.1 下载模型2.2 提供模型服务 1.两种部署 1.1 vllm与ollama特性对比 2. vllm部署 2.1 服务器准备 在autodl 等大模型服务器提供商&#xff0c;…

unity开发棋牌游戏

使用unity开发的棋牌游戏&#xff0c;目前包含麻将、斗地主、比鸡、牛牛四种玩法游戏。 相关技术 客户端&#xff1a;unity 热更新&#xff1a;xlua 服务器&#xff1a;c Web服务器&#xff1a;ruoyi 游戏视频 unity开发棋牌游戏 游戏截图

Nat Commun项目文章 ▏小麦CUTTag助力解析转录因子TaTCP6调控小麦氮磷高效利用机制

今年2月份发表在《Nature Communications》&#xff08;IF14.4&#xff09;的“TaTCP6 is required for efficientand balanced utilization of nitrate and phosphorus in wheat”揭示了TaTCP6在小麦氮磷利用中的关键调控作用&#xff0c;为优化肥料利用和提高作物产量提供了理…

C 语言开发中常见的开发环境

目录 1.Dev-C 2.Visual Studio Code 3.虚拟机 Linux 环境 4.嵌入式 MCU 专用开发环境 1.Dev-C 使用集成的 C/C 开发环境&#xff08;适合基础学习&#xff09;,下载链接Dev-C下载 - 官方正版 - 极客应用 2.Visual Studio Code 结合 C/C 扩展 GCC/MinGW 编译器&#xff0c…

vscode命令行debug

vscode命令行debug 一般命令行debug会在远程连服务器的时候用上&#xff0c;命令行debug的本质是在执行时暴露一个监听端口&#xff0c;通过进入这个端口&#xff0c;像本地调试一样进行。 这里提供两种方式&#xff1a; 直接在命令行中添加debugpy&#xff0c;适用于python…

Matlab作图之 subplot

1. subplot(m, n, p) 将当前图形划分为m*n的网格&#xff0c;在 p 指定的位置创建坐标轴 matlab 按照行号对子图的位置进行编号 第一个子图是第一行第一列&#xff0c;第二个子图是第二行第二列......... 如果指定 p 位置存在坐标轴&#xff0c; 此命令会将已存在的坐标轴设…

【机器学习基础】机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)

机器学习入门核心算法&#xff1a;层次聚类算法&#xff08;AGNES算法和 DIANA算法&#xff09; 一、算法逻辑二、算法原理与数学推导1. 距离度量2. 簇间距离计算&#xff08;连接标准&#xff09;3. 算法伪代码&#xff08;凝聚式&#xff09; 三、模型评估1. 内部评估指标2. …