项目介绍:1FileLLM
1FileLLM 是一款命令行工具,专为简化大语言模型(LLM)信息密集型提示的创建而设计。它通过聚合和预处理来源不同的信息,将其编译为单个文本文件,并自动复制到剪贴板以便快速使用。以下是其主要功能和使用方法。
功能特点
- 自动检测来源类型:根据提供的路径、URL 或标识符自动识别文件来源类型。
- 多种来源支持:支持本地文件和目录、GitHub 仓库、GitHub 拉取请求和问题、ArXiv 学术论文、YouTube 字幕、网页文档,以及通过 DOI 或 PMID 的 Sci-Hub 托管论文。
- 多文件格式处理:支持 Jupyter Notebook(.ipynb)、PDF 等多种格式。
- 网页抓取功能:可提取链接页面内容,深度可指定。
- 与 Sci-Hub 集成:支持使用 DOI 或 PMID 自动下载研究论文。
- 文本预处理:提供压缩和未压缩输出、停用词移除及小写转换。
- 自动复制到剪贴板:未压缩文本自动复制到剪贴板,方便粘贴到 LLM 中。
- 词元计数报告:报告压缩和未压缩输出的词元计数。
- XML 输出封装:提升 LLM 性能的输出格式。
数据流示意图
1FileLLM 的操作流程如下:
- 用户输入来源 URL 或文件路径。
- 工具通过命令行接收用户输入并检测来源类型。
- 调用相应的处理模块进行数据预处理。
- 生成输出文件并复制文本到剪贴板,同时报告词元计数。
安装指南
前置条件
在安装前,需要确保依赖项齐全:
pip install -U -r requirements.txt
可选:为了环境隔离,创建虚拟环境:
python -m venv .venv
source .venv/bin/activate
pip install -U -r requirements.txt
GitHub 个人访问令牌
为了访问私有 GitHub 仓库,生成个人访问令牌。按照以下流程:
- 登录 GitHub 账户,进入设置。
- 点击开发者设置 > 个人访问令牌。
- 生成新令牌并设置名称。
- 选择必要的权限(至少选中
repo
)。 - 生成令牌并复制其值。
在 onefilellm.py
中,以实际令牌值替换 GITHUB_TOKEN
或设为环境变量。
使用方法
运行脚本:
python onefilellm.py
或直接在命令行输入 URL 或路径以减少用户交互:
python onefilellm.py https://github.com/jimmc414/1filellm
预期输入及输出
工具支持以下输入选项:
- 本地文件路径
- 本地目录路径
- GitHub 仓库 URL
- GitHub 拉取请求 URL
- GitHub 问题 URL
- ArXiv 论文 URL
- YouTube 视频 URL
- 网页 URL
- Sci-Hub 论文 DOI
- Sci-Hub 论文 PMID
所有输出均封装在适用于 LLM 提示的 XML 中,并自动复制到剪贴板。
配置选项
- 修改允许的仓库文件类型:更新代码中的
allowed_extensions
列表。 - 改变网页抓取深度:调整代码中的
max_depth
变量。
XML 输出格式
所有输出现在均封装在 XML 标签中,以提升 LLM 处理提示时的性能。输出结构如下:
<source type="[source_type]" [additional_attributes]>
<[content_type]>
[提取内容]
</[content_type]>
</source>
最近更新
- 2024-07-29:更新输出格式为 XML 标签封装。
- 2024-05-17:增加路径或 URL 作为命令行参数。
- 2024-05-11:更新
requirements.txt
,增加 Rich 库。
注意事项
- 修改
allowed_extensions
行以添加新的处理文件类型。 - 修改
max_depth
行以更改起始 URL 的抓取深度。 - 输出文件的词元计数在控制台显示。