当前位置: 首页 > news >正文

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 智能体!

http://www.jsqmd.com/news/200439/

相关文章:

  • 重塑 AI 应用开发:ModelEngine 全流程 AI 开发工具链特性深度解析与核心技术创新
  • 西门子PLC动态加密计时催款程序:设备催款的巧妙手段
  • 【2026】熔炼测温仪选对不踩坑!优质企业推荐 + 南京凯迪成标杆 - 品牌推荐大师1
  • LangChain的哲学理念
  • 20260105_123536 生成知识文本片段的提示词
  • 快递最后一公里:GLM-4.6V-Flash-WEB识别门牌号码
  • #suffix 插槽
  • 东方博宜OJ 2262:谁考了第k名 ← 结构体 + 结构体排序
  • 读懂 403 Forbidden, the request has been blocked by UCON.:它不是浏览器渲染问题,而是后端安全闸门在拦截
  • zz全模态大模型部署
  • NTT 及多项式学习笔记
  • 如何将 Fiori Elements Object Page Header 工具栏里按钮用 JavaScript 代码设置成禁用状态
  • 从价格到售后:多联磁力搅拌器高性价比厂家综合推荐 - 品牌推荐大师
  • 公卫执业医师备考选什么课程?一名公卫考生亲测指南 - 医考机构品牌测评专家
  • 2026执业药师备考名师团课程推荐:三大高口碑机构深度测评 - 医考机构品牌测评专家
  • html解决浏览器记住密码输入框的问题
  • 10大顶级开源的 RAG 框架
  • SpringCloud如何实现大文件分块上传的加密传输
  • Shell Daily 2026-01-05: 目录堆栈 (Directory Stack)
  • 艺术治疗干预:GLM-4.6V-Flash-WEB解读色彩情绪象征
  • 2026执业药师考试名师课程推荐:三大机构排名奉上! - 医考机构品牌测评专家
  • 如何打造AI时代的材料基石
  • 2026执业药师考试名师课程选择指南:这几家机构的名师课程请你重点关注! - 医考机构品牌测评专家
  • SpringBoot百万文件夹上传的目录结构保持技巧
  • 信创环境下SpringBoot大文件上传的加密传输交流
  • 2026年度冷热冲击试验箱技术革新与综合实力厂商TOP7深度解析——基于技术维度与行业适配性的专业化视角 - 品牌推荐大师1
  • 物流公司包裹追踪:GLM-4.6V-Flash-WEB读取运单条形码
  • 游戏角色皮肤推荐:GLM-4.6V-Flash-WEB匹配玩家审美偏好
  • SpringBoot大文件上传插件的开源代码与商业应用对比
  • 汽车工厂仓储物流数字化服务商有哪些?