跳到主要内容

概述与核心概念

什么是LangChain?

LangChain 是一个开源Python框架,专门用于快速构建基于大语言模型(LLM)的定制化代理和应用程序。它通过提供标准化的接口和预构建的架构,大幅降低了集成AI能力的复杂性。

核心价值主张

  1. 快速上手:10行代码即可创建功能完整的代理
  2. 多模型支持:统一接口,轻松切换OpenAI、Anthropic、Google等提供商
  3. 生产就绪:内置支持持久化、流式处理、监控等生产特性
  4. 灵活扩展:从简单的聊天机器人到复杂的多代理系统
  5. 开发者友好:良好的文档、活跃社区、丰富的集成

框架核心理念

1. 标准化模型接口

不同的LLM提供商有不同的API和响应格式。LangChain 通过标准化接口解决这个问题:

from langchain.chat_models import init_chat_model

# 统一的初始化方式
model = init_chat_model("claude-sonnet-4")

# 或使用特定配置
from langchain_anthropic import ChatAnthropic
model = ChatAnthropic(
model="claude-sonnet-4",
temperature=0.7,
max_tokens=1000
)

这样做的优势:

  • 避免供应商锁定(vendor lock-in)
  • 轻松比较不同模型
  • 快速迁移到新提供商

2. 代理与工具的结合

代理(Agent)是LangChain的核心概念,它由以下部分组成:

3. 消息驱动的架构

LangChain采用消息驱动架构,所有交互都是消息:

from langchain_core.messages import HumanMessage, AIMessage

# 代理与用户的对话是消息序列
messages = [
HumanMessage(content="旧金山的天气如何?"),
AIMessage(content="我来为您查询..."),
# 模型添加工具调用
# 工具执行并返回结果
]

消息类型包括:

  • HumanMessage:用户输入
  • AIMessage:模型输出
  • ToolMessage:工具执行结果
  • SystemMessage:系统提示和指导

LangChain vs LangGraph vs DeepAgents

三个框架都基于相同的基础库,但在抽象层级上有所不同:

LangChain 的定位

维度LangChainLangGraphDeepAgents
抽象级别高级低级完整
易用性容易复杂容易
定制性
学习成本
适用场景标准代理复杂编程完整应用
内置功能代理循环图编排全套功能

何时选择LangChain?

适合使用LangChain:

  • 快速构建聊天机器人或问答系统
  • 需要与多种LLM集成
  • 标准的代理工作流(观察-行动-反思)
  • 团队对框架库有基本了解

不适合使用LangChain:

  • 需要复杂的条件逻辑和分支流程
  • 需要精细控制执行的每一步
  • 需要实现自定义的工作流模式

代理执行流程

理解代理如何工作是使用LangChain的关键:

标准执行循环

这个循环会持续进行,直到达到其中一个停止条件:

  • 模型生成最终答案
  • 达到最大迭代次数
  • 发生错误

代理执行示意图

核心组件详解

1. 模型(Model / LLM)

模型是代理的大脑,负责理解问题和制定计划。

关键特性:

  • 多提供商支持:OpenAI、Anthropic、Google、Groq等
  • 参数可配置:温度、最大令牌数、超时等
  • 工具绑定:模型需要了解可用的工具
# 模型配置示例
from langchain_anthropic import ChatAnthropic

model = ChatAnthropic(
model="claude-sonnet-4",
temperature=0.7, # 创意程度
max_tokens=2000, # 最大输出长度
timeout=30 # 超时时间
)

# 绑定工具到模型
model_with_tools = model.bind_tools([tool1, tool2])

2. 工具(Tools)

工具是代理可以调用的函数或服务。

特点:

  • 功能扩展:让代理能完成模型单独无法做的事
  • 类型安全:需要提供参数类型和说明
  • 可链接:工具可以相互调用
from langchain.tools import tool

@tool
def get_weather(city: str) -> str:
"""获取指定城市的天气信息"""
# 实际实现会调用天气API
return f"{city}目前是晴天,温度25°C"

# 工具会自动生成描述供模型理解
print(get_weather.description)
# 输出: get_weather(city: str) -> str - 获取指定城市的天气信息

3. 提示(Prompts)

提示是指导模型行为的指令,包括系统提示和用户提示。

from langchain_core.prompts import ChatPromptTemplate

# 创建提示模板
system_prompt = "你是一个专业的天气助手,请用友好的语气回答用户问题。"
user_prompt = "请问{city}的天气如何?"

prompt_template = ChatPromptTemplate.from_messages([
("system", system_prompt),
("human", user_prompt)
])

# 填充模板
messages = prompt_template.format_messages(city="北京")

4. 内存(Memory)

内存用于维护对话历史和状态。

from langchain.memory import ConversationBufferMemory

# 创建内存
memory = ConversationBufferMemory(
return_messages=True, # 返回消息对象而非字符串
memory_key="chat_history" # 内存键名
)

# 保存对话
memory.save_context(
{"input": "你好"},
{"output": "你好!我是天气助手。"}
)

# 加载历史
history = memory.load_memory_variables({})

5. 编排(Orchestration)

LangGraph运行时负责协调代理的各个部分。

from langgraph.prebuilt import create_react_agent

# 创建代理
agent = create_react_agent(
model=model,
tools=[get_weather],
prompt=prompt_template
)

# 执行代理
result = agent.invoke({"messages": [HumanMessage(content="北京天气如何?")]})

总结

LangChain 通过提供标准化的组件和预构建的架构,大幅简化了AI代理的开发。它的核心优势在于:

  1. 标准化:统一的接口处理不同LLM提供商
  2. 模块化:清晰的组件分离(模型、工具、提示、内存)
  3. 可扩展:从简单聊天机器人到复杂多代理系统
  4. 生产就绪:内置监控、持久化、错误处理

在接下来的文档中,我们将深入探讨每个组件的详细用法和最佳实践。

下一步