news 2026/7/7 18:18:37

10分钟入门LangChain

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10分钟入门LangChain

LangChain 是一个开源框架,内置了预构建的智能体(Agent)架构,并支持任意大语言模型(LLM)或工具集成——让你构建的智能体能够随生态系统的演进而快速适应。

LangChain 是构建基于大语言模型(LLM)的智能体和应用最简单的方式。仅需不到 10 行代码,你就可以连接 OpenAI、Anthropic、Google 等主流模型提供商(更多支持)。LangChain 提供了开箱即用的智能体架构和丰富的模型集成能力,帮助你快速上手,并无缝地将 LLM 融入你的智能体和应用程序中。

如果你希望快速构建智能体或自主应用,我们推荐使用 LangChain。

而当你有更高级的需求——例如需要结合确定性流程与智能体工作流、深度定制逻辑,或对延迟有严格控制时——建议使用我们的底层智能体编排框架和运行时 LangGraph。

LangChain 的 智能体(agents) 正是构建在 LangGraph 之上,从而天然支持 持久化执行(durable execution)、流式响应(streaming)、人在回路(human-in-the-loop)、状态持久化(persistence) 等高级能力。对于基础的 LangChain 智能体使用,你无需事先了解 LangGraph。

安装

要安装 LangChain 核心包,请使用以下命令:

  • pip:
pip install -U langchain # Requires Python 3.10+
  • uv:
uv add langchain # Requires Python 3.10+

LangChain 提供了对数百种大语言模型(LLM) 和数千种其他工具的集成支持。这些集成以独立的提供商包(provider packages) 形式存在。

例如,若要使用 OpenAI 或 Anthropic 的模型,需单独安装对应的集成包:

  • pip:
# Installing the OpenAI integration pip install -U langchain-openai # Installing the Anthropic integration pip install -U langchain-anthropic
  • uv:
# Installing the OpenAI integration uv add langchain-openai # Installing the Anthropic integration uv add langchain-anthropic

可以查看完整的集成列表,这个列表中可以查看如何安装对应的包。

核心优势

  1. 不同模型提供商的 API 各不相同,包括响应格式也存在差异。LangChain 对模型交互进行了标准化,让你可以无缝切换模型提供商,避免厂商锁定(vendor lock-in)。
  2. LangChain 的智能体抽象设计简洁,只需不到 10 行代码即可构建一个基础智能体。同时,它也提供了充分的灵活性,满足你对上下文工程(context engineering)的各种进阶需求。
  3. LangChain 的智能体底层基于 LangGraph 实现,因此能直接利用 LangGraph 提供的持久化执行、人在回路支持、状态持久化等强大能力。
  4. 借助可视化工具,LangSmith 可深入追踪复杂智能体的行为:展示执行路径、捕获状态变迁,并提供详细的运行时指标,大幅提升可观测性与调试效率。

快速入门

本快速入门指南将带你从一个简单的设置开始,在短短几分钟内构建出一个功能完整的 AI 智能体。

前提条件

要运行以下示例,你需要:

  • 安装 LangChain 软件包
  • 注册 Claude (Anthropic) 账户并获取 API 密钥
  • 在终端中设置 ANTHROPIC_API_KEY 环境变量

虽然这些示例使用的是 Claude,但你可以通过更改代码中的模型名称并设置相应的 API 密钥,来使用任何受支持的模型。

注:上面的官网给的前提条件,我由于本地有离线部署的大模型就不用Claude演示了。

构建一个基础智能体

首先创建一个可以回答问题并调用工具的简单智能体。该智能体将使用 本地部署的qwen 作为其语言模型,使用一个基础天气函数作为工具,并使用一个简单的提示词来指导其行为。

