跳到主要内容

框架介绍

LangChain 是一个构建 LLM 应用的框架,目标是把 LLM 与外部工具、数据源和复杂工作流连接起来。

LangChain 1.0 版本把"Agent 的稳定化、结构化输出、可观测性与生产化"作为核心改进目标。

用 LangChain 能做什么?

  • 构建 RAG 问答系统:结合外部知识库检索
  • 构建 Agent:调用外部 API(搜索、数据库、文件系统)执行多步任务
  • 组织流水线:prompt → 模型 → 后处理的可复用链(Chains)
  • 多轮对话:带记忆(Memory)与长会话管理
  • 生产监控:配合 LangSmith/LangGraph 实现可观测性

核心价值:10行代码完成原本需要1000行的 AI 应用,并且具有状态持久化、人工干预、并发控制等企业级能力。

提示

统一智能体抽象 + 标准化内容表示 + 可插拔治理中间件

LangChain 生态概览

层级核心内容
模型层init_chat_model() 统一接口,适配 20+ 厂商
工具层@tool 装饰器、100+ 内置工具、Toolkit
记忆层短期记忆(消息历史)、长期记忆(向量数据库)
Agent 层create_agent() 核心 API,基于 LangGraph
工作流层Chain(串联)、LangGraph(条件分支、循环)
监控层LangSmith 可视化追踪、LangChain Evaluate

关键组件

  • LangGraph:底层 Agent 调度框架,解决复杂控制流问题
  • LangServe:将 chain/agent 部署为 REST API

底层运行架构

┌─────────────────────────────────────────┐
│ LangChain 应用层 │
│ (create_agent, 工具和中间件) │
└──────────────────┬──────────────────────┘

┌─────────────────────────────────────────┐
│ LangGraph 编排层 │
│ (StateGraph, Nodes, Edges, Checkpoints)│
└──────────────────┬──────────────────────┘

┌─────────────────────────────────────────┐
│ LCEL 运行时层 │
│ (Runnable接口, | 运算符, 流式/批处理) │
└──────────────────┬──────────────────────┘

┌─────────────────────────────────────────┐
│ 大语言模型 API │
│ (OpenAI / DeepSeek / Ollama 等) │
└─────────────────────────────────────────┘
  • LCEL:无状态的函数式编排,构建"流水线"
  • LangGraph:有状态的图结构编排,构建"流程图"(支持循环、条件分支、持久化)

Runnable 执行引擎

Runnable 是 LangChain 1.0 的统一接口标准,所有组件都被抽象为 Runnable:

  • LLM、Prompt、Parser、Retriever、Tool、Agent、自定义函数

统一调用方式:.invoke().batch().stream().astream_events()

快速入门示例

# 安装:pip install langchain langchain-openai
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 1. 定义模型
model = ChatOpenAI(model="gpt-4o-mini")

# 2. 定义 Prompt
prompt = ChatPromptTemplate.from_template("Tell me a joke about {topic}")

# 3. 定义输出解析器
parser = StrOutputParser()

# 4. 组装链(使用 | 运算符)
chain = prompt | model | parser

# 5. 调用
result = chain.invoke({"topic": "ice cream"})
print(result)

定义自定义工具

from langchain_core.tools import tool

@tool
def multiply(a: int, b: int) -> int:
"""Multiplies a and b."""
return a * b

# 调用方式
print(multiply.invoke({"a": 2, "b": 3})) # 输出: 6
print(multiply.batch([{"a": 2, "b": 3}, {"a": 4, "b": 5}])) # 输出: [6, 20]

创建 Agent

from langchain.agents import create_agent

# 定义工具
@tool
def get_weather(city: str) -> str:
"""Get weather for a city."""
return f"It's sunny in {city}!"

# 创建 Agent(10行代码)
agent = create_agent(
model=model,
tools=[get_weather],
system_prompt="You are a helpful assistant"
)

# 调用
result = agent.invoke({
"messages": [{"role": "user", "content": "What's the weather in Beijing?"}]
})

技术对比

技术角色
LangChain组件生态(LLM + prompt + tool + parser)
LangGraph底层编排框架(Agent / 多步工作流 / 状态机)
LCEL / Runnable底层执行引擎(统一接口 +