Примечание: Этот сайт является любительским переводом документации по файлу llms.txt. Оригинальная документация доступна на llmstxt.org.

Файл /llms.txt

Предложение по стандартизации использования файла /llms.txt для предоставления информации, помогающей языковым моделям использовать веб-сайт во время инференса.

Автор: Jeremy Howard
Опубликовано: 3 сентября 2024

Предыстория

Языковые модели все чаще полагаются на информацию с веб-сайтов, но сталкиваются с критическим ограничением: контекстные окна слишком малы для обработки большинства веб-сайтов целиком. Преобразование сложных HTML-страниц с навигацией, рекламой и JavaScript в удобный для языковых моделей обычный текст является сложной и неточной задачей.

Хотя веб-сайты обслуживают как человеческих читателей, так и языковые модели, последние получают пользу от более сжатой, экспертной информации, собранной в одном доступном месте. Это особенно важно для случаев использования, таких как среды разработки, где языковым моделям нужен быстрый доступ к документации по программированию и API.

Предложение

логотип llms.txt

Мы предлагаем добавлять на веб-сайты Markdown-файл /llms.txt для предоставления контента, удобного для языковых моделей. Этот файл предлагает краткую справочную информацию, руководства и ссылки на подробные Markdown-файлы.

Markdown llms.txt читается как людьми, так и языковыми моделями, но также имеет точный формат, позволяющий использовать фиксированные методы обработки (т.е. классические методы программирования, такие как парсеры и регулярные выражения).

Кроме того, мы предлагаем, чтобы страницы на веб-сайтах, содержащие информацию, которая может быть полезна для чтения языковыми моделями, предоставляли чистую Markdown-версию этих страниц по тому же URL, что и исходная страница, но с добавлением .md. (URL без имен файлов должны добавлять index.html.md вместо этого.)

Проект FastHTML следует этим двум предложениям для своей документации. Например, вот llms.txt документации FastHTML. И вот пример обычной HTML-страницы документации вместе с точно таким же URL, но с расширением .md.

Это предложение не включает каких-либо конкретных рекомендаций по обработке файла llms.txt, поскольку это будет зависеть от приложения. Например, проект FastHTML решил автоматически расширять llms.txt до двух Markdown-файлов с содержимым связанных URL, используя структуру на основе XML, подходящую для использования в языковых моделях, таких как Claude. Два файла: llms-ctx.txt, который не включает опциональные URL, и llms-ctx-full.txt, который включает их. Они создаются с помощью приложения командной строки llms_txt2ctx, и документация FastHTML включает информацию для пользователей о том, как их использовать.

Универсальность файлов llms.txt означает, что они могут служить многим целям - от помощи разработчикам в ориентировании в документации по программному обеспечению до предоставления бизнесу способа описания своей структуры или даже разбора сложного законодательства для заинтересованных сторон. Они так же полезны для личных веб-сайтов, где могут помочь ответить на вопросы о чьем-то резюме, для интернет-магазинов, чтобы объяснить продукты и политики, или для школ и университетов, чтобы предоставить быстрый доступ к информации о курсах и ресурсах.

Обратите внимание, что все проекты nbdev теперь по умолчанию создают .md версии всех страниц. Вся документация по программным проектам Answer.AI и fast.ai, использующим nbdev, была перегенерирована с этой функцией. Для примера, смотрите Markdown-версию модуля docments fastcore.

Формат

На данный момент наиболее широко и легко понимаемым форматом для языковых моделей является Markdown. Простое указание, где можно найти ключевые Markdown-файлы, является отличным первым шагом. Предоставление некоторой базовой структуры помогает языковой модели найти, откуда может поступать необходимая ей информация.

Файл llms.txt необычен тем, что использует Markdown для структурирования информации, а не классический структурированный формат, такой как XML. Причина в том, что мы ожидаем, что многие из этих файлов будут читаться языковыми моделями и агентами. Тем не менее, информация в llms.txt следует определенному формату и может быть прочитана с помощью стандартных инструментов на основе программирования.

Спецификация llms.txt предназначена для файлов, расположенных в корневом пути /llms.txt веб-сайта (или, опционально, в подпути). Файл, следующий спецификации, содержит следующие разделы в Markdown, в определенном порядке:

  • H1 с названием проекта или сайта. Это единственный обязательный раздел
  • Цитата (blockquote) с кратким описанием проекта, содержащая ключевую информацию, необходимую для понимания остальной части файла
  • Ноль или более разделов Markdown (например, абзацы, списки и т.д.) любого типа, кроме заголовков, содержащих более подробную информацию о проекте и о том, как интерпретировать предоставленные файлы
  • Ноль или более разделов Markdown, разделенных заголовками H2, содержащих "списки файлов" URL, где доступны дополнительные детали
    • Каждый "список файлов" представляет собой список Markdown, содержащий обязательную гиперссылку Markdown [название](url), затем опционально : и примечания о файле.

Вот пример:

# Заголовок

> Опциональное описание здесь

Опциональные детали здесь