fromlangchain.agentsimportcreate_agentfromlangchain_openaiimportChatOpenAI model=ChatOpenAI(model="qwen3-32b",base_url="https://xxxx,api_key="xxx",temperature=0.7)defget_weather(city:str)->str:"""获取指定城市的天气信息。"""returnf"{city}总是阳光明媚!"agent=create_agent(model="claude-sonnet-4-5-20250929",tools=[get_weather],system_prompt="你是一个乐于助人的助手",)# 运行智能体result=agent.invoke({"messages":[{"role":"user","content":"what is the weather in sf"}]})print(result["messages"][-1].content)

运行结果:

旧金山的天气总是阳光明媚,非常宜人!需要我提供更详细的天气信息吗?

要了解如何使用 LangSmith 追踪你的智能体,请参阅LangSmith 文档。

构建一个真实世界的智能体

接下来,我们将构建一个实用的天气预报智能体,展示关键的生产级概念:

  • 详细的系统提示词以改善智能体行为
  • 创建工具以集成外部数据
  • 模型配置以获得一致的响应
  • 结构化输出以确保可预测的结果
  • 对话记忆以实现类聊天交互
  • 创建并运行智能体以构建一个功能完整的智能体
  • 让我们逐步完成每个步骤:
  1. 定义系统提示词
    系统提示词定义了你的智能体的角色和行为。保持具体且可操作:
SYSTEM_PROMPT="""你是一位擅长双关语的天气预报专家。 你可以使用两个工具: - get_weather_for_location:用于获取特定位置的天气 - get_user_location:用于获取用户的位置 如果用户询问天气,请确保你知道位置。如果从问题中可以看出他们指的是自己所在的位置,请使用 get_user_location 工具来查找他们的位置。"""
  1. 创建工具
    工具 允许模型通过调用你定义的函数与外部系统交互。 工具可以依赖于运行时上下文,也可以与智能体记忆交互。

注意下面的get_user_location工具如何使用运行时上下文:

fromdataclassesimportdataclassfromlangchain.toolsimporttool,ToolRuntime@tooldefget_weather_for_location(city:str)->str:"""获取指定城市的天气。"""returnf"{city}总是阳光明媚!"@dataclassclassContext:"""自定义运行时上下文模式。"""user_id:str@tooldefget_user_location(runtime:ToolRuntime[Context])->str:"""根据用户 ID 检索用户信息。"""user_id=runtime.context.user_idreturn"佛罗里达"ifuser_id=="1"else"旧金山"

工具应该有良好的文档说明:它们的名称、描述和参数名称都会成为模型提示的一部分。
LangChain 的@tool装饰器会添加元数据,并通过ToolRuntime参数启用运行时注入。

  1. 配置大模型
    根据你的用例,使用正确的参数设置你的语言模型:
fromlangchain.chat_modelsimportinit_chat_model model=init_chat_model("claude-sonnet-4-5-20250929",temperature=0.5,timeout=10,max_tokens=1000)

根据所选的模型和提供商,初始化参数可能会有所不同;请参考它们的参考页面以获取详细信息。

  1. 定义返回格式
    如果需要智能体的响应符合特定模式,可以选择定义结构化响应格式。
fromdataclassesimportdataclass# 我们在这里使用 dataclass,但也支持 Pydantic 模型。@dataclassclassResponseFormat:"""智能体的响应模式。"""# 一个双关语响应(始终必需)punny_response:str# 如果有的话,关于天气的任何有趣信息weather_conditions:str|None=None
  1. 增加记忆
    为你的智能体添加记忆以在交互之间保持状态。 这使得智能体能够记住之前的对话和上下文。
fromlanggraph.checkpoint.memoryimportInMemorySaver checkpointer=InMemorySaver()

在生产环境中,应使用持久化的检查点器,将数据保存到数据库中。
有关更多详细信息,请参阅添加和管理记忆。

  1. 创建并运行agent
    现在,使用所有组件组装你的智能体并运行它!
fromlangchain.agents.structured_outputimportToolStrategy agent=create_agent(model=model,system_prompt=SYSTEM_PROMPT,tools=[get_user_location,get_weather_for_location],context_schema=Context,response_format=ToolStrategy(ResponseFormat),checkpointer=checkpointer)# `thread_id` 是特定对话的唯一标识符。config={"configurable":{"thread_id":"1"}}response=agent.invoke({"messages":[{"role":"user","content":"外面的天气怎么样?"}]},config=config,context=Context(user_id="1"))print(response['structured_response'])# ResponseFormat(# punny_response="佛罗里达今天依然'阳光灿烂'!阳光整天都在播放'射线电台'的热门歌曲!我得说,这是进行一些'太阳庆祝'的完美天气!如果你希望下雨,恐怕这个想法已经'泡汤'了——天气预报依然'清晰'明亮!",# weather_conditions="佛罗里达总是阳光明媚!"# )# 注意,我们可以使用相同的 `thread_id` 继续对话。response=agent.invoke({"messages":[{"role":"user","content":"谢谢!"}]},config=config,context=Context(user_id="1"))print(response['structured_response'])# ResponseFormat(# punny_response="你'雷'厉风行地受欢迎!帮助你随时了解天气总是'轻而易举'。我只是在'云'端徘徊,随时准备在你需要时'倾盆'而下更多天气预报。祝你在佛罗里达的阳光下度过'阳光灿烂'的一天!",# weather_conditions=None# )
完整代码
fromlangchain.toolsimporttool,ToolRuntimefromlangchain_openaiimportChatOpenAIfromdataclassesimportdataclassfromlanggraph.checkpoint.memoryimportInMemorySaverfromlangchain.agents.structured_outputimportToolStrategyfromlangchain.agentsimportcreate_agent SYSTEM_PROMPT="""你是一位擅长双关语的天气预报专家。 你可以使用两个工具: - get_weather_for_location:用于获取特定位置的天气 - get_user_location:用于获取用户的位置 如果用户询问天气,请确保你知道位置。如果从问题中可以看出他们指的是自己所在的位置,请使用 get_user_location 工具来查找他们的位置。"""@tooldefget_weather_for_location(city:str)->str:"""获取指定城市的天气。"""returnf"{city}总是阳光明媚!"@dataclassclassContext:"""自定义运行时上下文模式。"""user_id:str@tooldefget_user_location(runtime:ToolRuntime[Context])->str:"""根据用户 ID 检索用户信息。"""user_id=runtime.context.user_idreturn"佛罗里达"ifuser_id=="1"else"旧金山"model=ChatOpenAI(model="qwen3-32b",base_url="https://xxxx,api_key="xxx",temperature=0.7)# 我们在这里使用 dataclass,但也支持 Pydantic 模型。@dataclassclassResponseFormat:"""智能体的响应模式。"""# 一个双关语响应(始终必需)punny_response:str# 如果有的话,关于天气的任何有趣信息weather_conditions:str|None=Nonecheckpointer=InMemorySaver()agent=create_agent(model=model,system_prompt=SYSTEM_PROMPT,tools=[get_user_location,get_weather_for_location],context_schema=Context,response_format=ToolStrategy(ResponseFormat),checkpointer=checkpointer)# `thread_id` 是特定对话的唯一标识符。config={"configurable":{"thread_id":"1"}}response=agent.invoke({"messages":[{"role":"user","content":"外面的天气怎么样?"}]},config=config,context=Context(user_id="1"))print(response['structured_response'])

结果:

ResponseFormat(punny_response='佛罗里达的天气今天阳光明媚,温度宜人!不过要小心——这片土地上的‘橘’(Ji)祥如意可能比天气更让人惊喜哦~', weather_conditions='晴朗,28°C,微风')

总结

恭喜!你现在拥有一个能够:

  • 理解上下文并记住对话
  • 智能地使用多个工具
  • 以一致的格式提供结构化响应
  • 通过上下文处理用户特定信息
  • 在交互之间保持对话状态

的 AI 智能体!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 18:31:08

SpringBoot大文件上传插件的开源代码与商业应用对比

政府招投标项目大文件传输解决方案设计与实现 项目背景与需求分析 作为本次政府招投标项目的开发负责人,我负责解决100G级大文件传输的技术难题。项目要求支持包括IE8在内的所有主流浏览器,同时必须适配信创国产化环境(统信UOS、中标麒麟、…

作者头像 李华
网站建设 2026/7/4 10:35:06

风电叶片巡检:GLM-4.6V-Flash-WEB发现表面腐蚀区域

风电叶片巡检:GLM-4.6V-Flash-WEB发现表面腐蚀区域 在广袤的风电场中,风机叶片日复一日地迎风旋转,将自然之力转化为清洁电力。然而,这些钢铁之翼也正承受着严苛环境的持续侵蚀——盐雾、紫外线、温差、沙尘……任何微小的表面损伤…

作者头像 李华
网站建设 2026/7/1 19:48:38

红树林恢复项目:GLM-4.6V-Flash-WEB统计新生植株数量

红树林恢复项目中的AI实践:用GLM-4.6V-Flash-WEB自动统计新生植株 在广东沿海的一片滩涂上,生态修复团队正面临一个老问题:每季度都要派人徒步数公里,弯腰辨认、手工记录新生的红树幼苗。潮湿、蚊虫、视野遮挡让这项工作不仅辛苦&…

作者头像 李华
网站建设 2026/7/3 16:35:53

腾讯云某业务基于 DeepFlow 的可观测性实践

摘要:本文分享了腾讯云某业务基于 DeepFlow 的可观测性实践。面对复杂的业务服务(800)和多样的编程语言,腾讯云某业务团队选择了 DeepFlow 作为跨语言、无侵入的可观测技术。与其他技术(如 Hubble 和 Pixie&#xff09…

作者头像 李华
网站建设 2026/7/1 17:46:44

外汇 API 是什么?从行情接口到量化研究的完整视角

刚开始做外汇程序化交易时,我经常问自己一个看似简单的问题:外汇市场没有统一交易所,那所谓的“外汇 API”到底从哪里来的? 很多教程会直接告诉你:“用外汇 API 拉行情就行”,但真正做过量化研究或搭建行情…

作者头像 李华
网站建设 2026/6/12 11:36:30

springboot+ssm体育场地器材管理系统vue

目录系统概述技术架构核心功能创新与优化开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 体育…

作者头像 李华