LLMs.txt解读:网络新的LLM-Ready内容标准

LLMs.txt解读:网络新的LLM-Ready内容标准

六个月前,LLMs.txt 作为一种开创性的文件格式问世,旨在使大型语言模型 (LLM) 可以访问网站文档。自发布以来,该标准在开发人员和内容创建者中的影响力稳步上升。如今,随着围绕模型上下文协议(MCP)的讨论愈演愈烈,LLMs.txt 作为一种久经考验、人工智能优先的文档解决方案,在人类可读内容和机器友好型数据之间架起了一座桥梁,成为人们关注的焦点。在本文中,我们将探索 LLMs.txt 的发展历程,研究其结构和优势,深入探讨技术集成(包括 Python 模块和 CLI),并将其与新兴的 MCP 标准进行比较。

LLMs.txt的兴起

背景和语境

六个月前发布的 LLMs.txt 是为了应对一个关键挑战而开发的:robots.txt 和 sitemap.xml 等传统网络文件是为搜索引擎爬虫设计的,而不是为需要简洁、经过编辑的内容的人工智能模型设计的。LLMs.txt 提供了网站文档的精简概览,使 LLMs 能够快速了解基本信息,而不会被无关的细节所困扰。

要点:

  • 目的:将网站内容提炼为适合人工智能推理的格式。
  • 采用: 在其短暂的生命周期内,Mintlify、Anthropic 和 Cursor 等主要平台已经集成了 LLMs.txt,凸显了其有效性。
  • 当前趋势: 随着最近围绕 MCP(模型上下文协议)的讨论激增,社区正在积极比较这两种增强 LLM 能力的方法。

Twitter上的社区热议

Twitter 上的对话反映了 LLMs.txt 的快速应用和对其潜力的兴奋之情,同时有关 MCP 的讨论也在不断增加:

  • Jeremy Howard (@jeremyphoward):对这一势头表示庆祝,他说:”最近几周,我提出的 llms.txt 标准确实获得了巨大的发展势头。他感谢社区–尤其是 @StripeDev 的支持,Stripe 现已在其文档网站上托管 LLMs.txt。
  • Stripe Developers(@StripeDev):宣布他们已将 LLMs.txt 和 Markdown 添加到他们的文档(docs.stripe.com/llms.txt)中,使开发人员能够轻松地将 Stripe 的知识集成到任何 LLM 中。

将 Stripe 的知识集成到任何 LLM 中

  • Developer Insights@TheSeaMouse、@xpression_app 和 @gpjt 等开发者的推文不仅称赞了 LLMs.txt,还引发了将其与 MCP 进行比较的讨论。一些用户指出,LLMs.txt 增强了内容摄取功能,而 MCP 则有望使 LLMs 更具可操作性。

什么是LLMs.txt文件?

LLMs.txt 是一种 Markdown 文件,采用结构化格式,专门设计用于使 LLM 可以访问网站文档。主要有两个版本:

/llms.txt

  • 目的:提供网站文档的高层次策划概述。它可以帮助法律硕士快速掌握网站的结构并找到关键资源。
  • 结构:
    • 包含项目或网站名称的 H1。这是唯一必需的部分
    • 包含项目简短摘要的段落引语,其中包含理解文件其余部分所需的关键信息
    • 零个或多个除标题外的任何类型的标记符(如段落、列表等),包含有关项目的更多详细信息以及如何解释所提供的文件
    • 零个或多个由 H2 标题分隔的标记符部分,包含可获得更多详细信息的 URL “文件列表
      • 每个 “文件列表 ”都是一个标记符列表,包含一个必需的标记符超链接[名称](url),然后可选择一个:和关于文件的注释。

/llms-full.txt

  • 目的:在一个地方包含完整的文档内容,在需要时提供详细的上下文。
  • 用法:特别适用于技术 API 参考资料、深入指南和综合文档。

结构示例代码段:

# Project Name
> Brief project summary
## Core Documentation
- [Quick Start](url): A concise introduction
- [API Reference](url): Detailed API documentation
## Optional
- [Additional Resources](url): Supplementary information

LLMs.txt的主要优势

与传统网络标准相比,LLMs.txt 有几个明显的优势:

  • 针对 LLM 处理进行了优化:它去除了导航菜单、JavaScript 和 CSS 等非必要元素,只关注 LLM 所需的关键内容。
  • 高效的上下文管理:鉴于 LLM 在有限的上下文窗口中运行,LLMs.txt 的简洁格式可确保只使用最相关的信息。
  • 双重可读性:Markdown 格式使 LLMs.txt 既对人友好,又易于被自动工具解析。
  • 对现有标准的补充:与sitemap.xml或robots.txt不同,LLMs.txt提供了一种经过整理的、以人工智能为中心的文档视图。

