LangChain框架概览

LangChain是构建LLM应用最流行的框架之一,以模块化设计著称。其核心抽象包括Chain、Agent、Memory、Tool和Callback,理解这些组件的协作方式是掌握LangChain的关键。

Chain:任务执行的基本单元

Chain是LangChain中最基础的执行单元,代表一个完整的任务处理流程。

常见Chain类型

LLMChain: 最简单的Chain,组合Prompt模板和LLM调用。

from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    template="请用{language}写一首关于{topic}的诗",
    input_variables=["language", "topic"]
)
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run(language="中文", topic="人工智能")

SequentialChain: 串联多个Chain,前一个的输出作为后一个的输入。

RouterChain: 根据输入内容动态选择执行哪个子Chain,适合多意图处理场景。

Memory:对话记忆管理

Memory组件用于在多轮对话中维护上下文信息。

内置Memory类型

  • ConversationBufferMemory:完整记录所有历史消息
  • ConversationSummaryMemory:对历史进行摘要压缩,节省Token
  • ConversationBufferWindowMemory:只保留最近K轮对话
  • VectorStoreRetrieverMemory:基于向量检索的长时记忆

选择合适的Memory类型需要权衡记忆完整性和Token消耗。对于长对话,推荐使用摘要记忆或窗口记忆。

Agent:自主决策的核心

Agent是LangChain中最强大的组件,它能够根据任务目标自主决定调用哪些Tool以及以什么顺序调用。

Agent类型

  • OpenAI Tools Agent:使用OpenAI的function calling能力
  • ReAct Agent:基于Think-Act-Observe循环的推理模式
  • Plan-and-Execute Agent:先制定计划,再逐步执行

Agent的执行涉及观察环境、推理决策、执行动作和更新记忆的循环过程。

Tool:Agent的能力扩展

Tool是Agent与外部世界交互的接口。LangChain内置了丰富的Tool集:

  • 计算器:执行数学运算
  • 搜索引擎:获取实时信息
  • 数据库查询:访问结构化数据
  • 文件操作:读写和处理文件
  • API集成:调用第三方服务

自定义Tool只需继承BaseTool并实现_run方法即可。

Callback:全流程监控

Callback机制允许开发者监听Chain和Agent执行的各个阶段,用于日志记录、性能监控和调试。

class MyCallbackHandler(BaseCallbackHandler):
    def on_llm_start(self, serialized, prompts, **kwargs):
        print(f"LLM开始处理: {prompts}")
    def on_llm_end(self, response, **kwargs):
        print(f"LLM处理完成: {response}")

LangChain的组件化设计让开发者可以灵活组合这些核心抽象,快速构建从简单到复杂的LLM应用。