يولد هذا المشروع بيانات طويلة جدًا للكتب المدرسية. إليك مثال رمزي 70 متر. يمكن أن تدير أجيال بالتوازي ، ضد Openai ، أو واجهة برمجة التطبيقات الخاصة بك. يمكن أن يولد الموضوعات من نقطة الصفر ، أو استخدام مجموعة من البذور التي تقدمها.
يستخدم المولد استرجاع لتحسين الجودة. بشكل افتراضي ، سوف يستخدم Serply لإجراء الاسترجاع ، ولكن يمكنك أيضًا استخدام Serpapi ، أو تعطيل الاسترجاع.
النواة قابلة للتوسيع ، بحيث يمكنك إضافة محولاتك الخاصة للاتصال ببرو واجهات برمجة التطبيقات الجديدة والتراجع.
brew install postgres على جهاز Mac. psql postgres -c "create database textbook;"git clone https://github.com/VikParuchuri/textbook_quality.gitcd textbook_qualitypoetry installinvoke migrate-dev أولاً ، قم بإنشاء ملف local.env في الدليل الجذري لإعادة الريبو لتخزين مفاتيحك السرية. بدلاً من ذلك ، يمكنك تعيين أي مفتاح أدناه باعتباره Env var.
يمكنك رؤية جميع قيم التكوين المتاحة في app/settings.py .
OPENAI_KEY=sk-xxxxxxSERPLY_KEY="..." ) أو مفتاح serpapi ( SERPAPI_KEY="..." ).SEARCH_BACKEND=serply أو SEARCH_BACKEND=serpapi لاستخدام الواجهة الخلفية المناسبة. بشكل افتراضي ، سيستخدم هذا gpt-3.5 . يمكنك استخدام gpt-4 عن طريق تعيين env vars LLM_TYPE ، LLM_INSTRUCT_TYPE إلى gpt-4 . قد تكون قادرًا على الابتعاد عن إعداد LLM_EXTENDED_TYPE إلى gpt-4 أيضًا ، ولكن قد تحتاج إلى سياق أطول من 8K.
OPENAI_KEY على قيمة مفتاح API الخاص بك ، أو قيمة وهمية.OPENAI_BASE_URL إلى عنوان URL الخاص بـ API (مثل https://vllm-api.com/v1)LLM_TYPE ، LLM_INSTRUCT_TYPE ، و LLM_EXTENDED_TYPE إلى اسم النموذج الخاص بك (مثل llama )LLM_TYPES . يحتاج المولد بشكل مثالي إلى طول سياق يصل إلى 16k ، ولكن يمكنك الابتعاد عن 12k إذا كنت بحاجة إلى ذلك. إذا كنت قد قمت بتكوين نموذجك الخاص للكتاب المدرسي Gen (استنادًا إلى المطالبات المخبأة في هذا الريبو) ، فيمكنك استخدام إعدادات INCLUDE_EXAMPLES FINETUNED استخدام الرمز المميز.
SEARCH_BACKEND=none هناك ثلاثة نصوص رئيسية في الريبو. يمكنك تشغيل كل برنامج نصي على إخراج الناتج السابق. ستظهر جميع المخرجات افتراضيًا في app/data ، وهو DATA_DIR المحدد في الإعدادات.
يمكنك إدخال موضوع ، ملف تريد حفظ الموضوعات إليه ، وعدد التكرارات. سيتم تكريس الموضوعات.
مثال الاستخدام:
python topic_generator.py "computer science with python" python_cs_titles.json --iterations 50
خذ ملفًا مع البذور الموجودة (في قائمة JSON المسطحة) ، وقم بزيادةها. يمكنك تمرير ملف الإخراج من مولد الموضوع كملف البذور ، أو استخدام البذور الخاصة بك. المجال هو علامة اختيارية لتقييد الموضوعات داخل المجال.
سيؤدي هذا أيضًا إلى تعديل الموضوعات بشكل دلالي.
مثال الاستخدام:
python topic_augmentor.py python_titles.json python_topics.json --domain python
سيأخذ هذا ملفًا مع قائمة مسطحة من المواضيع ، وإنشاء كتاب مدرسي واحد لكل موضوع. العمال العمال يتحكم في عدد الأجيال المتوازية. خفضه إذا ضربت حدود المعدل.
مثال الاستخدام:
python book_generator.py topics.json books.jsonl --workers 5
يمكنك أيضًا تجاوز الإعدادات مع متغيرات البيئة (بدلاً من استخدام local.env ). سيستخدم هذا المثال واجهة برمجة تطبيقات VLLM بدلاً من 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
يمكنك رؤية جميع الخيارات عن طريق تشغيل python book_generator.py --help .
لاحظ أن الدورات التدريبية مخزنة مؤقتًا افتراضيًا ، لذا فإن تجديد دورة مع نفس الاسم مرتين لن تضغط على واجهة برمجة التطبيقات مرة أخرى. ذاكرة التخزين المؤقت خاصة بكل نموذج وكل موضوع. يمكنك تخطي ذاكرة التخزين المؤقت باستخدام خيار --revision لتحديد رقم المراجعة للدورات التدريبية.
يمكنك أيضًا إنشاء كتاب من مخطط موجود عن طريق إنشاء ملف JSONL مع الحقول التالية:
topic - موضوع/عنوان الكتابoutline - الخطوط العريضة للكتاب ، كقائمة JSON المسطحة. يجب أن يكون هذا بتنسيق محدد ، انظر "جدول المحتويات النظيفة" أدناه.queries - ما يصل إلى 2 استعلامات البحث لاستخدامها لاسترجاع. إذا كنت لا ترغب في استخدام الاسترجاع ، فقم بتعيين هذا على قائمة فارغة. سيستغرق هذا ملف JSONL مع جدول محتويات وعنوان موجود ، ومعالجته بالتنسيق الصحيح لتوليد الكتب.
مثال الاستخدام:
python toc_cleaner.py toc.jsonl clean_toc.jsonl
يجب أن يكون لـ toc.jsonl الحقول التالية في كل سطر:
title - عنوان الكتابtoc - سلسلة تحتوي على جدول المحتويات. هذا يمكن أن يكون تنسيقا سيئايمكنك تمديد هذا لإضافة محولات LLM الجديدة أو طرق الاسترجاع أو المهام. PRS مرحب بهم للغاية.
app/llm/adaptorsapp/services/adaptors . قد تحتاج أيضًا إلى ضبط الإعدادات في services/generators/pdf.pyapp/llm/generators بشكل افتراضي ، سيتم إخفاء الكثير من الاستثناءات لتجنب ضوضاء وحدة التحكم. استخدم DEBUG=true لعرضها ، مثل هذا:
DEBUG=true python book_generator.py python_topics.json books.jsonl --max 5 --workers 5