如何在人工智能系统中使用LLMs.txt?

要充分利用 LLMs.txt 的优势,必须手动将其内容输入人工智能系统。以下是不同平台如何集成 LLMs.txt:

ChatGPT

  • 方法:用户将 /llms-full.txt 文件的 URL 或完整内容复制到 ChatGPT 中,丰富上下文以获得更准确的回复。
  • 优点:此方法可让 ChatGPT 在需要时参考详细文档。

ChatGPT集成LLMs.txt

Source – Link

Claude

  • 方法:由于 Claude 目前缺乏直接浏览功能,用户可以粘贴内容或上传文件,确保提供全面的上下文。
  • 优点:这种方法使 Claude 的响应建立在可靠的最新文档基础之上。

Claude集成LLMs.txt

Source – Link

Cursor

  • 方法:Cursor 的 @Docs 功能允许用户添加 LLMs.txt 链接,无缝集成外部内容。
  • 优点:增强 Cursor 的上下文意识,使其成为开发人员的强大工具。

Cursor集成LLMS.txt

Source – Link

生成LLMs.txt文件的工具

有几种工具可以简化 LLMs.txt 文件的创建,减少人工操作:

  • Mintlify:为托管文档自动生成 /llms.txt 和 /llms-full.txt 文件,确保一致性。

也可参考:https://mintlify.com/docs/quickstart

  • dotenv 的 llmstxt:将网站的 sitemap.xml 转换为符合要求的 LLMs.txt 文件,与现有工作流程无缝整合。
  • Firecrawl 的 llmstxt:利用网络抓取技术将网站内容编译成 LLMs.txt 文件,最大限度地减少人工干预。

实际应用和多功能性

LLMs.txt 文件的多功能性从 FastHTML 等现实世界的项目中可见一斑,这些项目遵循了这两项关于人工智能友好型文档的建议:

  • FastHTML文档:FastHTML项目不仅使用LLMs.txt文件提供其文档的精选概览,还提供了一个普通的HTML文档页面,其URL与.md扩展名相同。这种双重方法确保人类读者和 LLM 都能以最合适的格式访问内容。
  • 自动扩展:FastHTML 项目选择使用基于 XML 的结构将其 LLMs.txt 文件自动扩展为两个标记符文件。这两个文件是
    • llms-ctx.txt: 包含上下文,但不包含可选的 URL。
    • llms-ctx-full.txt: 包含可选 URL,以提供更全面的上下文。
  • 这些文件通过 llms_txt2ctx 命令行应用程序生成,FastHTML 文档提供了详细的使用指南。
  • 在各种应用中的通用性:除了技术文档,LLMs.txt 文件在各种情况下都很有用–从帮助开发人员浏览软件文档,到帮助企业概述其结构、为利益相关者分解复杂的立法,甚至提供个人网站内容(如简历)。同样,使用 nbdev 的 Answer.AI 和 fast.ai 项目也使用此功能重新生成文档–fastcore 的文档模块的 markdown 版本就是例证。

LLMs.txt的Python模块和 CLI

对于希望将 LLMs.txt 集成到其工作流程中的开发人员,我们提供了专门的 Python 模块和 CLI,用于解析 LLMs.txt 文件并创建适合 Claude 等系统的 XML 上下文文档。该工具不仅可以轻松地将文档转换为 XML,还提供了命令行界面和 Python API。

安装

pip install llms-txt

如何使用?

CLI

安装后, llms_txt2ctx 可在终端中使用。

要获取 CLI 的帮助,请:

llms_txt2ctx -h

将 llms.txt 文件转换为 XML 上下文并保存为 llms.md:

llms_txt2ctx llms.txt > llms.md

通过 -optional True 添加输入文件的“可选”部分。

Python模块

from llms_txt import *
samp = Path('llms-sample.txt').read_text()

使用 parse_llms_file 创建一个包含 llms.txt 文件各部分的数据结构(如果需要,也可以添加 optional=True):

parsed = parse_llms_file(samp)
list(parsed)
['title', 'summary', 'info', 'sections']
parsed.title,parsed.summary

实现与测试

为了说明解析 llms.txt 文件有多简单,下面是一个完整的解析器,只用了不到 20 行代码,没有任何依赖关系:

from pathlib import Path
import re,itertools
def chunked(it, chunk_sz):
    it = iter(it)
    return iter(lambda: list(itertools.islice(it, chunk_sz)), [])
