Skip to main content
我们欢迎对 LangChain 文档的贡献,包括新功能、集成以及对现有文档的改进。

快速开始 - 本地开发

要运行文档的本地预览:
git clone https://github.com/langchain-ai/docs.git
cd docs
make install
make dev
这将在 http://localhost:3000 启动一个支持热重载的开发服务器。编辑 src/ 目录下的文件并立即查看更改。
使用 AI 编码助手? 安装 LangChain Skills 以提升您的助手在 LangChain 生态系统任务上的表现,然后点击本页面右上角的“复制页面”按钮,将原始内容粘贴到您的助手中,让它自动为您设置环境。
如果您在本地预览时遇到问题,请尝试运行 mint update 以确保您使用的是最新的 Mintlify 版本。
必需:可选:

编辑文档

对于拼写错误或小的更改,无需本地设置,直接在 GitHub 上编辑:
  1. 在任何页面底部点击 Edit this page on GitHub
  2. 复刻到您的个人账户。
  3. 在 GitHub 的网页编辑器中修改。
  4. 创建拉取请求。
只编辑 src/ 目录下的文件build/ 目录是自动生成的。
  1. 按照我们的写作标准编辑 src/ 目录下的文件。
  2. 提交前运行质量检查
  3. 创建拉取请求以供审核。
所有拉取请求必须链接到一个已由维护者批准解决方案的议题或讨论。请参阅我们的拉取请求要求
当您创建或更新 PR 时,会自动生成一个预览分支/ID。PR 上会留下包含该 ID 的评论。
  1. 从评论中复制预览分支的 ID
  2. Mintlify 仪表板中,点击 Create preview deployment
  3. 输入预览分支的 ID 并点击 Create deployment
  4. 选择预览并点击 Visit 查看
要使用最新更改重新部署,请在仪表板上点击 Redeploy

运行质量检查

在提交更改之前,请确保您的代码通过格式化和代码检查:
# 检查失效链接
make broken-links

# 自动格式化代码
make format

# 检查代码规范问题
make lint

# 修复 Markdown 问题
make lint_md_fix

# 运行测试以确保您的更改不会破坏现有功能
make test
更多详情,请参阅 README 中的可用命令部分。

文档类型

所有文档都属于以下四类之一:

操作指南

面向任务的说明,适用于知道自己想要完成什么的用户。

概念指南

提供更深层次理解和见解的解释性内容。

参考

API 和技术实现细节的描述。

教程

引导用户通过实践活动来建立理解的课程。
在适用的情况下,所有文档必须同时包含 Python 和 JavaScript/TypeScript 内容。更多详情,请参阅共置 Python 和 JavaScript/TypeScript 内容部分。

操作指南

操作指南是面向任务的说明,适用于知道自己想要完成什么的用户。操作指南的示例位于 LangChainLangGraph 标签页。
  • 任务导向:专注于特定任务或问题
  • 分步说明:将任务分解为更小的步骤
  • 实践性强:提供具体示例和代码片段
  • 关注 如何做 而非 为什么
  • 使用具体示例和代码片段
  • 将任务分解为更小的步骤
  • 链接到相关的概念指南和参考

概念指南

概念指南抽象地涵盖核心概念,提供深入理解。
  • 理解导向:解释事物为何如此工作
  • 视角广阔:比其他类型站得更高、看得更广
  • 设计导向:解释决策和权衡
  • 上下文丰富:使用类比和比较
  • 关注 “为什么” 而非 “如何做”
  • 提供不一定为使用功能所必需的补充信息
  • 可以使用类比并参考替代方案
  • 避免混入过多参考内容
  • 链接到相关教程和操作指南

参考

参考文档包含详细的、低层级的信息,精确描述存在的功能以及如何使用它。

Python 参考

JavaScript/TypeScript 参考

一份好的参考文档应该:
  • 描述存在什么(所有参数、选项、返回值)
  • 全面且结构清晰,便于查阅
  • 作为技术细节的权威来源
请参阅 JavaScript/TypeScript 参考文档的贡献指南。
  • 保持一致性;遵循特定于提供商的文档的现有模式
  • 包含基本用法(代码片段)和常见的边缘情况/失败模式
  • 注明功能何时需要特定版本
  • 新的集成或提供商需要专门的参考页面
  • 复杂的配置选项需要详细解释
  • API 变更引入了新参数或行为
  • 社区经常询问特定功能的问题