## Название раздела

- [Название ссылки](https://url_ссылки): Опциональные детали ссылки

## Optional

- [Название ссылки](https://url_ссылки)

Обратите внимание, что раздел "Optional" имеет особое значение - если он включен, предоставленные там URL можно пропустить, если нужен более короткий контекст. Используйте его для второстепенной информации, которую часто можно пропустить.

Существующие стандарты

llms.txt разработан для сосуществования с текущими веб-стандартами. В то время как карты сайта перечисляют все страницы для поисковых систем, 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 на внешние сайты, даже though они могут быть полезны для понимания информации
  • Будет generally охватывать документы, которые в совокупности будут слишком велики, чтобы поместиться в контекстное окно языковой модели, и будет включать много информации, которая не необходима для понимания сайта.

Пример

Вот пример llms.txt, в данном случае сокращенная версия файла, используемого для проекта FastHTML (см. также полную версию):

# FastHTML

> FastHTML - это библиотека Python, которая объединяет Starlette, Uvicorn, HTMX и "FastTags" `FT` из fastcore в библиотеку для создания серверно-рендеренных гипермедийных приложений.

Важные примечания:

- Хотя части его API вдохновлены FastAPI, он *не* совместим с синтаксисом FastAPI и не предназначен для создания API-сервисов
- FastHTML совместим с веб-компонентами на основе JS и любой vanilla JS библиотекой, но не с React, Vue или Svelte.

## Документация

- [Быстрый старт FastHTML](https://fastht.ml/docs/tutorials/quickstart_for_web_devs.html.md): Краткий обзор многих функций FastHTML
- [Справочник HTMX](https://github.com/bigskysoftware/htmx/blob/master/www/content/reference.md): Краткое описание всех атрибутов HTMX, CSS классов, заголовков, событий, расширений, методов js lib и параметров конфигурации

## Примеры

- [Приложение списка дел](https://github.com/AnswerDotAI/fasthtml/blob/main/examples/adv_app.py): Подробное пошаговое руководство по полному CRUD-приложению на FastHTML, показывающее идиоматическое использование шаблонов FastHTML и HTMX.

## Optional

- [Полная документация Starlette](https://gist.githubusercontent.com/jph00/809e4a4808d4510be0e3dc9565e9cbd3/raw/9b717589ca44cedc8aaf00b2b8cacef922964c0f/starlette-sml.md): Подмножество документации Starlette, полезное для разработки FastHTML.

Чтобы создать эффективные файлы llms.txt, учитывайте эти рекомендации:

  • Используйте сжатый, понятный язык.
  • При ссылке на ресурсы включайте краткие, информативные описания.
  • Избегайте неоднозначных терминов или необъяснимого жаргона.
  • Запустите инструмент, который расширяет ваш файл llms.txt в файл контекста языковой модели, и протестируйте несколько языковых моделей, чтобы увидеть, могут ли они ответить на вопросы о вашем контенте.

Каталоги

Вот несколько каталогов, которые перечисляют доступные файлы llms.txt в Интернете:

Интеграции

Доступны различные инструменты и плагины, чтобы помочь интегрировать спецификацию llms.txt в ваш рабочий процесс:

  • llms_txt2ctx - CLI и модуль Python для разбора файлов llms.txt и генерации контекста для языковых моделей
  • Реализация на JavaScript - Пример реализации на JavaScript
  • vitepress-plugin-llms - Плагин VitePress, который автоматически генерирует удобную для языковых моделей документацию для веб-сайта в соответствии со спецификацией llms.txt
  • docusaurus-plugin-llms - Плагин Docusaurus для генерации удобной для языковых моделей документации в соответствии со стандартом llmtxt.org
  • Drupal LLM Support - Рецепт Drupal, предоставляющий полную поддержку предложения llms.txt на любом сайте Drupal 10.3+
  • llms-txt-php - Библиотека для записи и чтения Markdown-файлов llms.txt

Следующие шаги

Спецификация llms.txt открыта для ввода сообщества. Репозиторий GitHub размещает этот неформальный обзор, позволяя контролировать версии и публичное обсуждение. Канал сообщества в Discord доступен для обмена опытом реализации и обсуждения лучших практик.

Дополнительная информация о файле llms.txt

Почему важен файл llms.txt?

Файл llms.txt решает несколько ключевых проблем взаимодействия языковых моделей с веб-контентом:

  • Проблема контекста: Современные языковые модели имеют ограниченные размеры контекстных окон, что делает невозможной обработку больших веб-сайтов целиком.
  • Проблема шума: Веб-страницы содержат много "шумного" контента (навигация, реклама, футеры), который мешает языковым моделям извлекать полезную информацию.
  • Проблема структуры: HTML не всегда оптимален для понимания языковыми моделями, тогда как Markdown предоставляет более чистую и структурированную информацию.

Создание llms.txt файла для вашего сайта может значительно улучшить качество ответов языковых моделей, связанных с вашим контентом, и сделать вашу информацию более доступной для AI-ассистентов и чат-ботов.