def parse_llms_txt(txt):
    "Parse llms.txt file contents in `txt` to a `dict`"
    def _p(links):
        link_pat = '-\s*\[(?P<title>[^\]]+)\]\((?P<url>[^\)]+)\)(?::\s*(?P<desc>.*))?'
        return [re.search(link_pat, l).groupdict()
                for l in re.split(r'\n+', links.strip()) if l.strip()]
    start,*rest = re.split(fr'^##\s*(.*?$)', txt, flags=re.MULTILINE)
    sects = {k: _p(v) for k,v in dict(chunked(rest, 2)).items()}
    pat = '^#\s*(?P<title>.+?$)\n+(?:^>\s*(?P<summary>.+?$)$)?\n+(?P<info>.*)'
    d = re.search(pat, start.strip(), (re.MULTILINE|re.DOTALL)).groupdict()
    d['sections'] = sects
    return d

我们在 tests/test-parse.py 中提供了一个测试套件,并确认该实现通过了所有测试。

Python 源代码概述

llms_txt Python 模块提供了创建和使用 llms.txt 文件所需的源代码和助手。下面是其功能的简要概述:

  • 文件规范:该模块遵循 llms.txt 规范:一个 H1 标题、一个小标题摘要、可选内容部分和包含文件列表的 H2 分隔部分。
  • 解析助手:例如,parse_link(txt) 可从标记符链接中提取标题、URL 和可选描述。
  • XML 转换:create_ctx 和 mk_ctx 等函数可将解析后的数据转换为 XML 上下文文件,这对 Claude 等系统尤其有用。
  • 命令行界面:CLI 命令 llms_txt2ctx 使用这些助手处理 llms.txt 文件并输出 XML 上下文文件。该工具简化了将 llms.txt 整合到各种工作流程中的过程。
  • 简洁的实现:该模块甚至包括一个不到 20 行代码的解析器,利用 regex 和 chunked 等辅助函数进行高效处理。

更多详情,请参阅此链接 – https://llmstxt.org/core.html

比较LLMs.txt和MCP(模型上下文协议)

虽然 LLMs.txt 和新兴的 Model Context Protocol (MCP) 都旨在增强 LLM 功能,但它们应对的是人工智能生态系统中的不同挑战。下面是深入探讨两种方法的增强比较:

LLMs.txt

  • 目标:通过将网站文档提炼为结构化的 Markdown 格式,专注于为 LLM 提供简洁、精心策划的内容。
  • 实现:由网站所有者维护的静态文件,是技术文档、API 参考资料和综合指南的理想选择。
  • 优点:
    • 简化内容摄取。
    • 易于实施和更新。
    • 通过过滤掉不必要的元素来提高提示质量。

MCP(模型上下文协议)

什么是MCP?

MCP 是一种开放标准,可在数据和人工智能工具之间建立安全的双向连接。可以把它想象成人工智能应用的 USB-C 端口–一个让不同工具和数据源相互“对话”的通用连接器。

MCP为何重要?

随着人工智能助手成为我们日常工作流程中不可或缺的一部分(如 Replit、GitHub Copilot 或 Cursor IDE),确保它们能够访问所需的所有上下文至关重要。如今,集成新的数据源往往需要定制代码,既杂乱又耗时。MCP 通过以下方式简化了这一过程:

  • 提供预建集成:不断增加的即用连接器库。
  • 提供灵活性:实现不同人工智能提供商之间的无缝切换。
  • 增强安全性:确保您的数据在基础设施内的安全。

MCP(模型上下文协议)

Source – Link

MCP如何工作?

MCP 采用客户服务器架构:

  • MCP 主机:希望访问数据的程序(如 Claude Desktop 或流行的集成开发环境)。
  • MCP 客户端:与 MCP 服务器保持 1:1 连接的组件。
  • MCP 服务器:公开特定数据源或工具的轻量级适配器。
  • 连接生命周期:
    1. 初始化:交换协议版本和功能。
    2. 信息交换:支持请求-响应模式和通知。
    3. 终止:彻底关闭、断开连接或处理错误。

现实世界的影响和早期采用

想象一下,如果您的人工智能工具可以无缝访问本地文件、数据库或远程服务,而无需为每个连接编写自定义代码。MCP 承诺正是如此–简化人工智能工具与各种数据源的集成方式。早期采用者已经在各种环境中尝试使用 MCP,从而简化了工作流程,减少了开发开销。

共同动机和关键差异

