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 參考資料、深入指南和綜合文件。

結構示例程式碼段:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 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
# 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
# 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。

安裝

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
pip install llms-txt
pip install llms-txt
pip install llms-txt

如何使用?

CLI

安裝後, llms_txt2ctx 可在終端中使用。

要獲取 CLI 的幫助,請:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
llms_txt2ctx -h
llms_txt2ctx -h
llms_txt2ctx -h

將 llms.txt 檔案轉換為 XML 上下文並儲存為 llms.md:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
llms_txt2ctx llms.txt > llms.md
llms_txt2ctx llms.txt > llms.md
llms_txt2ctx llms.txt > llms.md

透過 -optional True 新增輸入檔案的“可選”部分。

Python模組

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from llms_txt import *
samp = Path('llms-sample.txt').read_text()
from llms_txt import * samp = Path('llms-sample.txt').read_text()
from llms_txt import *
samp = Path('llms-sample.txt').read_text()

使用 parse_llms_file 建立一個包含 llms.txt 檔案各部分的資料結構(如果需要,也可以新增 optional=True):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
parsed = parse_llms_file(samp)
list(parsed)
['title', 'summary', 'info', 'sections']
parsed.title,parsed.summary
parsed = parse_llms_file(samp) list(parsed) ['title', 'summary', 'info', 'sections'] parsed.title,parsed.summary
parsed = parse_llms_file(samp)
list(parsed)
['title', 'summary', 'info', 'sections']
parsed.title,parsed.summary

實現與測試

為了說明解析 llms.txt 檔案有多簡單,下面是一個完整的解析器,只用了不到 20 行程式碼,沒有任何依賴關係:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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 的能力,還能重新定義我們與數字內容的互動方式。無論您是致力於創新的開發人員,還是旨在最佳化工作流程的企業主,抑或是渴望探索技術前沿的人工智慧愛好者,現在都是深入研究這些標準並釋放人工智慧文件全部潛力的時候了。

評論留言