【AI大模型】 LangChain + 模型上下文协议(MCP):AI 智能体 Demo

LangChain + 模型上下文协议(MCP):AI 智能体 Demo

MCP(Model Context Protocol) 是由 Anthropic 推出的开源协议,旨在为大型语言模型(LLM)提供安全、可解释、可扩展的外部数据与工具集成方案。


1. 背景与动机:MCP 的意义何在?

在基于大语言模型构建应用时,一个核心痛点是 数据与工具的接入困难。模型虽然能力强大,但通常处于“沙盒”状态,无法直接访问外部环境。

为此,RAG(检索增强生成)、微调、插件等方案陆续诞生。而 MCP 的目标正是统一接口协议,以便标准化集成上下文、工具、服务与数据源。

图片

✅ MCP 的愿景

  • 提供标准协议:简化 LLM 与外部系统的通信
  • 安全可扩展:支持权限管理、细粒度访问控制
  • 模块化生态:建立社区驱动的“AI工具市场”

可以将 MCP 看作 AI 世界的“软件版 USB-C”。

MCP 架构图MCP 架构图

官方资源

  • MCP 协议简介:https://modelcontext.org/
  • GitHub 示例项目:https://github.com/modelcontextprotocol/servers

2. 如何用 LangChain 集成 MCP?

本节将通过实操演示,介绍如何将 LangChainMCP 工具集成,打造一个拥有算术能力的 AI 智能体。
注意:示例来自 https://github.com/langchain-ai/langchain-mcp-adapters

准备步骤概览:

步骤内容
1创建并激活 Python 虚拟环境
2安装必要依赖
3编写 MCP Server(数学工具)
4编写客户端接入 LangChain 智能体
5分析输出流程

3. 环境准备与依赖安装

创建虚拟环境

python3 -m venv MCP_Demosource MCP_Demo/bin/activate

安装依赖:

pip install langchain-mcp-adapters langgraph langchain-openaiexport OPENAI_API_KEY=<your_api_key>

请将文本<your_api_key> 替换为您的OpenAI API密钥。

4. 编写 MCP Server(数学计算工具)

创建 math_server.py 文件:

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Math")
@mcp.tool()def add(a: int, b: int) -> int:    return a + b
@mcp.tool()def multiply(a: int, b: int) -> int:    return a * b
if __name__ == "__main__":    mcp.run(transport="stdio")

运行服务器:

python3 math_server.py

5. 编写客户端(集成 LangGraph 智能体)

创建 client.py

from mcp import ClientSession, StdioServerParametersfrom mcp.client.stdio import stdio_clientfrom langchain_mcp_adapters.tools import load_mcp_toolsfrom langgraph.prebuilt import create_react_agentfrom langchain_openai import ChatOpenAIimport asyncio
model = ChatOpenAI(model="gpt-4o")
server_params = StdioServerParameters(    command="python",    args=["math_server.py"],  # 替换为绝对路径)
async def run_agent():    async with stdio_client(server_params) as (read, write):        async with ClientSession(read, write) as session:            await session.initialize()            tools = await load_mcp_tools(session)            agent = create_react_agent(model, tools)            result = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})            return result
if __name__ == "__main__":    print(asyncio.run(run_agent()))

运行客户端:

python3 client.py

6. 消息交互流程解析

完整消息

客户端输出如下:

{    'messages': [        # 1. 用户原始提问        HumanMessage(            content="what's (3 + 5) x 12?",            id='87a8b6b6-...',  # 消息唯一标识            metadata={...}        ),
        # 2. AI首次响应(工具调用)        AIMessage(            content='',            tool_calls=[                {                    'name': 'add',          # 第一个工具调用:加法                    'args': {'a':3, 'b':5},  # 参数                    'id': 'call_1eyRzR...'   # 工具调用ID                },                {                    'name': 'multiply',      # 第二个工具调用:乘法                    'args': {'a':8, 'b':12},                    'id': 'call_q82CX...'                }            ],            token_usage={...},             # 本次调用的Token消耗            finish_reason='tool_calls'      # 终止原因:触发了工具调用        ),
        # 3. 工具执行结果返回        ToolMessage(            content='8',                   # add工具的执行结果            name='add',                     # 对应工具名称            tool_call_id='call_1eyRzR...'   # 关联的工具调用ID        ),        ToolMessage(            content='96',                   # multiply工具的执行结果            name='multiply',            tool_call_id='call_q82CX...'        ),
        # 4. AI最终响应        AIMessage(            content='content=‘The result of (3 + 5) × 12 is 96.',  # 最终自然语言答案            finish_reason='stop',          # 正常终止            token_usage={                  # 总Token消耗                'input_tokens': 143,                'output_tokens': 22,                'total_tokens': 165            }        )    ]}

执行流程说明

  1. 用户输入阶段

    • HumanMessage 记录原始问题:“3加5乘12等于多少?”
    • 包含元数据:消息ID、响应元数据等
  2. AI推理阶段

    • 第一步调用add工具计算3+5
    • 第二步调用multiply工具计算8x12
    • AIMessage 显示分步思考过程:
    • finish_reason: tool_calls 表示需要等待工具执行结果
  3. 工具执行阶段

    • add工具返回8(对应3+5)
    • multiply工具返回96(对应8x12)
    • ToolMessage 包含工具执行结果:
    • 每个结果都通过tool_call_id关联到对应的工具调用请求
  4. 最终响应阶段

    • 新的AIMessage生成自然语言答案
    • 使用LaTeX格式展示数学表达式:
    • finish_reason: stop 表示正常结束

7. 元数据与性能指标分析

关键字段说明

字段说明
token_usage记录各阶段的令牌消耗情况
system_fingerprint模型版本指纹(fp_eb9dce56a8)
tool_call_id工具调用的唯一关联标识
finish_reason终止类型(tool_calls/stop)

Token 使用情况示例

阶段输入 令牌输出令牌总计
初始请求7751128
最终响应14322165
总计22073293

8. 小结:MCP + LangChain 的价值

  • ✅ 标准化接入:无需为每种数据源编写专属适配器
  • ✅ 模块化复用:工具作为可组合单元,多智能体可复用
  • ✅ 提升智能体能力:突破“模型只能聊天”的边界
  • ✅ 安全可控:客户端-服务端通信可附带权限控制

最后的最后

感谢你们的阅读和喜欢,作为一位在一线互联网行业奋斗多年的老兵,我深知在这个瞬息万变的技术领域中,持续学习和进步的重要性。

为了帮助更多热爱技术、渴望成长的朋友,我特别整理了一份涵盖大模型领域的宝贵资料集。

这些资料不仅是我多年积累的心血结晶,也是我在行业一线实战经验的总结。

这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。如果你愿意花时间沉下心来学习,相信它们一定能为你提供实质性的帮助。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

大模型知识脑图

为了成为更好的 AI大模型 开发者,这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

经典书籍阅读

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。

在这里插入图片描述

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下

在这里插入图片描述

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值