共同目标:LLMs.txt 和 MCP 的目标都是增强 LLMs 的能力,但它们是以互补的方式实现这一目标的。LLMs.txt 通过提供经过整理的精简网站文档视图来改进内容摄取,而 MCP 则通过使 LLM 能够执行现实世界中的任务来扩展他们的功能。从本质上讲,LLMs.txt 帮助法律硕士更好地 “阅读”,而 MCP 则帮助他们有效地 “行动”。

解决方案的性质

  • LLMs.txt:
    • 静态、经过编辑的内容标准: LLMs.txt 设计为静态文件,严格遵守基于 Markdown 的结构。它包括一个 H1 标题、一个块状引文摘要和以 H2 分隔的部分,其中包含经过编辑的链接列表。
    • 技术优势:
      • 令牌效率:通过过滤掉非必要的细节(如导航菜单、JavaScript 和 CSS),LLMs.txt 将复杂的网页内容压缩成简洁的格式,适合 LLMs 的有限上下文窗口。
      • 简单:它的格式易于使用标准文本处理工具(如 regex 和 Markdown 解析器)生成和解析,因此可供广大开发人员使用。
    • 增强能力:
      • 提高提供给 LLM 的上下文的质量,从而实现更准确的推理和更好的响应生成。
      • 由于其结构是可预测和机器可读的,因此便于测试和迭代改进。
  • MCP(模型上下文协议):
    • 动态、行动启用协议:MCP 是一个强大的开放标准,可在 LLM 与外部数据源或服务之间创建安全的双向通信。
    • 技术优势:
      • 标准化 API 接口:MCP 就像一个通用连接器(类似于 USB-C 端口),允许 LLM 与各种数据源(本地文件、数据库、远程 API 等)无缝对接,无需为每次集成定制代码。
      • 实时交互:通过客户端-服务器架构,MCP 支持动态请求-响应周期和通知,使 LLM 能够获取实时数据并执行任务(如发送电子邮件、更新电子表格或触发工作流)。
      • 复杂性处理:MCP 必须应对身份验证、错误处理和异步通信等挑战,因此工程密集度更高,但在扩展 LLM 功能方面也更加灵活。
    • 增强能力:
      • 将 LLM 从被动的文本生成器转变为主动的任务执行助手。
      • 便于将 LLM 无缝集成到业务流程和开发工作流程中,通过自动化提高生产力。

易于实施

  • LLMs.txt:
    • 实施起来相对简单。它的创建和解析依赖于轻量级文本处理技术,只需最小的工程开销。
    • 可手动或通过简单的自动化工具进行维护。
  • MCP:
    • 需要强大的工程设计。实施 MCP 需要设计安全的应用程序接口、管理客户-服务器架构,并不断维护与不断发展的外部服务标准的兼容性。
    • 涉及开发预置连接器和处理复杂的实时数据交换。

共同作用:这些创新是增强 LLM 能力的互补战略。LLMs.txt 可确保 LLM 拥有高质量、浓缩的基本内容快照,从而大大提高理解能力和响应质量。与此同时,MCP 允许 LLM 在静态内容和动态操作之间架起桥梁,从而提升 LLM 的能力,最终将 LLM 从单纯的内容分析仪转变为可执行任务的交互式系统。

结论

六个月前发布的 LLMs.txt 已经在人工智能文档领域占据了重要的一席之地。LLMs.txt 为 LLMs 提供了一种经过精心策划的精简方法来摄取和理解复杂的网站文档,从而大大提高了人工智能响应的准确性和可靠性。它的简单性和令牌效率使其成为开发人员和内容创建者的宝贵工具。

与此同时,模型上下文协议(MCP)的出现标志着 LLM 功能的进一步发展。MCP 的动态标准化方法使 LLM 能够无缝访问外部数据源和服务并与之交互,将它们从被动的阅读器转变为主动的任务执行助手。LLMs.txt 和 MCP 共同体现了强大的协同效应:LLMs.txt 确保人工智能模型获得最佳上下文,而 MCP 则为它们提供了根据上下文采取行动的手段。

展望未来,人工智能驱动的文档和自动化的前景似乎越来越光明。随着最佳实践和工具的不断发展,开发人员可以期待集成度更高、更安全、更高效的系统,这些系统不仅能增强 LLM 的能力,还能重新定义我们与数字内容的交互方式。无论您是致力于创新的开发人员,还是旨在优化工作流程的企业主,抑或是渴望探索技术前沿的人工智能爱好者,现在都是深入研究这些标准并释放人工智能文档全部潜力的时候了。

评论留言