六個月前,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 中。
- 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 在需要時參考詳細文件。
Source – Link
Claude
- 方法:由於 Claude 目前缺乏直接瀏覽功能,使用者可以貼上內容或上傳檔案,確保提供全面的上下文。
- 優點:這種方法使 Claude 的響應建立在可靠的最新文件基礎之上。
Source – Link
Cursor
- 方法:Cursor 的 @Docs 功能允許使用者新增 LLMs.txt 連結,無縫整合外部內容。
- 優點:增強 Cursor 的上下文意識,使其成為開發人員的強大工具。
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 透過以下方式簡化了這一過程:
- 提供預建整合:不斷增加的即用聯結器庫。
- 提供靈活性:實現不同人工智慧提供商之間的無縫切換。
- 增強安全性:確保您的資料在基礎設施內的安全。
Source – Link
MCP如何工作?
MCP 採用客戶伺服器架構:
- MCP 主機:希望訪問資料的程式(如 Claude Desktop 或流行的整合開發環境)。
- MCP 客戶端:與 MCP 伺服器保持 1:1 連線的元件。
- MCP 伺服器:公開特定資料來源或工具的輕量級介面卡。
- 連線生命週期:
- 初始化:交換協議版本和功能。
- 資訊交換:支援請求-響應模式和通知。
- 終止:徹底關閉、斷開連線或處理錯誤。
現實世界的影響和早期採用
想象一下,如果您的人工智慧工具可以無縫訪問本地檔案、資料庫或遠端服務,而無需為每個連線編寫自定義程式碼。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 的能力,還能重新定義我們與數字內容的互動方式。無論您是致力於創新的開發人員,還是旨在最佳化工作流程的企業主,抑或是渴望探索技術前沿的人工智慧愛好者,現在都是深入研究這些標準並釋放人工智慧文件全部潛力的時候了。
評論留言