菜单

文档系统

相关源文件

本文档解释了 PrivateGPT 文档的生成、维护和发布方式。PrivateGPT 使用 Fern 为多种编程语言生成面向用户的文档和客户端 SDK。本页重点介绍文档生成系统和 SDK 发布流程,而非实际内容组织。有关配置 PrivateGPT 本身的信息,请参阅配置系统

概述

PrivateGPT 维护一个全面的文档系统,该系统由以下部分组成:

  1. 面向用户的文档网站(发布于 docs.privategpt.dev)
  2. API 参考文档
  3. 适用于多种语言的编程 SDK

文档使用 MDX 文件(带有 JSX 组件的 Markdown)和 YAML 配置文件在 /fern 目录中定义。该系统自动生成并发布文档网站和特定语言的 SDK。

来源:fern/docs.yml1-130 fern/fern.config.json1-4

文档结构

PrivateGPT 文档采用分层结构组织,由选项卡、章节和页面定义。此结构在 Fern 配置中完全指定。

主要结构在主 Fern 配置文件(fern/docs.yml)中定义,其中指定了:

  • 选项卡:文档的主要部分(概览、快速入门、安装等)
  • 章节:选项卡中相关内容的集合
  • 页面:用 MDX 编写的独立文档文件

每个选项卡都有一个显示名称和图标,并且导航结构是完全可定制的。

来源:fern/docs.yml8-106

Fern 配置系统

文档通过几个关键文件进行配置,这些文件控制其结构、外观和行为。

主配置文件

主配置文件 fern/docs.yml 控制整体文档结构和外观。它定义了:

  • 实例配置和域设置
  • 带图标的选项卡定义
  • 导航层次结构
  • 内容文件映射
  • 品牌元素(颜色、标志)

例如,选项卡定义部分为每个选项卡指定了显示名称和图标

导航部分将这些选项卡映射到特定内容并定义其结构

来源:fern/docs.yml1-130

Fern 版本配置

fern/fern.config.json 文件指定了 Fern 的版本和组织信息。

这有助于确保在不同环境和 CI/CD 管道中生成的一致性。

来源:fern/fern.config.json1-4

文档生成工作流程

文档使用 Fern CLI 工具生成,该工具处理配置文件和内容以生成文档站点和 SDK。

来源:.github/workflows/preview-docs.yml1-55

预览系统

PrivateGPT 通过 GitHub Actions 实现了一个文档更改的自动化预览系统。当对 fern 目录中的文件进行拉取请求时,会触发一个工作流程,该流程会执行以下操作:

  1. 检出 PR 的代码
  2. 安装 Fern CLI
  3. 生成文档预览
  4. 在 PR 上评论预览 URL

此过程允许贡献者在合并前查看其文档更改在最终站点中的显示效果,从而便于审查和质量保证。

该工作流程在 .github/workflows/preview-docs.yml 中定义,并使用 GitHub Actions 系统实现自动化。

来源:.github/workflows/preview-docs.yml1-55

SDK 生成

除了文档站点,PrivateGPT 还使用 Fern 为多种编程语言生成客户端 SDK。这使得开发人员可以使用语言原生库与 PrivateGPT 的 API 进行交互。

SDK 文档页面(fern/docs/pages/api-reference/sdks.mdx)列出了可用的 SDK 及其 GitHub 仓库链接。目前支持以下语言:

  • TypeScript
  • Python
  • Java (WIP)
  • Go (WIP)

SDK 会自动与最新的 API 更改保持同步,确保开发人员始终能够访问最新功能。

来源:fern/docs/pages/api-reference/sdks.mdx1-39

文档内容组织

文档内容组织在 fern/docs/pages/ 目录中,子目录对应配置中定义的选项卡。内容文件以 MDX 格式编写,该格式将 Markdown 与 JSX 组件结合,以实现增强的格式化和交互元素。

例如,设置页面使用 Markdown 文本和代码示例解释了配置配置文件

# Settings and profiles for your private GPT

The configuration of your private GPT server is done thanks to `settings` files (more precisely `settings.yaml`).
These text files are written using the [YAML](https://en.wikipedia.org/wiki/YAML) syntax.
...

API 参考部分将自动生成的 API 文档与手动编写的 SDK 使用说明相结合。

来源:fern/docs/pages/manual/settings.mdx1-85 fern/docs/pages/api-reference/sdks.mdx1-39

文档样式和品牌

文档站点包含 Fern 配置中定义的自定义样式和品牌元素

此外,导航栏还包含指向 GitHub 和 Discord 等外部资源的链接

这些元素确保了文档的品牌一致性,同时为用户提供了有用的导航。

来源:fern/docs.yml107-129

与配置系统的关系

虽然与文档系统不同,但 PrivateGPT 的配置系统本身也在生成的文档中有所记载。设置和配置文件机制允许用户通过 YAML 文件自定义 PrivateGPT,支持环境变量扩展和配置文件覆盖。

此配置系统在“手动”选项卡下的文档内容中详细解释,展示了文档系统如何有效地解释 PrivateGPT 自身的配置能力。

来源:fern/docs/pages/manual/settings.mdx1-85