教程

教程是较长篇幅的分步指南,内容层层递进,引导用户完成特定的实践活动以建立理解。教程通常位于 Learn 标签页。
我们通常不会在没有迫切需求的情况下合并来自外部贡献者的新教程。如果您认为某个主题在文档中缺失或覆盖不足,请新建一个议题
  • 实践性:专注于通过实践活动建立理解。
  • 分步说明:将活动分解为更小的步骤。
  • 动手操作:提供连续的、可运行的代码片段。
  • 补充性:提供不一定为使用功能所必需的额外上下文和信息。
  • 如果用户按顺序执行步骤,代码片段应该是连续且可运行的。
  • 为活动提供一些上下文,但链接到相关的概念指南和参考以获取更详细的信息。

写作标准

参考文档有不同的标准 - 详情请参阅参考文档贡献指南

Mintlify 组件

使用 Mintlify 组件 来增强可读性:
  • <Note> 用于有用的补充信息
  • <Warning> 用于重要的警告和破坏性变更
  • <Tip> 用于最佳实践和建议
  • <Info> 用于中立的上下文信息
  • <Check> 用于成功确认

页面结构

每个文档页面必须以 YAML 前言开始:
---
title: "清晰、具体的标题"
sidebarTitle: "侧边栏的简短标题(可选)"
---

共置 Python 和 JavaScript/TypeScript 内容

所有文档在可能的情况下必须同时用 Python 和 JavaScript/TypeScript 编写。为此,我们使用自定义的内联语法来区分应出现在一种或两种语言中的部分:
:::python
Python 特定的内容。在实际文档中,`python` 前面的反斜杠(`\`)被省略。
:::

:::js
JavaScript/TypeScript 特定的内容。在实际文档中,`js` 前面的反斜杠(`\`)被省略。
:::

两种语言通用的内容(不包裹)
这将生成两个输出(每种语言一个),分别位于 /oss/python/concepts/foo.mdx/oss/javascript/concepts/foo.mdx。每个输出的页面都需要添加到 /src/docs.json 文件中才能包含在导航中。
我们不希望缺乏对等性阻碍贡献。如果某个功能仅在一个语言中可用,那么在该语言赶上之前,只提供该语言的文档是可以的。在这种情况下,请注明该功能在另一种语言中尚不可用。如果您需要帮助在 Python 和 JavaScript/TypeScript 之间翻译内容,请在社区 Slack 中提问或在您的 PR 中标记维护者。

质量标准

通用指南

多个页面覆盖相同的内容难以维护并会导致混淆。每个概念或功能应该只有一个规范页面。链接到其他指南,而不是重新解释。
文档部分不是孤立存在的。频繁链接到其他部分,以便用户了解不熟悉的主题。这包括链接到 API 参考和概念部分。
采取少即是多的方法。如果存在另一个解释得很好的部分,请链接到它而不是重新解释,除非您的内容提供了新的角度。

可访问性要求

确保文档对所有用户都可访问:
  • 使用标题和列表构建内容,便于浏览
  • 使用具体、可操作的链接文本,而不是“点击这里”
  • 为所有图像和图表包含描述性的替代文本

交叉引用

使用一致的交叉引用来连接文档和 API 参考文档。 从文档到 API 参考: 使用 @[] 语法链接到 API 参考页面:
有关所有配置选项,请参见 @[`ChatAnthropic`]

@[`bind_tools`][ChatAnthropic.bind_tools] 方法接受...
构建管道会根据当前语言范围(Python 或 JavaScript)将这些转换为适当的 Markdown 链接。例如,@[ChatAnthropic] 会根据正在构建的文档版本,变成指向 Python 或 JS API 参考页面的链接,但前提是 link_map.py 文件中存在相应的条目! 详情见下文。

获取帮助

我们的目标是拥有最简单的开发者设置。如果您在设置过程中遇到任何困难,请在社区 Slack 中提问或打开一个论坛帖子。内部团队成员可以在 #documentation Slack 频道中联系。