草稿

LangChain 核心概念

LangChain 1.0 通过 LangGraph 架构、工具集成、结构化输出和消息传递机制,为构建复杂智能体系统提供了强大底层能力和灵活扩展性。本文系统梳理这些核心概念,助力开发者高效实现多智能体协作与流程编排。

LangGraph 架构

LangGraph 是 LangChain 生态中专为多步骤复杂流程和多智能体系统设计的扩展组件。与传统线性链式结构不同,LangGraph 允许开发者将任务拆解为图中的节点和边,每个节点代表独立动作或子任务,边定义执行顺序和条件。通过显式图结构,开发者可灵活实现并行、分支、循环等复杂控制流,极大提升流程的可控性和持久性。

图 1: LangGraph 架构示意图
图 1: LangGraph 架构示意图

LangGraph 中使用有向图组织智能体的工作流示例。每个节点表示一个执行步骤,边表示步骤之间的执行流转,可包含条件分支等逻辑。

LangGraph 架构包括两大核心部分:

  • 状态图(StateGraph):抽象整个流程,管理全局状态对象,在节点间传递。
  • 图智能体(Graph Agent):基于状态图驱动多节点、多智能体协作。

开发流程如下:

  1. 定义状态结构(如 TypedDict 或 Pydantic)。
  2. 初始化 StateGraph,并注册节点函数。
  3. 通过 add_edge 连接节点,构建流程图。
  4. 运行工作流,自动在节点间传递和更新状态。

以下示例演示如何用 LangGraph 实现“文本摘要后翻译为法语”的流程:

from typing import TypedDict
from langchain.chat_models import ChatOpenAI
from langgraph.graph import StateGraph, START, END

class GraphState(TypedDict):
    text: str
    summary: str | None
    translation: str | None

llm = ChatOpenAI(model="gpt-4", temperature=0)
workflow = StateGraph(GraphState)

def summarize_node(state: GraphState) -> GraphState:
    prompt = f"请帮我总结下面这段文本:\n{state['text']}"
    result = llm.invoke(prompt)
    state['summary'] = result.content
    return state

def translate_node(state: GraphState) -> GraphState:
    prompt = f"请将以下内容翻译成法语:\n{state['summary']}"
    result = llm.invoke(prompt)
    state['translation'] = result.content
    return state

workflow.add_node("summarize", summarize_node)
workflow.add_node("translate", translate_node)
workflow.add_edge(START, "summarize")
workflow.add_edge("summarize", "translate")
workflow.add_edge("translate", END)

init_state = {"text": "LangChain 是一个用于构建 LLM 应用的开源框架..."}
final_state = workflow.run(init_state)
print(final_state["translation"])

LangGraph 支持条件边、循环、持久化执行等高级特性,适合长对话、多工具交互、任务拆解等复杂场景。其工业级流程控制能力已被多家企业生产环境采用。

工具集成

工具(Tool)是 LangChain 赋予 LLM 与外部世界交互的关键机制。通过工具,智能体可调用外部 API、数据库、Web 搜索等,实现信息检索、计算、操作等功能。每个工具包含名称、描述、调用方法及可选输入输出格式,开发者可灵活集成内置或自定义工具。

常见内置工具包括:

  • SerpAPIWrapper:网络搜索
  • LLMMath:数学计算
  • Requests / Browser:HTTP 请求与网页抓取
  • SQLDatabase:数据库查询
  • 第三方 API 封装(如 OpenAI 插件、Google 日历等)

工具调用机制采用 ReAct 智能体模式,核心流程如下:

图 2: 智能体工具调用时序图
图 2: 智能体工具调用时序图

LangChain 1.0 统一了 Agent 接口,开发者只需配置模型和工具集合,即可让智能体自动学会工具调用。示例代码如下:

from langchain.chat_models import ChatOpenAI
from langchain.agents import create_agent
from langchain.tools import SerpAPIWrapper

llm = ChatOpenAI(model="gpt-4", temperature=0)
search_tool = SerpAPIWrapper()
agent = create_agent(model=llm, tools=[search_tool], verbose=True)

query = "LangChain 1.0 有哪些新的核心功能?"
response = agent.invoke(query)
print(response.content)

通过工具集成,智能体可访问实时信息、执行复杂操作,极大提升实用性和扩展性。

结构化输出

许多应用需要 LLM 返回结构化数据(如 JSON、表格),便于后续程序处理。LangChain 提供结构化输出方案,支持多种 schema 定义方式(如 Python dict、Pydantic、TypedDict),并通过 with_structured_output 方法将 schema 绑定为模型输出格式。

示例 schema 定义:

from pydantic import BaseModel, Field
class QAResponse(BaseModel):
    answer: str = Field(..., description="对用户问题的回答")
    followup_question: str = Field(..., description="一个可供用户追问的后续问题")

绑定结构化输出:

from langchain_openai import ChatOpenAI
from langchain.output_parsers import with_structured_output

model = ChatOpenAI(model="gpt-4", temperature=0)
model_structured = model.with_structured_output(QAResponse)
result = model_structured.invoke("LangChain 1.0 新增了哪些功能?")
print(result)

如模型不支持函数调用,可用 Output Parser 解析文本输出。结构化输出机制提升了数据可靠性和自动化处理能力。

消息传递机制

在多轮对话和多智能体系统中,消息传递是核心机制。LangChain 抽象出统一的 Message 对象,每条消息包含角色(如 system、user、assistant、tool)、内容和元数据。1.0 版本引入内容块(content blocks)概念,将消息内容结构化为多类型片段,支持文本、推理、图片、音频等多模态内容。

常见 content block 类型:

  • "text":文本段落
  • "reasoning":推理内容
  • "image""audio""video":多模态内容

多智能体通信可通过共享消息列表实现,LangGraph 支持将消息作为状态传递,便于多节点协作。内容分块还支持流式处理,提升长文本输出体验。

消息机制统一了多供应商接口,便于上下文管理和多模态扩展,是智能体系统的基础能力。

总结

LangChain 1.0 以 LangGraph 架构为核心,结合工具集成、结构化输出和消息传递机制,为开发者提供了构建复杂智能体系统的全栈能力。掌握这些核心概念,有助于高效实现多智能体协作、流程编排和多模态交互,推动 AI 应用落地与创新。

文章导航

章节内容

这是章节的内容页面。

章节概览