一项标准化使用 /llms.txt 文件的提案,旨在提供信息,以帮助大型语言模型在推理时使用网站内容和信息
作者:Jeremy Howard
发布于:2024年9月3日
原文地址:https://llmstxt.org/
背景
大型语言模型越来越依赖网站信息,但面临一个关键限制:
上下文窗口太小,无法完整处理大多数网站的全部内容。
以及复杂页面内容提取为纯文本时的困难和不精准,当复杂页面包含导航、广告和JavaScript等冗余信息时。
虽然网站同时服务于人类读者和大型语言模型,但如果能提供在单一、易于访问的位置,提供简洁、专业级信息,对大模型会更有利。
一个例子:这对于开发环境等使用场景尤为重要,在这些场景中,大型语言模型需要快速访问和理解编程文档和API。
提议
我们建议向网站添加名为/llms.txt
的静态markdown格式文件,以提供对大型语言模型友好的内容。该文件提供简要的背景信息、指导和详细markdown文件的链接。
llms.txt的markdown格式既适合人类阅读也适合大型语言模型阅读,同时还采用精确格式,同时允许使用广泛认可的格式处理方法(即各种格式渲染和正则表达式等传统编程技术)。
此外,我们也建议网站上包含可能对大型语言模型有用页面markdown描述,在原始页面的相同URL上提供这些页面的干净markdown版本,但附加.md
后缀。(没有文件名的URL可以附加index.html.md
。)
FastHTML项目在其文档中遵循了这两项建议。例如,这里是FastHTML文档的llms.txt。这里是常规HTML文档页面的示例,以及完全相同的URL但带有.md扩展名。
这个提案不包括任何关于如何处理llms.txt文件的特定建议,因为这将取决于应用场景。
例如,FastHTML项目选择自动将llms.txt扩展为两个包含链接URL内容的markdown文件,使用适合Claude等大型语言模型的基于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这样的传统结构化格式。
这样做的原因是我们预期这些文件中的许多将被AI 模型和AI Agent读取。尽管如此,llms.txt中的信息遵循特定格式,可以使用标准的基于编程的工具进行读取。
llms.txt文件规范适用于位于网站根路径/llms.txt
(或可选地,在子路径中)的文件。遵循规范的文件以特定顺序包含以下Markdown部分:
- 带有项目或网站名称的H1标题。这是唯一必需的部分
- 一个带有项目简短摘要的引用块,包含理解文件其余部分所必需的关键信息
- 零个或多个任何类型的Markdown部分(例如段落、列表等),除了标题外,包含有关项目的更详细信息以及如何解释所提供文件的说明
- 零个或多个由H2标题分隔的Markdown部分,包含可获取更多详细信息的URL"文件列表"
- 每个"文件列表"是一个Markdown列表,包含必需的Markdown超链接
[name](url)
,然后可选地加上:
和关于该文件的注释。
- 每个"文件列表"是一个Markdown列表,包含必需的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)
注意,"Optional"部分具有特殊含义——如果包含此部分,在需要更短上下文时可以跳过其中提供的URL。将其用于通常可以跳过的次要信息。
现有标准
llms.txt 旨在与当前的SEO网络标准共存(包括sitemap.xml和robots.txt)。
虽然sitemap为搜索引擎列出所有页面,但 llms.txt
为大型语言模型提供精选概览。它可以补充 robots.txt,为允许的内容提供上下文。该文件还可以引用网站上使用的结构化数据标记,帮助大型语言模型理解如何在上下文中解释这些信息。
文件路径标准化的方法遵循 /robots.txt
和 /sitemap.xml
的做法。
robots.txt 和 llms.txt
有不同的目的——
-
robots.txt 通常用于让自动化工具知道对网站的哪些访问被认为是可接受的,例如搜索索引机器人。
-
另一方面,
llms.txt
信息通常会在用户明确请求某个主题的信息时按需使用,比如在项目中包含编码库文档时,或者在向具有搜索功能的聊天机器人询问信息时。我们预期llms.txt
主要对推理有用,即在用户寻求帮助的时刻,而不是用于训练。然而,如果llms.txt
的使用变得广泛,未来的训练运行也可能利用llms.txt
文件中的信息。
sitemap.xml 是网站上所有可索引的人类可读信息的列表。这不能替代 llms.txt
,因为它——
- 通常不会列出页面的大型语言模型可读版本
- 不包括外部网站的 URL,尽管它们可能有助于理解信息
- 通常会覆盖总体上太大而无法适应大型语言模型上下文窗口的文档,并且会包含许多理解网站不必要的信息。
示例
以下是 llms.txt
的示例,这是 FastHTML 项目使用的文件的精简版本(另见完整版本):
MARKDOWN 代码# 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://fastht.ml/docs/tutorials/quickstart_for_web_devs.html.md): A brief overview of many FastHTML features - [HTMX reference](https://github.com/bigskysoftware/htmx/blob/master/www/content/reference.md): Brief description of all HTMX attributes, CSS classes, headers, events, extensions, js lib methods, and config options ## Examples- [Todo list application](https://github.com/AnswerDotAI/fasthtml/blob/main/examples/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/jph00/809e4a4808d4510be0e3dc9565e9cbd3/raw/9b717589ca44cedc8aaf00b2b8cacef922964c0f/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 10.3+网站提供llms.txt提案全面支持的Drupal配方
llms-txt-php
- 用于编写和读取llms.txt Markdown文件的库
后续步骤
llms.txt
规范开放社区意见。GitHub仓库托管这份非正式概述,允许版本控制和公开讨论。社区Discord频道可用于分享实施经验和讨论最佳实践。
Cover Image by Franz Bachinger from Pixabay.