大規模な言語モデルは、一連の質問と回答で指示することができます。ただし、自分のデータでモデルをさらに微調整するには、データに関する多数の質問と回答が必要です。これらの質問と回答を作成することは、多くの手動で作業することができます。
このリポジトリを使用すると、非ファインチューニング言語モデル(ChatGPT)を使用して、既存のテキストデータから質問/回答ペアを自動的に抽出し、すべての手動作業を排除できます。
このコードを実行するには、このリポジトリをクローンしてから、次のPythonパッケージをインストールする必要があります。
tiktoken 、Openai Tokeniser、openai 、公式Openai APIクライアント、langchain 、モデルとユーティリティを組み合わせるために使用される接着コード。 このスクリプトは、Markdown( .md )ドキュメントのフォルダーを、それらを作成するために使用されたソースドキュメントへの質問、回答、パスのリストを含む.jsonファイルに変換するように設計されています。
コードを実行するには、 question_extractor.pyファイル(入力フォルダーと出力パスの両方)に関連するファイルパスを設定し、OpenAI APIキーが環境にあることを確認します。次に、Pythonでスクリプトを実行します。
python3 question_extractor.py
完了すると、すべての質問/回答は、出力パスの.jsonファイルとして記述されます。
すべてのファイルのコードループは、各ファイルについて、次のプロンプトを使用して質問のリストを抽出し、次にテキストの塊を抽出します。
You are an expert user extracting information to quiz people on documentation. You will be passed a page extracted from the documentation, write a numbered list of questions that can be answered based *solely* on the given text.
次に、質問にループし、次のプロンプトを渡すことで答えを生み出し、その後にテキストの塊と質問があります。
You are an expert user answering questions. You will be passed a page extracted from a documentation and a question. Generate a comprehensive and informative answer to the question based *solely* on the given text.
コードの実際のロジックのほとんどは、ファイルを同時に(速度で)処理し、モデルに渡されたテキストチャンクが十分に小さいことを保証することに専念しています。
テキストがモデルに送信できない場合、その最高のマークダウン見出しレベルに沿って分割されます(単一の段落に到達するまで、必要に応じてプロセスを再帰的に繰り返すことができます)。
パフォーマンス面では、このスクリプトは6分で完全なNERSCドキュメントを処理できます。 318のマークダウンファイルを29ドルで8005の質問に変えます。
モデルのレート制限の約93%で実行されます。 ↩