Prompt,Agent,Skill,Mcp分别于langchain有什么关系

50 阅读5分钟

这四个概念与LangChain的关系,可以这样理解:

Prompt、Agent、Skill、MCP是构建智能体的“设计模式”或“能力组件”,而LangChain是将它们落地为实际代码的“开发框架”。

LangChain为每一个概念都提供了具体的实现工具。下面这张图可以帮你快速建立整体认知:

flowchart TD
    subgraph Upper [概念层]
        A[Prompt<br>提示词]
        B[Agent<br>智能体]
        C[Skill<br>技能]
        D[MCP<br>模型上下文协议]
    end

    subgraph Lower [LangChain 实现层]
        A1[PromptTemplate<br>ChatPromptTemplate<br>结构化输出]
        B1[create_agent<br>AgentExecutor<br>Middleware 中间件]
        C1[load_skill 工具<br>Deep Agents<br>预置技能包]
        D1[MCP Adapter<br>MultiServerMCPClient<br>langchain-mcp-adapters]
    end

    Upper --> Lower

接下来,我们具体看看每个概念在LangChain中是如何体现的:


1. Prompt(提示词)

在LangChain中的对应: PromptTemplateChatPromptTemplateSystemMessage

Prompt是LangChain最基础的组件之一,它将提示词工程从"纯文本拼接"升级为可复用、可组合的模板系统

from langchain.prompts import PromptTemplate

# 传统方式:手动拼接字符串
prompt = f"将以下文本翻译成英文:{text}"

# LangChain方式:模板化管理
template = PromptTemplate.from_template("将以下文本翻译成{target_lang}:{text}")
formatted = template.format(target_lang="英文", text="你好世界")

LangChain的Prompt能力远超简单模板:

  • Few-shot示例管理:内置FewShotPromptTemplate,自动管理示例的插入和格式化
  • 消息角色区分SystemMessageHumanMessageAIMessage,适配Chat模型的对话结构
  • 与输出解析器联动:Prompt可以直接定义期望的输出格式,配合PydanticOutputParser自动解析

角色定位:Prompt是Agent的"大脑指令",LangChain负责把它从硬编码字符串变成可维护的工程资产。


2. Agent(智能体)

在LangChain中的对应: create_agent(LangChain 1.0核心)、AgentExecutorMiddlewareLangGraph

Agent是LangChain 1.0版本的核心焦点。在1.0版本中,LangChain放弃了早期复杂的Chain设计,全面转向Agent优先的架构

核心实现:create_agent

LangChain 1.0提供了一个极简的Agent创建接口:

from langchain.agents import create_agent

agent = create_agent(
    model="openai:gpt-4o",
    tools=[get_weather, search_database],
    system_prompt="你是一个专业的客服助手"
)

result = agent.invoke({"messages": [{"role": "user", "content": "上海今天天气怎么样?"}]})

关键创新:Middleware(中间件)

Agent的生产落地最大挑战是"上下文工程"——如何控制进入模型的信息。LangChain 1.0通过Middleware机制解决了这个问题:

from langchain.agents import create_agent
from langchain.agents.middleware import summarizationMiddleware, humanInTheLoopMiddleware

agent = create_agent(
    model="openai:gpt-4o",
    tools=[send_email],
    middleware=[
        # 自动总结过长对话,防止上下文溢出
        summarizationMiddleware(max_tokens_before_summary=4000),
        # 敏感操作需要人工审批
        humanInTheLoopMiddleware(interrupt_on={"send_email": True}),
    ]
)

Middleware允许开发者在Agent执行循环的关键节点(调用模型前、调用模型后、调用工具时)插入自定义逻辑,而不需要重写核心循环。

复杂场景:LangGraph

对于需要精细控制的多Agent协作、复杂状态机等场景,LangChain提供了LangGraph——一个基于图结构的状态管理框架,可以实现持久化、人机协作、时间旅行等高级功能。

角色定位:Agent是LangChain 1.0的"一等公民",框架的核心就是让你用最少代码构建生产级Agent。


3. Skill(技能)

在LangChain中的对应: load_skill工具、Deep Agents包、预置技能包

Skill在LangChain生态中是一个相对较新且正在演进的概念。根据LangChain官方博客的定义,Skills是:

"为AI编码代理提供专业领域知识的指令、脚本和资源的集合"

核心实现机制:按需加载(Progressive Disclosure)

Skill的核心思想是避免一次性给Agent太多工具(这会导致性能下降),而是让Agent在需要时才加载特定领域的专业知识:

from langchain.agents import create_agent
from langchain.tools import tool

# 定义加载skill的工具
@tool
def load_skill(skill_name: str) -> str:
    """按需加载专业技能"""
    skills = {
        "write_sql": "你是SQL专家,掌握...",
        "review_legal": "你是法律文档审核专家..."
    }
    return skills.get(skill_name, "Skill not found")

agent = create_agent(
    model="openai:gpt-4o",
    tools=[load_skill],  # 只暴露一个加载工具
    system_prompt="你可以按需加载专业技能"
)

官方实践:LangChain Skills

LangChain官方已经发布了11个预置技能包,覆盖LangChain、LangGraph、Deep Agents三大类。测试数据显示,使用Skills后,Claude Code在LangChain相关任务上的通过率从25%提升到95%

角色定位:Skill是"按需加载的专业能力",LangChain通过load_skill工具和Deep Agents包来支持这一模式,但Skill本身仍是一个较新的概念,生态还在建设中。


4. MCP(Model Context Protocol)

在LangChain中的对应: langchain-mcp-adaptersMultiServerMCPClientcreate_mcp_tool

MCP是由Anthropic推出的开放协议,旨在标准化LLM与外部工具/数据源的通信方式。LangChain通过MCP适配器包实现了完整集成。

核心实现:将MCP服务器转换为LangChain工具

from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent

async def main():
    # 连接MCP服务器
    client = MultiServerMCPClient({
        "filesystem": {
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
        }
    })
    
    # MCP工具自动转换为LangChain工具
    tools = await client.get_tools()
    
    # 直接用于Agent
    agent = create_agent(model="openai:gpt-4o", tools=tools)

MCP的价值:传统方式下,每接入一个新工具(数据库、GitHub、Slack等)都需要写适配代码。有了MCP,工具提供商只需编写一个MCP服务器,所有支持MCP的客户端(LangChain、Claude Desktop等)都能直接使用。

角色定位:MCP是"工具的标准化协议",LangChain通过适配器将它变成自己生态的一部分,让你可以即插即用海量MCP社区工具。


总结:一张表看懂对应关系

概念在LangChain中的实现核心作用
PromptPromptTemplateChatPromptTemplateFewShotPromptTemplate将提示词从硬编码变成可复用的工程模板
Agentcreate_agentMiddlewareLangGraphLangChain 1.0的核心,用极简代码构建自主决策的智能体
Skillload_skill工具、Deep Agents、预置技能包按需加载的专业能力,避免上下文过载
MCPlangchain-mcp-adaptersMultiServerMCPClient标准化接入外部工具,即插即用海量MCP服务器

如果用一句话总结:LangChain是一个"翻译器"——它把这些概念层面的设计模式,翻译成了你可以在Python/TypeScript代码中直接调用的API。无论你想设计Prompt、构建Agent、封装Skill还是接入MCP工具,LangChain都提供了对应的工程化方案。