项目介绍:Textbook Quality
Textbook Quality 项目旨在生成高质量的教科书级预训练数据,非常适合用于各种自然语言处理任务。用户可以通过该项目生成非常长的文本内容,从而加强AI模型的学习能力。这个项目可以在并行环境中运行,可使用OpenAI或用户自己的API,既可以从头生成主题,也可以使用用户提供的种子进行生成。项目独特地使用检索技术来提升文本的质量,默认使用Serply进行检索,但也支持使用SerpAPI,或者完全禁用检索功能。
项目核心特性
- 检索技术:利用资料检索技术提升文本内容的丰富性和准确性。
- 接口扩展性:核心设计具有很强的扩展性,用户可以为新的API和检索后端添加自己的适配器。
- 高质量生成:通过预训练模型生成如教科书般高质量的文本数据。
安装指南
环境要求
- Python 3.9+(推荐使用3.11版本)
- Postgres 数据库系统:在Mac平台中可以通过
brew install postgres
来安装。
设置步骤
- 创建数据库:
psql postgres -c "create database textbook;"
- 克隆项目代码:
git clone https://github.com/VikParuchuri/textbook_quality.git cd textbook_quality
- 安装项目依赖:
poetry install
- 迁移开发数据库:
invoke migrate-dev
配置说明
在项目根目录下创建一个 local.env
文件用于存储秘密密钥,或者将密钥设为环境变量。所有可用的配置选项都在 app/settings.py
文件中可见。
使用 OpenAI 和检索(最高质量)
- 设置 OpenAI 密钥:
OPENAI_KEY=sk-xxxxxx
- 设置 Serply 或 SerpAPI 密钥:如
SERPLY_KEY="..."
或SERPAPI_KEY="..."
- 选择检索后端:
SEARCH_BACKEND=serply
或SEARCH_BACKEND=serpapi
可使用 gpt-3.5
或 gpt-4
模型,调整 LLM_TYPE
和 LLM_INSTRUCT_TYPE
为 gpt-4
来使用更高级版本。
使用 vllm 或其他兼容 API 和检索
- 设置 API 及其 URL。
- 使用如
llama
等模型名称。 - 配置检索。项目支持的最大上下文长度为
16k
。
禁用检索
- 设为
SEARCH_BACKEND=none
即可。
使用说明
项目包含三个主要脚本,通常按以下顺序执行:
从头生成主题
输入一个学科、自定义保存文件名和迭代次数即可。
python topic_generator.py "computer science with python" python_cs_titles.json --iterations 50
从种子扩展主题
使用已有的种子文件扩展主题,并可选择限定学科领域。
python topic_augmentor.py python_titles.json python_topics.json --domain python
生成教科书
根据主题或大纲按照平行生成来生产教科书,示例如下:
python book_generator.py topics.json books.jsonl --workers 5
支持通过环境变量覆盖默认设置,如使用vllm API 来代替OpenAI。
清理目录
处理现有目录以格式化为书本生成格式。
python toc_cleaner.py toc.jsonl clean_toc.jsonl
项目扩展
该项目可以通过添加新的 LLM 适配器、检索方法和任务自由扩展,模块具体路径如下:
- LLM 适配器:
app/llm/adaptors
- 检索方法:
app/services/adaptors
- 任务模块:
app/llm/generators
希望用户能积极参与贡献与扩展(PRs是非常欢迎的)。
调试
默认情况下,部分异常会被隐藏以减少控制台信息。使用 DEBUG=true
开启调试模式来显示完整的异常信息:
DEBUG=true python book_generator.py python_topics.json books.jsonl --max 5 --workers 5
此项目为架构自然语言处理项目的学习与发展提供了极大的支持与便利,是研究人员及开发者在生成文本数据方面的强大工具。