引言

LangChain的基础用法和核心组件,本文继续参考LangChain官方文档[1],进一步学习其高阶使用方法。

护栏(Guardrail)

护栏是指在智能体执行的关键点进行验证或内容过滤。

下面的示例是为智能体创建了两个工具,搜索工具和发送邮件工具。

其中,搜索工具可以让智能体自由调用,但发送邮件不能让它随意使用,如果发送错误内容可能产生严重后果。

因此,通过HumanInTheLoopMiddleware中间件实现一个护栏,让智能体在发送邮件时进行中断,让人工进行二次确认。

from langchain.agents import create_agentfrom langchain.agents.middleware import HumanInTheLoopMiddleware# 创建一个智能体,并启用人机交互中间件agent = create_agent(    model="openai:gpt-4o",    tools=[search_tool, send_email_tool],     middleware=[        HumanInTheLoopMiddleware(            interrupt_on={"send_email": True},  # 对发送邮件要求人工确认        ),    ])# 配置线程ID,以便在人工确认时保存状态config = {"configurable": {"thread_id": "some_id"}}# 启动智能体并要求确认发送邮件result = agent.invoke(    {"messages": [{"role": "user", "content": "Send an email to the team"}]},    config=config)# 人工确认后,继续执行result = agent.invoke(    Command(resume={"decisions": [{"type": "approve"}]}),    config=config)

上下文工程(Context engineering)

上下文工程是以正确的格式提供正确的信息和工具,以便 LLM 能够更好地实现输出。

在智能体运行过程中,主要包含以下三种上下文类型:

上下文类型 可控制的内容 持久性
模型上下文 模型调用的内容(说明、消息历史记录、工具、响应格式) 短暂的
工具上下文 哪些工具可以访问和生成(读取/写入状态、存储、运行时上下文) 持久的
生命周期背景 模型和工具调用之间发生的情况(摘要、护栏、日志记录等) 持久的

下面的这个示例中,通过context_schema来指定上下文结构,并将用户信息传递到智能体的上下文之中。

from dataclasses import dataclassfrom langchain.agents import create_agent@dataclassclassContext:    user_name: stragent = create_agent(    model="openai:gpt-5-nano",    tools=[...],    context_schema=Context  )agent.invoke(    {"messages": [{"role": "user", "content": "What's my name?"}]},    context=Context(user_name="John Smith")  )

模型上下文协议(MCP)

MCP让智能体能够去以标准方式去掉用工具。

MCP 支持以下三种不同的客户端-服务器通信传输机制:

  • 标准输入输出 (stdio):客户端将服务器作为子进程启动,并通过标准输入/输出进行通信。最适合本地工具和简单设置。
  • 可流式传输的 HTTP:服务器作为处理 HTTP 请求的独立进程运行。支持远程连接和多个客户端。
  • 服务器发送事件(SSE):针对实时流通信优化的可流式 HTTP 的变体。

要使用MCP,需要先单独安装额外依赖:

uv add langchain-mcp-adapters

下面的示例中,展示了通过stdio调用本地文件和通过http调用本地MCP服务的两种应用方式,这两种方式可以混合使用。

