本文档提供了 LangChain 框架的全面概述,涵盖了其架构、核心抽象、使用模式和开发生态系统。LangChain 是一个开发由大型语言模型(LLM)驱动的应用程序的框架,它简化了 LLM 应用程序生命周期的每个阶段,从开发到生产部署。
有关各个组件的具体实现细节,请参阅核心架构部分(#2)。有关 LLM 提供商集成的信息,请参阅提供商集成(#3)。有关应用程序模式和使用示例,请参阅应用程序和使用模式(#5)。
LangChain 实现了分层架构,将核心抽象、集成、应用程序逻辑和部署基础设施分开。
框架架构映射
来源:README.md25-84 docs/docs/introduction.mdx48-57 docs/docs/how_to/index.mdx1-376
该框架围绕几个核心抽象构建,这些抽象为处理 LLM 和相关技术提供了标准化的接口。
核心组件实现映射
Runnable 接口(langchain_core/runnables/base.py)是所有 LangChain 组件的基础,实现了用于处理 LLM 的标准方法,如 invoke、stream、batch 和 ainvoke。LangChain Expression Language (LCEL) 在此基础上构建,允许使用管道运算符(|)进行声明式组合。
聊天模型继承自 BaseChatModel(langchain_core/language_models/)并处理消息对象(langchain_core/messages/)。消息系统支持跨不同模型提供商的对话管理、工具调用和元数据跟踪。
可以使用 @tool 装饰器(langchain_core/tools/convert.py)、StructuredTool.from_function,或通过继承 BaseTool 来创建工具。系统支持函数模式、验证以及同步/异步执行。
来源:docs/docs/tutorials/llm_chain.ipynb157-185 docs/docs/how_to/tool_calling.ipynb56-98 docs/docs/how_to/custom_tools.ipynb71-83
LangChain 通过标准实现支持几种常见的应用程序模式。
RAG 应用程序遵循标准的索引和检索模式。
DocumentLoader 加载文档,使用 TextSplitter 分割,使用 Embeddings 嵌入,存储在 VectorStore 中。Retriever.similarity_search() 进行查询。ChatPromptTemplate 格式化上下文,使用 ChatModel 生成。在 docs/docs/tutorials/rag.ipynb210-266 中实现。
Agent 使用 LLM 来决定调用哪些工具。
在 docs/docs/tutorials/agents.ipynb39-57 中实现的核心 Agent 逻辑。
聊天机器人利用 LangGraph 的持久性来实现对话内存。
在 docs/docs/tutorials/chatbot.ipynb115-126 中实现。
使用 with_structured_output() 提取结构化数据。
在 docs/docs/how_to/structured_output.ipynb116-118 中提供详细示例。
来源:docs/docs/tutorials/rag.ipynb200-275 docs/docs/tutorials/agents.ipynb1-131 docs/docs/tutorials/chatbot.ipynb105-155
LangChain 使用多包单体仓库结构。
| 包 | 目的 | 关键组件 |
|---|---|---|
langchain-core | 基础抽象 | Runnable、BaseMessage、BaseTool |
langchain | 高级组件 | Chains、Agents、Utilities |
langchain-openai | OpenAI 集成 | ChatOpenAI、OpenAIEmbeddings |
langchain-anthropic | Anthropic 集成 | ChatAnthropic |
langchain-community | 社区集成 | Vector stores、Document loaders |
langgraph | 编排框架 | State management、Workflows |
langchain-cli | 开发者工具 | 项目脚手架、Templates |
单体仓库使用集中式构建配置。
pyproject.toml 和 Makefile 用于单体仓库协调。libs/*/ 中的独立 pyproject.toml 文件用于包特定设置。.github/workflows/ 中的 GitHub Actions 工作流。构建系统详细信息请参阅 libs/*/pyproject.toml 文件和 .github/workflows/ 目录。
来源:README.md1-84 docs/docs/introduction.mdx53-57 libs/langchain/README.md1-27 libs/core/README.md1-17
LangChain 使用以下工具维护全面的文档:
langchain-cli 包提供了
langchain app newlangchain templatelangchain serveCLI 实现位于 libs/cli/ 目录。
LangSmith 集成提供了
通过以下方式启用跟踪
自动化工作流处理
ruff 和 mypy 进行代码质量检查在 .github/workflows/check_diffs.yml 和相关工作流文件中配置管道。
来源:docs/docs/how_to/index.mdx1-376 docs/docs/tutorials/llm_chain.ipynb79-118 docs/docs/introduction.mdx98-119