LangChain 核心概念
LangChain 1.0 通过 LangGraph 架构、工具集成、结构化输出和消息传递机制,为构建复杂智能体系统提供了强大底层能力和灵活扩展性。本文系统梳理这些核心概念,助力开发者高效实现多智能体协作与流程编排。
LangGraph 架构
LangGraph 是 LangChain 生态中专为多步骤复杂流程和多智能体系统设计的扩展组件。与传统线性链式结构不同,LangGraph 允许开发者将任务拆解为图中的节点和边,每个节点代表独立动作或子任务,边定义执行顺序和条件。通过显式图结构,开发者可灵活实现并行、分支、循环等复杂控制流,极大提升流程的可控性和持久性。
LangGraph 中使用有向图组织智能体的工作流示例。每个节点表示一个执行步骤,边表示步骤之间的执行流转,可包含条件分支等逻辑。
LangGraph 架构包括两大核心部分:
- 状态图(StateGraph):抽象整个流程,管理全局状态对象,在节点间传递。
- 图智能体(Graph Agent):基于状态图驱动多节点、多智能体协作。
开发流程如下:
- 定义状态结构(如 TypedDict 或 Pydantic)。
- 初始化 StateGraph,并注册节点函数。
- 通过
add_edge连接节点,构建流程图。 - 运行工作流,自动在节点间传递和更新状态。
以下示例演示如何用 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 智能体模式,核心流程如下:
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 应用落地与创新。