揭秘 /llms.txt:为大型语言模型量身定制的网站导航文件
Proposal for a /llms.txt Markdown file to provide LLMs with concise, structured website content, plus .md versions of key pages, improving access to expert information like documentation.
背景
随着大型语言模型(LLMs)日益依赖网站信息,一个关键限制逐渐凸显:其上下文窗口通常太小,无法完整处理大多数网站。将包含导航、广告和 JavaScript 的复杂 HTML 页面转换为 LLM 友好的纯文本,既困难又不精确。
虽然网站同时服务于人类读者和 LLMs,但后者更受益于简洁、专家级的信息,这些信息应集中在一个易于访问的位置。这对于开发环境等用例尤为重要,因为 LLMs 需要快速访问编程文档和 API。
提案
我们建议在网站中添加一个 /llms.txt Markdown 文件,以提供 LLM 友好的内容。该文件提供简要的背景信息、指导以及指向详细 Markdown 文件的链接。
llms.txt Markdown 文件既可供人类阅读,也可供 LLM 读取,同时还采用精确的格式,允许使用固定的处理方法(例如解析器和正则表达式等经典编程技术)。
此外,我们建议网站上包含可能对 LLMs 有用的信息的页面,应在原始 URL 的基础上,通过追加 .md 扩展名,提供该页面的干净 Markdown 版本。(没有文件名的 URL 应追加 index.html.md。)
FastHTML 项目在其文档中遵循了这两项提案。例如,这是 FastHTML 文档的 llms.txt。这里是一个常规 HTML 文档页面的示例,以及带有 .md 扩展名的相同 URL。
该提案不包括任何关于如何处理 llms.txt 文件的具体建议,因为这取决于应用程序。例如,FastHTML 项目选择自动将 llms.txt 扩展为两个 Markdown 文件,其中包含链接 URL 的内容,并使用适合 Claude 等 LLMs 的基于 XML 的结构。这两个文件是:llms-ctx.txt(不包含可选的 URL)和 llms-ctx-full.txt(包含可选的 URL)。它们是通过 llms_txt2ctx 命令行应用程序创建的,FastHTML 文档中包含了用户如何使用它们的信息。
llms.txt 文件的多样性意味着它们可以服务于许多目的——从帮助开发者浏览软件文档,到为企业提供结构概述,甚至为利益相关者解析复杂的法规。它们同样适用于个人网站,帮助回答关于某人简历的问题;适用于电子商务网站,解释产品和政策;或适用于学校和大学,提供对其课程信息和资源的快速访问。
请注意,所有 nbdev 项目现在默认创建所有页面的 .md 版本。所有使用 nbdev 的 Answer.AI 和 fast.ai 软件项目都已重新生成了具有此功能的文档。例如,请参阅 fastcore 的 docments 模块的 Markdown 版本。
格式
目前,语言模型最广泛且易于理解的格式是 Markdown。简单地指示关键 Markdown 文件的位置是一个很好的第一步。提供一些基本结构有助于语言模型找到所需信息的来源。
llms.txt 文件的独特之处在于它使用 Markdown 来构建信息,而不是经典的 XML 等结构化格式。这样做的原因是我们期望许多这样的文件将由语言模型和代理读取。尽管如此,llms.txt 中的信息遵循特定的格式,并且可以使用基于标准编程的工具读取。
llms.txt 文件规范适用于位于网站根路径 /llms.txt(或可选地在子路径中)的文件。遵循该规范的文件包含以下 Markdown 部分,按特定顺序排列:
- H1 标题:包含项目或站点的名称。这是唯一必需的部分。
- 块引用:包含项目的简短摘要,其中包含理解文件其余部分所需的关键信息。
- 零个或多个 Markdown 部分(例如段落、列表等,不包括标题):包含关于项目的更详细信息以及如何解释提供的文件。
- 零个或多个由 H2 标题分隔的 Markdown 部分:包含“文件列表”,其中列出了可获取更多详细信息的 URL。
每个“文件列表”都是一个 Markdown 列表,包含必需的 Markdown 超链接 [名称](URL),然后可选地跟随一个冒号和关于文件的注释。
以下是一个模拟示例:
# 标题
> 可选的描述放在这里
可选的详细信息放在这里
## 部分名称
- [链接标题](https://链接_url): 可选的链接详细信息
## 可选
- [链接标题](https://链接_url)
请注意,“可选”部分具有特殊含义——如果包含该部分,则在需要较短上下文时可以跳过其中提供的 URL。将其用于通常可以跳过的次要信息。
现有标准
llms.txt 旨在与当前的网络标准共存。虽然站点地图为搜索引擎列出了所有页面,但 llms.txt 为 LLMs 提供了精选的概述。它可以通过为允许的内容提供上下文来补充 robots.txt。该文件还可以引用网站上使用的结构化数据标记,帮助 LLMs 理解如何在上下文中解释这些信息。
标准化文件路径的方法遵循了 /robots.txt 和 /sitemap.xml 的方法。robots.txt 和 llms.txt 有不同的目的——robots.txt 通常用于让自动化工具知道对站点的哪些访问被认为是可接受的,例如用于搜索索引机器人。另一方面,llms.txt 信息通常在用户明确请求有关主题的信息时按需使用,例如在项目中包含编码库的文档时,或向具有搜索功能的聊天机器人询问信息时。我们的期望是,llms.txt 主要用于推理,即用户寻求帮助时,而不是用于训练。然而,如果 llms.txt 的使用变得广泛,未来的训练运行也可能利用 llms.txt 文件中的信息。
sitemap.xml 是站点上所有可索引的人类可读信息的列表。这不是 llms.txt 的替代品,因为它:
- 通常不会列出页面的 LLM 可读版本。
- 不包括外部站点的 URL,即使它们可能有助于理解信息。
- 通常会涵盖总体上太大而无法放入 LLM 上下文窗口的文档,并且会包含大量理解站点所不必要的信息。
示例
以下是 llms.txt 的一个示例,本例中是 FastHTML 项目使用的文件的简化版本(另请参阅完整版本):
# FastHTML
> FastHTML 是一个 Python 库,它将 Starlette、Uvicorn、HTMX 和 fastcore 的 `FT` "FastTags" 集成到一个用于创建服务器端渲染超媒体应用程序的库中。
重要说明:
- 尽管其部分 API 受到 FastAPI 的启发,但它*不*兼容 FastAPI 语法,并且不针对创建 API 服务。
- FastHTML 兼容 JS 原生的 Web 组件和任何 vanilla JS 库,但不兼容 React、Vue 或 Svelte。
## 文档
- [FastHTML 快速入门](https://fastht.ml/docs/tutorials/quickstart_for_web_devs.html.md):许多 FastHTML 功能的简要概述
- [HTMX 参考](https://github.com/bigskysoftware/htmx/blob/master/www/content/reference.md):所有 HTMX 属性、CSS 类、头部、事件、扩展、js 库方法和配置选项的简要描述
## 示例
- [待办事项列表应用程序](https://github.com/AnswerDotAI/fasthtml/blob/main/examples/adv_app.py):完整 CRUD 应用程序的详细演练,展示 FastHTML 和 HTMX 模式的惯用用法。
## 可选
- [Starlette 完整文档](https://gist.githubusercontent.com/jph00/809e4a4808d4510be0e3dc9565e9cbd3/raw/9b717589ca44cedc8aaf00b2b8cacef922964c0f/starlette-sml.md):对 FastHTML 有用的 Starlette 文档子集
版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。
文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。
若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。 也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。