Python解析 llms.txt 的教程:一键生成LLM上下文XML
关键词:Python教程、LLM上下文生成、llms.txt解析、AI上下文工程、Claude context、Python CLI工具、Prompt工程
前言
最近在研究LLM上下文工程(Context Engineering)时,发现一个非常实用的小工具:llms-txt。
它的作用非常明确:把 llms.txt 文件转换成适合大模型使用的 XML 上下文文档。
这类工具在做 AI Agent、RAG、Claude 项目、Prompt工程 时非常实用,可以把项目文档自动整理成模型可理解的结构化上下文。
本文将完整介绍:
- llms.txt 是什么
- 如何使用 CLI
- 如何使用 Python API
- 原理解析(含20行实现的解析器)
一、什么是 llms.txt
一句话理解:
llms.txt 是专门给大模型看的 README
它使用 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 - [FastHTML quick start](https://host/quickstart.html.md) ## Examples - [Todo app](https://host/adv_app.py) ## Optional - [Starlette docs](https://host/starlette-sml.md)核心结构:
| 区块 | 含义 |
|---|---|
| Title | 项目名称 |
| Summary | 项目简介 |
| Info | 额外说明 |
| Sections | Docs / Examples / Optional |
二、安装 llms-txt
pipinstallllms-txt安装完成后会得到 CLI 命令:
llms_txt2ctx三、CLI 使用教程
查看帮助
llms_txt2ctx-h转换 llms.txt 为 XML 上下文
llms_txt2ctx llms.txt>llms.md如果需要包含 Optional 区块:
llms_txt2ctx llms.txt--optionalTrue>llms.md生成的内容就是可直接喂给 Claude / GPT 的上下文文档。
四、Python API 使用
除了 CLI,它还提供 Python 模块,适合在项目中自动化生成上下文。
导入模块
fromllms_txtimport*frompathlibimportPath读取 llms.txt:
samp=Path('llms-sample.txt').read_text()1️⃣ 解析 llms.txt
parsed=parse_llms_file(samp)解析后得到结构:
list(parsed)输出:
['title','summary','info','sections']查看标题和摘要:
parsed.title,parsed.summary输出:
('FastHTML','FastHTML is a python library...')查看所有 section:
list(parsed.sections)输出:
['Docs','Examples','Optional']查看某条链接:
parsed.sections.Optional[0]返回结构:
{"desc":"A subset of the Starlette documentation useful...","title":"Starlette full documentation","url":"https://..."}2️⃣ 生成 LLM XML 上下文
最关键一步:
ctx=create_ctx(samp)print(ctx[:300])生成结果类似:
<projecttitle="FastHTML"summary="...">Remember: - Use serve() for running uvicorn ...这一步就是CLI 背后的核心逻辑。
五、核心实现原理(重点)
官方给了一个无依赖 20 行解析器,非常值得学习。
完整解析器
frompathlibimportPathimportre,itertoolsdefchunked(it,chunk_sz):it=iter(it)returniter(lambda:list(itertools.islice(it,chunk_sz)),[])defparse_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()forlinre.split(r'\n+',links.strip())ifl.strip()]start,*rest=re.split(fr'^##\s*(.*?$)',txt,flags=re.MULTILINE)sects={k:_p(v)fork,vindict(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']=sectsreturnd关键技术点
| 技术 | 用途 |
|---|---|
| 正则分块解析 | 拆分 Markdown 区块 |
| groupdict() | 直接生成结构化字典 |
| itertools.islice | 两两分组 section |
| 无第三方依赖 | 轻量可嵌入 |
这是一个非常典型的结构化文本解析器。
六、适用场景
这个工具非常适合:
AI Agent 项目
- 自动整理项目文档
- 提供给 Claude / GPT 作为上下文
RAG 系统
- 把知识库转为统一 XML
- 自动更新上下文
开源项目
- 提供 “AI Readme”
- 提升 AI 可读性
七、总结
llms-txt = LLM时代的 README 生成器
核心价值:
- 将 Markdown 文档 → 转换为 LLM可读XML
- 提供 CLI + Python API
- 可嵌入 AI Agent / RAG / 自动文档系统
- 实现极其轻量(甚至20行即可)
如果正在做 AI 项目,这个工具值得加入工具链。