跳到主要内容
Open on GitHub

文档风格指南

随着LangChain的不断发展,涵盖各种概念和集成的文档量也在持续增长。本页面为任何为LangChain编写文档的人员提供指导,并概述了我们在组织和结构方面的一些理念。

理念

LangChain的文档遵循Diataxis框架。在此框架下,所有文档分为四类:教程操作指南参考资料解释

教程

教程是引导读者进行实践活动的课程。它们的目的是通过实际操作展示实现特定目标的一种方法,帮助用户理解概念及其相互作用。它们应避免深入介绍实现该目标的多种方法排列组合。相反,它应该引导新用户通过推荐的路径来完成教程的目标。虽然教程的最终结果不一定需要完全达到生产就绪状态,但它应该有用,并能实际满足教程引言中明确声明的目标。关于如何处理额外场景的信息应归入操作指南。

引用Diataxis网站的话:

教程旨在帮助用户 习得 技能和知识——即学习。它的目的不是帮助用户完成某项任务,而是帮助他们学习。

在LangChain中,这些通常是展示端到端用例的更高层次的指南。

一些例子包括:

一个好的结构性经验法则是遵循Numpy的这个示例的结构。

以下是编写优秀教程的一些高级技巧:

  • 侧重于引导用户完成某项任务,但要记住最终目标更多是传授原理,而非创建一个完美的生产系统。
  • 具体明确,而非抽象,并遵循单一路径。
    • 无需深入探讨替代方法,但可以引用它们,最好附上指向适当操作指南的链接。
  • 尽快“得分”——让用户能运行并产生输出。
    • 之后可以迭代和扩展。
    • 尽量在给定步骤中频繁设置检查点,让用户可以运行代码并看到进度。
  • 侧重于结果,而非技术解释。
    • 大量交叉链接到相应的概念/参考页面。
  • 首次提及LangChain概念时,请使用其完整名称(例如“LangChain表达式语言 (LCEL)”),并链接到其概念/其他文档页面。
    • 添加一个指向包含必要背景信息页面的前提条件标注也很有帮助。
  • 最后以一个总结/后续步骤部分结束,概述教程所涵盖的内容和未来的阅读材料,例如相关的操作指南。

操作指南

操作指南,顾名思义,演示如何做某项独立且具体的事情。它应该假定用户已经熟悉基本概念,并侧重于解决一个即时问题。然而,它仍应提供一些背景信息或列出信息可能相关的特定场景。如果某些情况下一种方法优于另一种,它们可以而且应该讨论替代方案。

引用Diataxis网站的话:

操作指南服务于已具备能力的用户,您可以假定他们知道自己想做什么,并且能够正确地遵循您的指示。

一些例子包括:

以下是编写优秀操作指南的一些高级技巧:

  • 在开始时清楚地解释您将引导用户完成什么。
  • 假定用户意图比教程更高,并展示用户需要做什么才能完成该任务。
  • 假定用户熟悉概念,但解释建议操作为何有帮助。
    • 大量交叉链接到概念/参考页面。
  • 讨论在解决问题时可能出现的替代方案和实际权衡。
  • 使用大量示例代码。
    • 优先使用读者可以直接复制和运行的完整代码块。
  • 最后以一个总结/后续步骤部分结束,概述教程所涵盖的内容和未来的阅读材料,例如其他相关的操作指南。

概念指南

LangChain的概念指南属于Diataxis框架的解释象限。这些指南应比操作指南或教程更抽象地涵盖LangChain术语和概念,面向那些对框架有深入理解和洞察力感兴趣的好奇用户。尽量避免过大的代码示例,因为主要目标是为用户提供视角,而非完成一个实际项目。这些指南应涵盖事物为何如此运作的原因

本文档风格指南旨在归入此类别。

引用Diataxis网站的话:

解释的视角比其他类型更高、更广。它不像操作指南那样从用户视角出发,也不像参考资料那样提供对机制的特写视图。在每种情况下,其范围都是一个主题——“一个知识领域”,它必须以合理、有意义的方式加以界定。

一些例子包括:

以下是编写优秀概念指南的一些高级技巧:

  • 解释设计决策。概念X为何存在,以及为何以这种方式设计?
  • 使用类比并引用其他概念和替代方案
  • 避免混入过多的参考内容
  • 您可以并且应该引用其他指南中涵盖的内容,但请务必链接到它们。

参考资料

参考资料包含详细的底层信息,精确描述了存在哪些功能以及如何使用它们。在LangChain中,这主要是我们的API参考页面,它们是从代码中的文档字符串填充的。参考页面通常不会从头到尾阅读,而是在用户需要了解如何使用特定功能时按需查阅。

引用Diataxis网站的话:

参考指南的唯一目的是尽可能简洁有序地进行描述。教程和操作指南的内容是由用户需求驱动的,而参考资料则是由其描述的产品驱动的。

LangChain中的许多参考页面是自动从代码生成的,但以下是编写优秀文档字符串的一些高级技巧:

  • 简洁明了
  • 讨论特殊情况和与用户期望的偏差
  • 详细说明所需的输入和输出
  • 简要说明何时可能使用该功能即可,但深入的细节应放在其他章节。

每个类别都有其独特的目的,并需要特定的内容编写和结构化方法。

一般准则

以下是您在编写和组织文档时应考虑的其他一些准则。

通常情况下,除非有特殊需要,我们不合并外部贡献者的新教程。我们欢迎更新以及新的集成文档、操作指南和参考资料。

避免重复

多页深入涵盖相同内容会难以维护并造成混淆。对于给定概念或功能,应该只有一页(极少数情况下两页)规范页面。相反,您应该链接到其他指南。

由于文档的各个部分并非独立存在,因此经常链接到其他章节非常重要,这可以帮助开发人员在阅读过程中了解更多不熟悉的主题。

这包括链接到API参考和概念章节!

简洁明了

总的来说,采取“少即是多”的方法。如果存在其他章节对某个概念有很好的解释,您应该链接到它而不是重新解释,除非您正在编写的文档中该概念呈现出新的复杂性。

简洁明了,包括代码示例。

一般风格

  • 尽可能使用主动语态和现在时
  • 使用示例和代码片段来说明概念和用法
  • 使用适当的标题级别(#, ##, ###等)来分层组织内容
  • 使用更少的单元格和更多的代码,以便于复制/粘贴
  • 使用项目符号和编号列表将信息分解为易于消化的块
  • 经常使用表格(特别是参考资料部分)和图表来直观地呈现信息
  • 对于较长的文档页面,包含目录以帮助读者导航内容,但对于较短的页面则隐藏目录。