LangChain + MCP 零基础实战:LangChain、LangGraph、MCP、Agent 与 Workflow 一次讲明白
适合小白学习的LangchainMCP零基础实战把LangchainlanggraphMCPAgentworkflow一次性给大家讲明白1. 引言为什么小白也能学会这套技术栈很多初学者看到 LangChain、LangGraph、MCP、Agent、Workflow 这一串名词时第一反应往往是「太复杂了学不会」。但实际上这些概念之间有着清晰的逻辑关系只要抓住主线就能一步步搭建起自己的 AI 应用。本文将从零开始用通俗的语言和可运行的代码把这五个核心概念一次讲明白。在开始之前先给出一个整体认知LangChain 是基础框架LangGraph 是流程编排工具MCP 是模型与外部工具之间的通信协议Agent 是具备自主决策能力的智能体Workflow 则是把以上能力串起来的业务流程图。理解了这条主线后面的学习就会顺畅很多。2. 环境准备搭建开发环境在动手写代码之前需要先准备好 Python 环境和必要的依赖包。建议使用 Python 3.10 及以上版本并创建一个独立的虚拟环境避免依赖冲突。# 创建虚拟环境 python -m venv langchain_env source langchain_env/bin/activate # Windows 下使用 langchain_env\Scripts\activate 安装核心依赖 pip install langchain langchain-openai langgraph mcp 验证安装 python -c import langchain; print(langchain.version)如果你使用的是 OpenAI 兼容的 API例如国内的大模型服务还需要配置 API Key 和 Base URL。建议将密钥写入环境变量而不是硬编码在代码中。export OPENAI_API_KEYyour-api-key export OPENAI_API_BASEhttps://your-api-endpoint3. LangChain 基础大模型应用的脚手架LangChain 是一个用于构建大语言模型应用的开发框架它把「调用模型」「处理提示词」「管理记忆」「连接外部数据」等常见操作封装成标准组件让开发者可以像搭积木一样快速组装应用。下面是一个最基础的 LangChain 调用示例演示如何通过 ChatPromptTemplate 构造提示词并调用模型from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate 初始化模型 llm ChatOpenAI(modelgpt-4o-mini, temperature0.7) 构造提示词模板 prompt ChatPromptTemplate.from_messages([ (system, 你是一个乐于助人的中文助手。), (human, 请用一句话解释什么是{concept}。) ]) 创建链 chain prompt | llm 调用链 result chain.invoke({concept: LangChain}) print(result.content)这段代码展示了 LangChain 最核心的「链」思想把提示词模板和模型用管道符连接起来形成一个可复用的处理流程。后续无论是加记忆、加工具还是接入 Agent都是在这个基础上不断扩展。4. LangGraph让流程变得可控LangChain 的链适合处理线性流程但真实业务往往存在分支、循环、条件判断等复杂逻辑。LangGraph 正是为了解决这个问题而诞生的——它把应用构建成一张「图」图中的每个节点是一个处理步骤边则定义了步骤之间的流转关系。下面用一个简单的示例演示 LangGraph 的基本用法构建一个「先分析、再总结」的两步流程。from langgraph.graph import StateGraph, END from typing import TypedDict 定义状态结构 class AgentState(TypedDict): input_text: str analysis: str summary: str 定义节点函数 def analyze(state: AgentState): return {analysis: f分析结果{state[input_text]} 包含关键信息} def summarize(state: AgentState): return {summary: f总结{state[analysis]} 已提炼完毕} 构建图 graph StateGraph(AgentState) graph.add_node(analyze, analyze) graph.add_node(summarize, summarize) graph.add_edge(analyze, summarize) graph.add_edge(summarize, END) graph.set_entry_point(analyze) 编译并执行 app graph.compile() result app.invoke({input_text: LangGraph 让流程可控}) print(result[summary])可以看到LangGraph 的核心优势在于状态显式传递、节点职责单一、流程可视化。当业务逻辑变复杂时这种图结构比线性链更容易维护和调试。5. MCP模型与工具之间的通用协议MCPModel Context Protocol是 Anthropic 提出的开放协议用于统一大模型与外部工具、数据源之间的通信方式。简单来说MCP 就像 USB-C 接口——无论你接的是硬盘、显示器还是充电器只要接口标准统一就能即插即用。在 MCP 的架构中有三个核心角色Host宿主应用、Client客户端和Server服务端。Host 是运行大模型的应用Client 负责与 Server 建立连接Server 则封装了具体的工具能力如查询数据库、调用天气 API 等。下面演示如何用 Python 快速搭建一个 MCP Server暴露一个「获取当前时间」的工具from mcp.server import Server from mcp.server.stdio import stdio_server from mcp.types import Tool, TextContent import datetime app Server(time-server) app.list_tools() async def list_tools(): return [ Tool( nameget_current_time, description获取当前服务器时间, inputSchema{type: object, properties: {}} ) ] app.call_tool() async def call_tool(name: str, arguments: dict): if name get_current_time: now datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S) return [TextContent(typetext, textf当前时间{now})] async def main(): async with stdio_server() as (read_stream, write_stream): await app.run(read_stream, write_stream) if name main: import asyncio asyncio.run(main())MCP 的价值在于解耦工具开发者只需实现一次 MCP Server任何支持 MCP 的 Host 都能直接复用无需为每个应用单独适配。6. Agent让模型拥有自主决策能力Agent智能体是 LangChain 生态中最具想象力的部分。与普通链不同Agent 能够根据用户的输入自主决定「调用哪个工具」「按什么顺序调用」「何时给出最终答案」。这种「思考-行动-观察」的循环让模型从被动应答者变成了主动执行者。下面演示如何创建一个能够调用 MCP 工具的 Agentfrom langchain_openai import ChatOpenAI from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain_core.prompts import ChatPromptTemplate 初始化模型 llm ChatOpenAI(modelgpt-4o-mini, temperature0) 模拟一个工具实际可接入 MCP Server def get_weather(city: str) - str: 查询指定城市的天气 return f{city} 今天晴气温 25 摄氏度 tools [get_weather] 构造提示词 prompt ChatPromptTemplate.from_messages([ (system, 你是一个智能助手可以调用工具来回答问题。), (human, {input}), (placeholder, {agent_scratchpad}) ]) 创建 Agent agent create_tool_calling_agent(llm, tools, prompt) executor AgentExecutor(agentagent, toolstools, verboseTrue) 执行 result executor.invoke({input: 北京今天天气怎么样}) print(result[output])当用户询问天气时Agent 会自动识别需要调用工具提取参数「北京」调用 get_weather 函数最后把结果组织成自然语言回复。这就是 Agent 的核心价值把大模型的推理能力与外部工具的执行能力结合起来。7. Workflow把一切串成业务闭环有了 LangChain 的组件、LangGraph 的编排、MCP 的工具接入和 Agent 的决策能力最后一步就是 Workflow——把以上所有能力按照真实业务逻辑组织成一个完整的自动化流程。一个典型的 Workflow 可能包含以下阶段意图识别 → 工具调用 → 结果校验 → 人工确认 → 最终输出。下面用 LangGraph 实现一个带条件分支的 Workflowfrom langgraph.graph import StateGraph, END from typing import TypedDict class WorkflowState(TypedDict): question: str needs_tool: bool answer: str def classify(state: WorkflowState): 判断是否需要调用外部工具 keywords [天气, 时间, 查询] needs_tool any(k in state[question] for k in keywords) return {needs_tool: needs_tool} def call_tool_node(state: WorkflowState): 调用工具处理 return {answer: f已通过工具处理{state[question]}} def direct_answer(state: WorkflowState): 直接回答 return {answer: f直接回答{state[question]}} 构建带条件分支的图 graph StateGraph(WorkflowState) graph.add_node(classify, classify) graph.add_node(call_tool, call_tool_node) graph.add_node(direct, direct_answer) graph.add_edge(classify, call_tool, conditionlambda s: s[needs_tool]) graph.add_edge(classify, direct, conditionlambda s: not s[needs_tool]) graph.add_edge(call_tool, END) graph.add_edge(direct, END) graph.set_entry_point(classify) app graph.compile() result app.invoke({question: 北京天气如何}) print(result[answer])这个示例展示了 Workflow 的核心思想根据条件动态路由让不同的问题走不同的处理路径。在实际项目中你可以在每个节点接入 LangChain 链、Agent 或 MCP 工具构建出强大的自动化业务系统。8. 综合实战构建一个完整的智能问答系统现在我们把前面学到的所有知识整合起来构建一个完整的智能问答系统。这个系统将具备以下能力理解用户问题 → 判断是否需要工具 → 调用 MCP 工具获取实时数据 → 生成最终回答。from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langgraph.graph import StateGraph, END from typing import TypedDict ---------- 1. 定义 MCP 工具简化版 ---------- def query_database(sql: str) - str: 模拟查询业务数据库 return f查询结果{sql} 返回 3 条记录 def get_weather(city: str) - str: 查询天气 return f{city} 多云22 摄氏度 TOOLS {query_database: query_database, get_weather: get_weather} ---------- 2. 定义状态 ---------- class SystemState(TypedDict): question: str tool_name: str tool_result: str final_answer: str ---------- 3. 定义节点 ---------- def route_question(state: SystemState): 使用 LLM 判断调用哪个工具 llm ChatOpenAI(modelgpt-4o-mini, temperature0) prompt ChatPromptTemplate.from_messages([ (system, 根据问题选择工具query_database 或 get_weather。只输出工具名。), (human, {question}) ]) chain prompt | llm tool_name chain.invoke({question: state[question]}).content.strip() return {tool_name: tool_name if tool_name in TOOLS else query_database} def execute_tool(state: SystemState): 执行选中的工具 tool TOOLS[state[tool_name]] result tool(state[question]) return {tool_result: result} def generate_answer(state: SystemState): 基于工具结果生成最终回答 llm ChatOpenAI(modelgpt-4o-mini, temperature0.3) prompt ChatPromptTemplate.from_messages([ (system, 你是智能助手基于工具结果回答用户问题。), (human, 问题{question}\n工具结果{tool_result}) ]) chain prompt | llm answer chain.invoke(state).content return {final_answer: answer} ---------- 4. 构建 Workflow ---------- graph StateGraph(SystemState) graph.add_node(route, route_question) graph.add_node(execute, execute_tool) graph.add_node(generate, generate_answer) graph.add_edge(route, execute) graph.add_edge(execute, generate) graph.add_edge(generate, END) graph.set_entry_point(route) app graph.compile() ---------- 5. 运行 ---------- result app.invoke({question: 查询最近一周的订单数据}) print(result[final_answer])这个综合示例完整地展示了 LangChain LangGraph MCP Agent Workflow 的协作方式LangChain 提供模型调用和提示词管理LangGraph 负责流程编排MCP 定义了工具接入的标准Agent 的决策逻辑体现在路由节点中而 Workflow 则把这一切组织成可运行的业务闭环。9. 常见问题与调试技巧在实际开发中初学者经常会遇到以下几类问题这里给出对应的排查思路API 调用报错优先检查环境变量是否正确配置以及网络是否能访问目标 API 端点。工具调用失败确认工具函数的参数名与 LLM 生成的参数是否一致必要时在提示词中给出明确的参数说明。LangGraph 流程卡住检查条件边的 condition 函数返回值是否符合预期可以在节点函数中加 print 输出调试。MCP 连接超时确认 Server 端是否正确启动以及 Client 与 Server 的传输协议是否匹配。一个实用的调试技巧是在关键节点加入日志输出观察状态在每一步的流转情况。LangGraph 的 verbose 模式和 LangChain 的 debug 回调都能帮助你快速定位问题。10. 总结与进阶方向本文从零开始系统地讲解了 LangChain、LangGraph、MCP、Agent 和 Workflow 五个核心概念并通过可运行的代码示例演示了它们如何协同工作。回顾一下核心要点LangChain大模型应用的开发框架提供提示词、模型调用、记忆等基础组件。LangGraph基于图结构的流程编排工具支持分支、循环和状态管理。MCP模型与外部工具之间的统一通信协议实现工具能力的标准化接入。Agent具备自主决策能力的智能体能够根据任务动态选择工具和行动路径。Workflow把以上能力组织成完整业务闭环的流程设计。掌握了这些基础之后你可以继续深入以下方向多 Agent 协作、记忆与上下文管理、流式输出、以及将系统部署为可对外服务的 API。希望本文能帮助你迈出 AI 应用开发的第一步在实践中不断成长。