from langchain_mcp_adapters.client import MultiServerMCPClient  from langchain.agents import create_agentclient = MultiServerMCPClient(      {"math": {"transport": "stdio",  # Local subprocess communication"command": "python",# Absolute path to your math_server.py file"args": ["/path/to/math_server.py"],        },"weather": {"transport": "streamable_http",  # HTTP-based remote server# Ensure you start your weather server on port 8000"url": "http://localhost:8000/mcp",        }    })tools = await client.get_tools()  agent = create_agent("anthropic:claude-sonnet-4-5",    tools  )math_response = await agent.ainvoke(    {"messages": [{"role": "user", "content": "what's (3 + 5) x 12?"}]})weather_response = await agent.ainvoke(    {"messages": [{"role": "user", "content": "what is the weather in nyc?"}]})

如果要创建自己的MCP服务,需要安装mcp依赖:

uv add mcp

下面的例子启动了一个stdio模式的MCP服务:

from mcp.server.fastmcp import FastMCPmcp = FastMCP("Math")@mcp.tool()defadd(a: int, b: int) -> int:"""Add two numbers"""return a + b@mcp.tool()defmultiply(a: int, b: int) -> int:"""Multiply two numbers"""return a * bif __name__ == "__main__":    mcp.run(transport="stdio")

启动完之后,创建Agent去调用该工具:

import osimport asynciofrom dotenv import load_dotenvfrom langchain_mcp_adapters.client import MultiServerMCPClient  from langchain.agents import create_agentfrom langchain_openai import ChatOpenAIload_dotenv()llm = ChatOpenAI(    base_url="https://api.siliconflow.cn/v1",    api_key=os.getenv("SILICONFLOW_API_KEY"),    model="deepseek-ai/DeepSeek-V3.2-Exp",)asyncdefmain():    client = MultiServerMCPClient(          {"math": {"transport": "stdio","command": "python","args": ["start_mcp.py"],            }        }    )# 等待获取工具列表    tools = await client.get_tools()# 创建代理    agent = create_agent(        llm,        tools    )# 执行异步调用    math_response = await agent.ainvoke(        {"messages": [{"role": "user", "content": "what's (3 + 5) x 12?"}]}    )# 打印结果print("Math Response:", math_response)asyncio.run(main())

多智能体(Multi-agent)

多智能体系统将复杂的应用程序分解为多个专用智能体,这些智能体协同工作以解决问题。

在 LangChain 中,存在两种多智能体的结构:

  • 集中式:集中式是指一个核心的Controller Agent作为主智能体,其他子智能体类似于像工具一样被主智能体进行调用。

  • 切换式:切换式是指当一个Agent判断用户当前的任务可以被其他Agent更好地完成时,会将任务移交给另一个智能体。

目前,LangChain对于切换式的支持尚不完善,目前仅支持集中式,下面是一个最小实现示例:

from langchain.tools import toolfrom langchain.agents import create_agentsubagent1 = create_agent(model="...", tools=[...])@tool("subagent1_name",    description="subagent1_description")defcall_subagent1(query: str):    result = subagent1.invoke({"messages": [{"role": "user", "content": query}]    })return result["messages"][-1].contentagent = create_agent(model="...", tools=[call_subagent1])

本质上就是将子Agent用@tool装饰器进行封装。

长期记忆(Long-term memory)

长期记忆是指适合长期存储的记忆内容,比如用户的习惯、语言偏好之类。

LangChain 的长期记忆依托 LangGraph 的接口进行设置,可作为 JSON 文档的形式存储在内存中。

下面是一个长期记忆的存储和读取示例,存储通过命名空间(namespace)和键值进行隔离。

from langgraph.store.memory import InMemoryStoredefembed(texts: list[str]) -> list[list[float]]:# Replace with an actual embedding function or LangChain embeddings objectreturn [[1.0, 2.0] * len(texts)]# InMemoryStore saves data to an in-memory dictionary. Use a DB-backed store in production use.store = InMemoryStore(index={"embed": embed, "dims": 2}) user_id = "my-user"application_context = "chitchat"namespace = (user_id, application_context) store.put(     namespace,"a-memory",    {"rules": ["User likes short, direct language","User only speaks English & python",        ],"my-key": "my-value",    },)# get the "memory" by IDitem = store.get(namespace, "a-memory") # search for "memories" within this namespace, filtering on content equivalence, sorted by vector similarityitems = store.search(     namespace, filter={"my-key": "my-value"}, query="language preferences")

同理,工具也可以去调用该接口,实现记忆的写入、读取和检索。

​最后

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。

我整理出这套 AI 大模型突围资料包:

  • ✅AI大模型学习路线图
  • ✅Agent行业报告
  • ✅100集大模型视频教程
  • ✅大模型书籍PDF
  • ✅DeepSeek教程
  • ✅AI产品经理入门资料

如果你也想通过学大模型技术去帮助自己升职和加薪,可以扫描下方链接👇👇
​​
在这里插入图片描述

为什么说现在普通人就业/升职加薪的首选是AI大模型?

人工智能技术的爆发式增长,正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议,到全国两会关于AI产业发展的政策聚焦,再到招聘会上排起的长队,AI的热度已从技术领域渗透到就业市场的每一个角落。

img
智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200% ,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。

AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。

在这里插入图片描述

​​
在这里插入图片描述

资料包有什么?

①从入门到精通的全套视频教程

包含提示词工程、RAG、Agent等技术点
在这里插入图片描述

② AI大模型学习路线图(还有视频解说)

全过程AI大模型学习路线

在这里插入图片描述

③学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的

在这里插入图片描述

④各大厂大模型面试题目详解

在这里插入图片描述

⑤ 这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

所有的视频教程由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

在这里插入图片描述
在这里插入图片描述

智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌,构建起"前沿课程+智能实训+精准就业"的高效培养体系。

课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

​​​​在这里插入图片描述
在这里插入图片描述

如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓**

在这里插入图片描述

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