Proyek ini menghasilkan data pretraining kualitas buku teks yang sangat panjang. Berikut contoh token 70m. Ini dapat menjalankan generasi secara paralel, melawan Openai, atau API Anda sendiri. Ini dapat menghasilkan topik dari awal, atau menggunakan satu set benih yang Anda berikan.
Generator menggunakan pengambilan untuk meningkatkan kualitas. Secara default, itu akan menggunakan Serapan untuk melakukan pengambilan, tetapi Anda juga dapat menggunakan Serpapi, atau menonaktifkan pengambilan.
Inti dapat diperluas, sehingga Anda dapat menambahkan adaptor Anda sendiri untuk terhubung ke API baru dan backends pengambilan.
brew install postgres di mac. psql postgres -c "create database textbook;"git clone https://github.com/VikParuchuri/textbook_quality.gitcd textbook_qualitypoetry installinvoke migrate-dev Pertama, buat file local.env di direktori root repo untuk menyimpan kunci rahasia Anda. Atau, Anda dapat mengatur kunci apa pun di bawah ini sebagai env var.
Anda dapat melihat semua nilai konfigurasi yang tersedia di app/settings.py .
OPENAI_KEY=sk-xxxxxxSERPLY_KEY="..." ) atau kunci Serpapi ( SERPAPI_KEY="..." ).SEARCH_BACKEND=serply atau SEARCH_BACKEND=serpapi untuk menggunakan backend yang sesuai. Secara default, ini akan menggunakan gpt-3.5 . Anda dapat menggunakan gpt-4 dengan mengatur Env vars LLM_TYPE , LLM_INSTRUCT_TYPE ke gpt-4 . Anda mungkin bisa lolos dengan pengaturan LLM_EXTENDED_TYPE ke gpt-4 juga, tetapi Anda mungkin membutuhkan konteks 8K lebih dari 8k.
OPENAI_KEY ke nilai kunci API Anda, atau nilai dummy.OPENAI_BASE_URL ke URL API Anda (seperti https://vllm-api.com/v1)LLM_TYPE , LLM_INSTRUCT_TYPE , dan LLM_EXTENDED_TYPE ke nama model Anda (seperti llama )LLM_TYPES . Generator idealnya membutuhkan panjang konteks hingga 16k , tetapi Anda bisa lolos dengan 12k jika perlu. Jika Anda telah finetuned model Anda sendiri untuk gen buku teks (berdasarkan prompt di -cache dalam repo ini), Anda dapat menggunakan pengaturan FINETUNED dan INCLUDE_EXAMPLES untuk mengurangi penggunaan token.
SEARCH_BACKEND=none Ada tiga skrip utama dalam repo. Anda dapat menjalankan setiap skrip pada output yang sebelumnya. Semua output akan muncul secara default dalam app/data , yang merupakan DATA_DIR yang ditentukan dalam pengaturan.
Anda memasukkan subjek, file yang ingin Anda simpan topik, dan jumlah iterasi. Topiknya akan diuplikasi.
Contoh Penggunaan:
python topic_generator.py "computer science with python" python_cs_titles.json --iterations 50
Ambil file dengan biji yang ada (dalam daftar JSON datar), dan ungkapkan. Anda dapat meneruskan file output dari generator topik sebagai file benih, atau menggunakan benih Anda sendiri. Domain adalah bendera opsional untuk membatasi topik dalam domain.
Ini juga akan mendedikasikan topik secara semantik.
Contoh Penggunaan:
python topic_augmentor.py python_titles.json python_topics.json --domain python
Ini akan mengambil file dengan daftar topik JSON datar, dan menghasilkan satu buku teks per topik. Bendera pekerja mengontrol jumlah generasi paralel. Turunkan jika Anda mencapai batas tingkat.
Contoh Penggunaan:
python book_generator.py topics.json books.jsonl --workers 5
Anda juga dapat mengganti pengaturan dengan variabel lingkungan (alih -alih menggunakan local.env ). Contoh ini akan menggunakan API VLLM alih -alih Openai:
LLM_TYPE=llama LLM_INSTRUCT_TYPE=llama LLM_EXTENDED_TYPE=llama OPENAI_KEY="llama" OPENAI_BASE_URL="https://vllm-api.com/v1" python book_generator.py topics.json books.jsonl --workers 10
Anda dapat melihat semua opsi dengan menjalankan python book_generator.py --help .
Perhatikan bahwa kursus di -cache secara default, jadi meregenerasi kursus dengan nama yang sama dua kali tidak akan mencapai API lagi. Cache khusus untuk setiap model dan setiap topik. Anda dapat melewatkan cache dengan menggunakan opsi --revision untuk menentukan nomor revisi untuk kursus.
Anda juga dapat menghasilkan buku dari garis besar yang ada dengan membuat file JSONL dengan bidang -bidang berikut:
topic - Topik/Judul Bukuoutline - Garis besar buku, sebagai daftar JSON datar. Ini harus dalam format tertentu, lihat "Daftar Isi Bersih" di bawah ini.queries - hingga 2 kueri pencarian untuk digunakan untuk pengambilan. Jika Anda tidak ingin menggunakan pengambilan, atur ini ke daftar kosong. Ini akan mengambil file JSONL dengan daftar konten dan judul yang ada, dan memprosesnya ke dalam format yang benar untuk pembuatan buku.
Contoh Penggunaan:
python toc_cleaner.py toc.jsonl clean_toc.jsonl
toc.jsonl harus memiliki bidang berikut di setiap baris:
title - Judul Bukutoc - String yang berisi Daftar Isi. Ini bisa diformat burukAnda dapat memperpanjang ini untuk menambahkan adaptor LLM baru, metode pengambilan, atau tugas. PR sangat disambut.
app/llm/adaptorsapp/services/adaptors . Anda mungkin juga perlu menyesuaikan pengaturan dalam services/generators/pdf.pyapp/llm/generators Secara default, banyak pengecualian akan disembunyikan untuk menghindari kebisingan konsol. Gunakan DEBUG=true untuk menampilkannya, seperti ini:
DEBUG=true python book_generator.py python_topics.json books.jsonl --max 5 --workers 5