使用Python给自己网站生成llms.txt

本文提供了一个通过CLI和Python API来解析文件并从中创建llms.txt。输入文件应遵循以下格式:

markdown 复制代码
# FastHTML

> FastHTML is a python library which...

When writing FastHTML apps remember to:

- Thing to remember

## Docs

- [Surreal](https://host/README.md): Tiny jQuery alternative with Locality of Behavior
- [FastHTML quick start](https://host/quickstart.html.md): An overview of FastHTML features

## Examples

- [Todo app](https://host/adv_app.py)

## Optional

- [Starlette docs](https://host/starlette-sml.md): A subset of the Starlette docs

安装

复制代码
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模块

javascript 复制代码
from llms_txt import *
ini 复制代码
samp = Path('llms-sample.txt').read_text()

使用parse_llms_file使用llms.txt文件的部分创建数据结构 (还可以添加optional=True如果需要):

scss 复制代码
parsed = parse_llms_file(samp)
list(parsed)
css 复制代码
['title', 'summary', 'info', 'sections']
复制代码
parsed.title,parsed.summary
vbnet 复制代码
('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.')
scss 复制代码
list(parsed.sections)
css 复制代码
['Docs', 'Examples', 'Optional']
css 复制代码
parsed.sections.Optional[0]
rust 复制代码
{ 'desc': 'A subset of the Starlette documentation useful for FastHTML '
          'development.',
  'title': 'Starlette full documentation',
  'url': 'https://gist.githubusercontent.com/jph00/809e4a4808d4510be0e3dc9565e9cbd3/raw/9b717589ca44cedc8aaf00b2b8cacef922964c0f/starlette-sml.md'}

使用create_ctx创建一个包含XML部分的LLM上下文文件,适用于Claude等系统 (这是CLI在幕后调用的)。

ini 复制代码
ctx = create_ctx(samp)
scss 复制代码
print(ctx[:300])
vbnet 复制代码
<project title="FastHTML" summary='FastHTML is a python library which brings together Starlette, Uvicorn, HTMX, and fastcore&#39;s `FT` "FastTags" into a library for creating server-rendered hypermedia applications.'>
Remember:

- Use `serve()` for running uvicorn (`if __name__ == "__main__"` is not

测试和部署

显示解析有多简单llms.txt文件,这里是一个完整的解析器,在 <20行代码中,没有依赖关系:

python 复制代码
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并确认此实现通过了所有测试。

相关推荐
dyj0951 分钟前
Dify - (一)、本地部署Dify+聊天助手/Agent
人工智能·docker·容器
墨染天姬8 分钟前
【AI】Hermes的GEPA算法
人工智能·算法
小超同学你好10 分钟前
OpenClaw 深度解析系列 · 第8篇:Learning & Adaptation(学习与自适应)
人工智能·语言模型·chatgpt
紫微AI19 分钟前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
IT枫斗者19 分钟前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
码途漫谈28 分钟前
Easy-Vibe开发篇阅读笔记(四)——前端开发之结合 Agent Skills 美化界面
人工智能·笔记·ai·开源·ai编程
易连EDI—EasyLink34 分钟前
易连EDI–EasyLink实现OCR智能数据采集
网络·人工智能·安全·汽车·ocr·edi
冬奇Lab1 小时前
RAG 系列(二):用 LangChain 搭建你的第一个 RAG Pipeline
人工智能·langchain·llm
小码哥_常1 小时前
解锁AI编程密码:程序员常用的10个AI提示词
后端
学习论之费曼学习法1 小时前
多模态大模型实战:用 GPT-4o API 打造 AI 助手,能看、能听、能说!
人工智能