LangChain 文档风格指南
简介
随着 LangChain 的持续发展,覆盖它所需的文档表面积也在不断增长。此页面为任何为 LangChain 编写文档的人员提供指南,以及我们关于组织和结构的一些理念。
理念
LangChain 的文档旨在遵循 Diataxis 框架。在此框架下,所有文档都属于以下四类之一
- 教程:引导读者逐步完成一系列概念步骤以完成项目的课程。
- 我们的 LCEL 流式处理指南 就是一个例子。
- 我们关于 自定义组件 的指南是另一个例子。
- 操作指南:引导读者完成解决实际问题所需步骤的指南。
- 最清晰的例子是我们的 用例 页面。
- 参考:关于机制及其操作的技术描述。
- 解释:阐明和解释特定主题的说明。
每个类别都有不同的用途,并且需要特定的方法来编写和组织内容。
分类法
考虑到以上几点,我们将 LangChain 的文档分为几类。在贡献新文档时,以这些术语思考很有帮助
入门
入门部分 包括对 LangChain 的高级介绍、概述 LangChain 各种功能的快速入门以及围绕安装和项目设置的后勤说明。
它包含操作指南和解释的元素。
用例
用例 是旨在展示如何使用 LangChain 完成特定任务(RAG、信息提取等)的指南。快速入门应该是 LangChain 初次开发者的良好切入点,他们喜欢通过原型设计一些实用的东西来学习,然后再回顾性地拆解各个部分。这些应该反映 LangChain 的优势。
此处的快速入门页面应符合操作指南类别,而其他页面则旨在成为对伴随主要成功路径的更深入概念和策略的解释。
以下部分大致按照抽象级别递增的顺序排列。
表达式语言
LangChain 表达式语言 (LCEL) 是大多数 LangChain 组件组合在一起的基本方式,本节旨在教导开发人员如何使用它来有效地构建 LangChain 的原语。
本节应包含教程,教导如何流式处理和使用 LCEL 原语来完成更抽象的任务;解释,解释特定行为;以及一些参考,介绍如何在 Runnable 接口中使用不同的方法。
组件
操作指南部分 涵盖比 LCEL 高一个抽象级别的概念。诸如 BaseChatModel
和 BaseRetriever
之类的抽象基类以及这些基类的核心实现(例如 ChatPromptTemplate
和 RecursiveCharacterTextSplitter
)应在此处涵盖。自定义指南也属于此处。
本节应主要包含关于其涵盖组件的概念性教程、参考和解释。
作为一般经验法则,表达式语言
和组件
部分中涵盖的所有内容(组件的组合
部分除外)应仅涵盖 @langchain/core
中存在的组件。
集成
集成是组件的特定实现。这些通常涉及第三方 API 和服务。如果是这种情况,作为一般规则,这些由第三方合作伙伴维护。
本节应主要包含解释和参考,尽管此处的实际内容比其他部分更灵活,并且更多地由第三方提供商酌情决定。
集成
中涵盖的概念通常应存在于 @langchain/community
或特定的合作伙伴包中。
教程和生态系统
教程和 生态系统 部分应包含解决比上述部分更高级别问题的指南。这包括但不限于围绕生产化和开发工作流程的考虑因素。
这些应主要包含操作指南、解释和教程。
API 参考
LangChain 的 API 参考。应充当参考(顾名思义),并包含一些以解释为重点的内容。
示例开发者旅程
我们已设置文档来帮助 LangChain 的新开发者。让我们一起走过预期的路径
- 开发者访问 https://js.langchain.ac.cn,并阅读简介和图表。
- 如果他们只是好奇,他们可能会被 快速入门 所吸引,以获得对 LangChain 所包含内容的高级概览。
- 如果他们心中有一个想要完成的特定任务,他们将被用例部分所吸引。用例应该提供一个好的、具体的钩子,展示 LangChain 可以为他们提供的价值,并成为框架的一个好的入口点。
- 然后,他们可以继续通过表达式语言部分了解有关 LangChain 基础知识的更多信息。
- 接下来,他们可以了解 LangChain 的各种组件和集成。
- 最后,他们可以通过指南获得更多知识。
这当然只是一个理想情况 - 各个部分将不可避免地引用在其他部分中记录的较低或较高级别的概念。
指南
以下是在编写和组织文档时应考虑的其他一些指南。
链接到其他部分
由于文档的各个部分并非孤立存在,因此尽可能多地链接到其他部分非常重要,以便开发人员可以内联了解有关不熟悉主题的更多信息。
这包括链接到 API 参考以及概念部分!
简洁性
总的来说,采取少即是多的方法。如果已经存在对概念进行良好解释的部分,则应链接到该部分,而不是重新解释它,除非您正在记录的概念呈现出一些新的细微之处。
保持简洁,包括在代码示例中。
通用风格
- 尽可能使用主动语态和现在时。
- 使用示例和代码片段来说明概念和用法。
- 使用适当的标题级别 (
#
,##
,###
等) 以分层方式组织内容。 - 使用项目符号和编号列表将信息分解为易于理解的块。
- 经常使用表格(特别是对于参考部分)和图表以可视化方式呈现信息。
- 对于较长的文档页面,包含目录以帮助读者浏览内容,但对于较短的页面,则隐藏目录。