このプロジェクトは、非常に長い教科書品質の事前削除データを生成します。これが70mのトークンの例です。それは、Openaiまたはあなた自身のAPIに対して、並行して世代を並行して実行できます。トピックをゼロから生成したり、提供する種子のセットを使用したりできます。
ジェネレーターは検索を使用して品質を向上させます。デフォルトでは、Serplyを使用して検索を行いますが、Serpapiを使用したり、検索を無効にしたりすることもできます。
コアは拡張可能であるため、独自のアダプターを追加して新しいAPIと取得バックエンドに接続できます。
brew install postgresでインストールできます。 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-xxxxxxのようなOpenAIキーを追加しますSERPLY_KEY="..." )またはserpapiキー( SERPAPI_KEY="..." )を追加します。SEARCH_BACKEND=serplyまたはSEARCH_BACKEND=serpapiを追加して、適切なバックエンドを使用します。デフォルトでは、これはgpt-3.5を使用します。 env vars LLM_TYPE 、 LLM_INSTRUCT_TYPE gpt-4に設定することによりgpt-4を使用できます。 LLM_EXTENDED_TYPE gpt-4に設定することも逃げることができるかもしれませんが、8Kより長いコンテキストが必要になる場合があります。
OPENAI_KEY APIキーの値、またはダミー値に設定します。OPENAI_BASE_URL APIのURLに設定します(https://vllm-api.com/v1など)LLM_TYPE 、 LLM_INSTRUCT_TYPE 、およびLLM_EXTENDED_TYPE設定をモデル名に設定します( llamaなど)LLM_TYPES設定でモデル名と最大トークンを設定します。発電機は理想的には、最大16kのコンテキスト長が必要ですが、必要に応じて12kで逃げることができます。教科書Gen用の独自のモデルをFinetunした場合(このレポでキャッシュされたプロンプトに基づいて)、 FINETUNEDとINCLUDE_EXAMPLES設定を使用して、トークンの使用を削減できます。
SEARCH_BACKEND=noneを設定しますリポジトリには3つの主要なスクリプトがあります。前のスクリプトの出力で各スクリプトを実行できます。すべての出力は、デフォルトで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
これにより、TopicsのフラットJSONリストが付いたファイルが表示され、トピックごとに1つの教科書が生成されます。労働者のフラグは、平行世代の数を制御します。レート制限を達成した場合は下げます。
使用例:
python book_generator.py topics.json books.jsonl --workers 5
また、[ local.envを使用する代わりに)環境変数を使用して設定をオーバーライドすることもできます。この例では、Openaiの代わりにVLLM APIを使用します。
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を実行することで、すべてのオプションを確認できます。
コースはデフォルトでキャッシュされているため、同じ名前のコースを2回再生することはAPIに再びヒットしないことに注意してください。キャッシュは、各モデルと各トピックに固有です。 --revisionオプションを使用して、コースの改訂番号を指定して、キャッシュをスキップできます。
また、次のフィールドを持つJSONLファイルを作成することにより、既存のアウトラインから本を生成することもできます。
topic - 本のトピック/タイトルoutline - フラットJSONリストとしての本の概要。これは特定の形式である必要があります。以下の「Clean of Gontents」を参照してください。queries - 検索に使用する最大2つの検索クエリ。検索を使用したくない場合は、これを空のリストに設定してください。 これにより、既存の目次とタイトルを備えたJSONLファイルを使用し、本の生成のために正しい形式に処理します。
使用例:
python toc_cleaner.py toc.jsonl clean_toc.jsonl
toc.jsonlは、各行に次のフィールドが必要です。
title - 本のタイトルtoc目次を含む文字列。これは、フォーマットが不十分ですこれを拡張して、新しいLLMアダプター、検索方法、またはタスクを追加できます。 PRは大歓迎です。
app/llm/adaptorsにありますapp/services/adaptorsにあります。また、 services/generators/pdf.pyの設定を調整する必要がある場合がありますapp/llm/generatorsにありますデフォルトでは、コンソールノイズを避けるために多くの例外が隠されます。 DEBUG=trueを使用して、次のように表示します。
DEBUG=true python book_generator.py python_topics.json books.jsonl --max 5 --workers 5