【AI】LangChain AI Agent开发框架

4 阅读5分钟

一、核心架构演进:从线性链到图结构

1.1 架构分层

LangChain 1.0采用三层架构设计:

  • LangChain = Agent API:高层抽象,提供标准化的Agent构建接口
  • LangGraph = Agent Runtime:底层框架和运行时环境,负责状态管理和工作流编排
  • 执行引擎:基于图执行模型,支持持久化状态、可恢复执行等企业级特性

1.2 工作流体系对比

工作流类型结构控制流支持适用场景实现方式
线性Chain线性顺序执行简单任务Runnable组合
图结构Graph网状条件分支、循环复杂任务StateGraph

二、核心组件技术细节

2.1 Models(模型层)

统一接口设计

# 静态模型:创建时固定
agent = create_agent("gpt-4o", tools=[])

# 动态模型:运行时按需切换
@wrap_model_call
def dynamic_model_selection(request: ModelRequest, handler):
    message_count = len(request.state["messages"])
    request.model = advanced_model if message_count > 10 else basic_model
    return handler(request)

支持200+模型提供商,通过init_chat_model提供标准化初始化。

2.2 Prompts(提示模板)

从字符串拼接到可执行模板

  • 支持ChatPromptTemplate适配对话模型
  • 直接与Messages集成
  • 与Chain无缝组合
  • 不再是简单的字符串拼接,而是"可执行的模板"

2.3 Chains(链式执行)

核心设计思想:一切皆为Runnable

  • 所有模块都实现.invoke().stream()等方法
  • |操作符自由连接,像搭积木一样构建应用
  • Chain不是"功能",而是"通信协议"——让AI组件能"即插即用"

常见Chain类型

  • LLMChain:最基础的模型调用链
  • SequentialChain:多个链串联执行
  • RouterChain:自动分析用户需求,引导到最适合的链
  • RetrievalQA:结合向量数据库进行问答的链

2.4 Memory(记忆系统)

工业级记忆管理

  • ConversationBufferMemory:保存完整的对话历史
  • ConversationSummaryMemory:保存对话内容的精简摘要(适合长对话)
  • ConversationSummaryBufferMemory:混合型记忆机制
  • VectorStoreRetrieverMemory:保存对话历史存储在向量数据库中

2.5 Agents(智能体)

ReAct框架实现

Observe → Reason → Act → Repeat

Agent工作流程:

  1. 观察:接收用户输入和当前状态
  2. 推理:LLM决定下一步行动(调用工具或直接回答)
  3. 行动:执行工具调用
  4. 重复:循环直到任务完成

三、Agent工作原理深度解析

3.1 工具调用机制

核心流程

# 1. LLM推理:是否需要工具、使用哪个工具、传入什么参数
# 2. 输出结构化指令:如JSON或function call
# 3. Agent Executor解析指令 → 调用对应工具 → 返回结果
# 4. 工具必须是纯函数(输入→输出,无副作用或可控副作用)

两种实现方案对比

对比项initialize_agent(高层抽象)bind_tools+ 手动调度(底层控制)
抽象层级
控制力极强
可观测性黑盒全流程
可扩展性受限自由
生产适用一般推荐

3.2 Agent与AgentExecutor分离

  • Agent:决策大脑,接收输入并决定采取的操作
  • AgentExecutor:执行操作的Runtime,负责调用代理并执行指定的工具
  • 两者结合才构成完整的智能体

四、LangChain 1.0关键技术革新

4.1 统一的Agent API

from langchain.agents import create_agent

# 新版标准入口
agent = create_agent(
    model="gpt-4o",
    tools=tools_list,
    system_prompt="你的系统提示",
    middleware=[custom_middleware]
)
  • 废弃旧版create_react_agent()AgentExecutor
  • prompt参数变为system_prompt
  • 不再需要从hub输入大段提示词

4.2 中间件(Middleware)系统

类似AOP的插件系统

from langchain.agents.middleware import before_model, after_model

@before_model
def log_before_model_call(request: ModelRequest):
    logging.info(f"即将调用模型: {request.model.model}")
    return request

@after_model  
def log_after_model_call(response: ModelResponse):
    logging.info("模型调用完成。")
    return response

支持before_model/after_model/wrap_model_call/wrap_tool_call等钩子。

4.3 状态管理(StateGraph)

from langgraph.graph import StateGraph
from typing import TypedDict, List

class AgentState(TypedDict):
    messages: List
    summary: str

graph = StateGraph(AgentState)
graph.add_node("generate", generate_function)
graph.add_edge(START, "generate")
app = graph.compile()

支持条件分支、循环控制、状态持久化。

4.4 标准消息格式

  • 旧版content: string
  • 新版:标准化的content_blocks,统一表示推理、工具调用、多模态输出等高级特性

五、技术架构优势

5.1 模块化设计

  • 基于Chain概念构建,将PromptTemplate、LLM和Output Parser组件串联
  • 所有组件实现Runnable接口,支持|操作符连接

5.2 可观测性

  • 集成LangSmith用于调试和监控
  • 中间件系统支持全链路追踪

5.3 生态系统完善

  • 提供文档处理、文本分割、嵌入、检索等全套工具链
  • 支持向量数据库集成(Chroma、Pinecone等)

5.4 生产就绪特性

  • 错误恢复机制
  • 超时控制
  • 重试策略
  • 检查点(Checkpoint)支持长会话恢复

六、适用场景与技术选型

6.1 适合LangChain的场景

  • 需要高度定制的通用Agent构建
  • 围绕RAG(检索增强生成)构建应用
  • 对话系统和代码分析
  • 作为学习和理解Agent工作原理的基础框架

6.2 技术选型建议

  • 简单任务:使用线性Chain
  • 中等复杂度:线性Chain + 分支
  • 复杂任务:图结构Graph(StateGraph)
  • 超长任务:图结构Graph + 检查点

LangChain 1.0通过将底层统一到LangGraph运行时,实现了从"玩具级"到"生产级"的跨越,为构建企业级AI应用提供了完整的技术栈。其核心价值在于标准化接口、模块化设计和强大的可扩展性,使得开发者可以专注于业务逻辑而非底层实现细节。