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

快速开始 - 本地开发

要运行文档的本地预览:
git clone https://github.com/langchain-ai/docs.git
cd docs
make install
make dev
这将在 http://localhost:3000 启动一个具有热重载功能的开发服务器。编辑 src/ 中的文件,即可立即看到更改。
如果您在本地预览时遇到问题,请尝试运行 mint update 以确保您使用的是最新的 Mintlify 版本。
必需:可选:

编辑文档

对于拼写错误或小改动,无需本地设置即可直接在 GitHub 上编辑:
  1. 点击任何页面底部的 Edit this page on GitHub(在 GitHub 上编辑此页面)。
  2. Fork 到您的个人帐户。
  3. 在 GitHub 的网页编辑器中进行更改。
  4. 创建一个 pull request。
仅编辑 src/ 中的文件build/ 目录是自动生成的。
  1. 按照我们的 写作标准 编辑 src/ 中的文件。
  2. 提交前运行 质量检查
  3. 创建一个 pull request 以供审查。
当您创建或更新 PR 时,会自动生成一个 预览分支/ID。ID 将作为评论留在 PR 上。
  1. 从评论中复制预览分支的 ID
  2. Mintlify 仪表板 中,点击 Create preview deployment(创建预览部署)
  3. 输入预览分支的 ID 并点击 Create deployment(创建部署)
  4. 选择预览并点击 Visit(访问)以查看
要使用最新更改重新部署,请在仪表板上点击 Redeploy(重新部署)。

运行质量检查

提交更改之前,请确保您的代码通过格式化和 linting 检查:
# Check broken links
make mint-broken-links

# Format code automatically
make format

# Check for linting issues
make lint

# Fix markdown issues
make lint_md_fix

# Run tests to ensure your changes don't break existing functionality
make test
有关更多详细信息,请参阅 README 中的 可用命令 部分。

文档类型

所有文档均属于以下四类之一:
在适用情况下,所有文档都必须包含 Python 和 JavaScript/TypeScript 内容。有关更多详细信息,请参阅 同时放置 Python 和 JavaScript/TypeScript 内容 部分。

操作指南

操作指南是为知道自己想要完成什么任务的用户提供的面向任务的说明。操作指南的示例位于 LangChainLangGraph 选项卡上。
  • 关注任务:专注于特定任务或问题
  • 分步进行:将任务分解为更小的步骤
  • 动手实践:提供具体的示例和代码片段
  • 关注 如何做 而不是 为什么
  • 使用具体的示例和代码片段
  • 将任务分解为更小的步骤
  • 链接到相关的概念指南和参考资料

概念指南

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

参考

参考文档包含详细的底层信息,描述确切存在的功能以及如何使用它。 一份好的参考资料应该:
  • 描述存在的内容(所有参数、选项、返回值)
  • 全面且结构化,便于查找
  • 作为技术细节的权威来源
请参阅 JavaScript/TypeScript 参考文档 的贡献指南。
  • 保持一致;遵循提供商特定文档的现有模式
  • 包含基本用法(代码片段)和常见的边缘情况/故障模式
  • 说明功能何时需要特定版本
  • 新的集成或提供商需要专门的参考页面
  • 复杂的配置选项需要详细说明
  • API 更改引入了新参数或行为
  • 社区经常询问有关特定功能的问题

教程

教程是较长的分步指南,它建立在自身基础上,并引导用户通过特定的实际活动来建立理解。教程通常位于 学习 选项卡上。
如果没有迫切需要,我们通常不会合并来自外部贡献者的新教程。如果您觉得文档中缺少某个主题或涵盖不充分,请 打开一个新的 issue
  • 实用:专注于通过实际活动来建立理解。
  • 分步进行:将活动分解为更小的步骤。
  • 动手实践:提供顺序的、可工作的代码片段。
  • 补充性:提供功能使用不一定需要的额外上下文和信息。
  • 如果用户按顺序执行步骤,代码片段应该是连续的且可工作的。
  • 为活动提供一些背景信息,但链接到相关的概念指南和参考资料以获取更详细的信息。

写作标准

参考文档有不同的标准 - 有关详细信息,请参阅 参考文档贡献指南

Mintlify 组件

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

页面结构

每个文档页面必须以 YAML frontmatter 开头:
---
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 频道中联系。