/llms.txt
旨在帮助 LLM 在推理时使用网站。背景
大型语言模型越来越依赖网站信息,但面临一个关键的限制:上下文窗口太小,无法完整处理大多数网站。将包含导航、广告和 JavaScript 的复杂 HTML 页面转换为 LLM 友好的纯文本既困难又不精确。
虽然网站既服务于人类读者,也服务于法学硕士 (LLM),但后者受益于更简洁、更专业的信息,这些信息集中在一个易于访问的单一位置。这对于开发环境等用例尤为重要,因为LLM 需要快速访问编程文档和 API。
提议
LLMs
我们建议在网站上添加一个/llms.txt
Markdown 文件,以提供适合 LLM 的内容。该文件提供简要的背景信息、指导以及详细 Markdown 文件的链接。
llms.txt markdown 不仅易于人类和 LLM 读取,而且具有精确的格式,允许使用固定的处理方法(即解析器和正则表达式等经典编程技术)。
我们还建议,网站上包含可能对 LLM 阅读有用的信息的页面应提供这些页面的干净 markdown 版本,其 URL 与原始页面相同,但.md
附加了文件名。(没有文件名的 URL 应附加文件名index.html.md
。)
FastHTML 项目遵循以下两个文档提案。例如,这是FastHTML 文档 llms.txt 。这是一个常规 HTML 文档页面的示例,其 URL 完全相同,但扩展名为 .md。
本提案并未包含任何关于如何处理 llms.txt 文件的具体建议,因为这将取决于具体应用程序。例如,FastHTML 项目选择自动将 llms.txt 扩展为两个包含链接 URL 内容的 Markdown 文件,并使用一种基于 XML 的结构,这种结构适用于 Claude 等 LLM。这两个文件分别是:llms-ctx.txt(不包含可选 URL)和llms-ctx-full.txt(包含可选 URL)。它们是使用llms_txt2ctx
命令行应用程序创建的,FastHTML 文档中包含了用户如何使用它们的信息。
llms.txt 文件的多功能性意味着它们可以用于多种用途——从帮助开发人员查找软件文档,到帮助企业概述其结构,甚至为利益相关者解析复杂的法律法规。它们同样适用于个人网站(帮助解答有关某人简历的问题)、电商网站(解释产品和政策)或学校和大学(提供快速访问课程信息和资源的渠道)。
请注意,所有nbdev项目现在默认创建所有页面的 .md 版本。所有使用 nbdev 的 Answer.AI 和 fast.ai 软件项目都已通过此功能重新生成文档。有关示例,请参阅fastcore 文档模块的markdown 版本。
格式
目前,语言模型最广泛且最容易理解的格式是 Markdown。简单地展示关键 Markdown 文件的位置是一个很好的开端。提供一些基本结构有助于语言模型找到所需信息的来源。
该llms.txt
文件的特殊之处在于,它使用 Markdown 来构建信息,而不是使用 XML 等传统的结构化格式。这样做的原因是,我们预计许多此类文件会被语言模型和代理读取。不过,llms.txt 中的信息遵循特定的格式,可以使用标准的基于编程的工具读取。
llms.txt 文件规范适用于位于/llms.txt
网站根路径(或可选的子路径)中的文件。遵循该规范的文件包含以下 Markdown 格式的部分,并按特定顺序排列:
- H1 部分,包含项目或站点的名称。这是唯一必填部分
- 带有项目简短摘要的块引用,包含理解文件其余部分所需的关键信息
- 零个或多个除标题之外的任何类型的 Markdown 部分(例如段落、列表等),包含有关项目以及如何解释所提供文件的更多详细信息
- 零个或多个由 H2 标题分隔的 Markdown 部分,包含可获得更多详细信息的 URL“文件列表”
- 每个“文件列表”都是一个 markdown 列表,包含必需的 markdown 超链接
[name](url)
,然后可选地包含:
有关该文件的注释。
- 每个“文件列表”都是一个 markdown 列表,包含必需的 markdown 超链接
这是一个模拟示例:
# Title
> Optional description goes here
Optional details go here
## Section name
- [Link title](https://link_url): Optional link details
## Optional
- [Link title](https://link_url)
请注意,“可选”部分具有特殊含义——如果包含该部分,则在需要更短上下文时可以跳过其中提供的 URL。将其用于通常可以跳过的次要信息。
现有标准
llms.txt 旨在与当前的 Web 标准共存。站点地图列出了搜索引擎的所有页面,同时llms.txt
为 LLM 提供了精心策划的概览。它可以补充 robots.txt,提供允许内容的上下文。该文件还可以引用站点上使用的结构化数据标记,帮助 LLM 理解如何在上下文中解读这些信息。
标准化文件路径的方法遵循/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 is a python library which brings together Starlette, Uvicorn, HTMX, and fastcore's `FT` "FastTags" into a library for creating server-rendered hypermedia applications.
Important notes:
- Although parts of its API are inspired by FastAPI, it is *not* compatible with FastAPI syntax and is not targeted at creating API services
- FastHTML is compatible with JS-native web components and any vanilla JS library, but not with React, Vue, or Svelte.
## Docs
- [FastHTML quick start](https://answerdotai.github.io/fasthtml/tutorials/quickstart_for_web_devs.html.md): A brief overview of many FastHTML features
- [HTMX reference](https://raw.githubusercontent.com/path/reference.md): Brief description of all HTMX attributes, CSS classes, headers, events, extensions, js lib methods, and config options
## Examples
- [Todo list application](https://raw.githubusercontent.com/path/adv_app.py): Detailed walk-thru of a complete CRUD app in FastHTML showing idiomatic use of FastHTML and HTMX patterns.
## Optional
- [Starlette full documentation](https://gist.githubusercontent.com/path/starlette-sml.md): A subset of the Starlette documentation useful for FastHTML development.
要创建有效的llms.txt
文件,请考虑以下准则:
- 使用简洁、清晰的语言。
- 链接到资源时,请包含简短、信息丰富的描述。
- 避免使用含糊不清的术语或无法解释的术语。
- 运行一个工具,将您的
llms.txt
文件扩展为 LLM 上下文文件,并测试一些语言模型,看看它们是否可以回答有关您的内容的问题。
目录
llms.txt
以下列出了网络上可用的一些文件:
集成
有各种工具和插件可帮助将 llms.txt 规范集成到您的工作流程中:
llms_txt2ctx
– 用于解析 llms.txt 文件并生成 LLM 上下文的 CLI 和 Python 模块- JavaScript 实现– JavaScript 实现示例
vitepress-plugin-llms
– VitePress 插件可按照 llms.txt 规范自动为网站生成 LLM 友好文档docusaurus-plugin-llms
– Docusaurus 插件,用于按照 llmtxt.org 标准生成 LLM 友好文档- Drupal LLM 支持– Drupal Recipe 为任何 Drupal 10.3+ 网站上的 llms.txt 提案提供全面支持