菜单

LangChain 概览

相关源文件

目的与范围

本文档提供了 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 接口和 LCEL

Runnable 接口(langchain_core/runnables/base.py)是所有 LangChain 组件的基础,实现了用于处理 LLM 的标准方法,如 invokestreambatchainvoke。LangChain Expression Language (LCEL) 在此基础上构建,允许使用管道运算符(|)进行声明式组合。

语言模型和消息

聊天模型继承自 BaseChatModellangchain_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)

RAG 应用程序遵循标准的索引和检索模式。

  1. 索引:使用 DocumentLoader 加载文档,使用 TextSplitter 分割,使用 Embeddings 嵌入,存储在 VectorStore 中。
  2. 检索:使用 Retriever.similarity_search() 进行查询。
  3. 生成:使用 ChatPromptTemplate 格式化上下文,使用 ChatModel 生成。

docs/docs/tutorials/rag.ipynb210-266 中实现。

Agent 系统

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基础抽象RunnableBaseMessageBaseTool
langchain高级组件Chains、Agents、Utilities
langchain-openaiOpenAI 集成ChatOpenAIOpenAIEmbeddings
langchain-anthropicAnthropic 集成ChatAnthropic
langchain-community社区集成Vector stores、Document loaders
langgraph编排框架State management、Workflows
langchain-cli开发者工具项目脚手架、Templates

构建配置

单体仓库使用集中式构建配置。

  • 根目录的 pyproject.tomlMakefile 用于单体仓库协调。
  • libs/*/ 中的独立 pyproject.toml 文件用于包特定设置。
  • CI/CD 的 .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 使用以下工具维护全面的文档:

CLI 和开发者工具

langchain-cli 包提供了

  • 项目脚手架:langchain app new
  • 模板管理:langchain template
  • 开发服务器:langchain serve

CLI 实现位于 libs/cli/ 目录。

可观测性和评估

LangSmith 集成提供了

  • LangChain 组件的自动跟踪
  • 性能监控和调试
  • 用于评估的数据集管理

通过以下方式启用跟踪

CI/CD 基础设施

自动化工作流处理

  • 测试:跨 Python 版本和依赖项的矩阵测试
  • Linting:使用 ruffmypy 进行代码质量检查
  • 发布:自动 PyPI 发布
  • 文档:自动 API 参考生成

.github/workflows/check_diffs.yml 和相关工作流文件中配置管道。

来源:docs/docs/how_to/index.mdx1-376 docs/docs/tutorials/llm_chain.ipynb79-118 docs/docs/introduction.mdx98-119