?このプロジェクトはまだ開発の初期段階にあり、私たちは積極的に取り組んでいます。ご質問やご提案がございましたら、問題または PR を送信してください。
EvalGPT は、GPT-4、CodeLlama、Claude 2 などの大規模な言語モデルの力を活用したコード インタープリター フレームワークです。この強力なツールを使用すると、ユーザーはタスクを作成でき、EvalGPT はコードの作成、実行、およびコードの配信を支援します。結果。
EvalGPT のアーキテクチャは、Google の Borg システムからインスピレーションを得ています。これには、EvalGPT として知られるマスター ノードが含まれており、プランニング、スケジューラー、メモリの 3 つのコンポーネントで構成されます。
EvalGPT はリクエストを受け取ると、ラージ言語モデル (LLM) を使用してタスクの計画を開始し、大きなタスクを管理しやすい小さなタスクに分割します。各サブタスクに対して、EvalGPT は EvalAgent として知られる新しいノードを生成します。
各 EvalAgent は、割り当てられた小さなタスクに基づいてコードを生成する責任があります。コードが生成されると、EvalAgent はランタイムを開始してコードを実行し、必要に応じて外部ツールも利用します。その後、結果は EvalAgent によって収集されます。
EvalAgent ノードは EvalGPT マスター ノードからメモリにアクセスできるため、効率的かつ効果的な通信が可能になります。 EvalAgent がプロセス中にエラーを検出した場合、EvalGPT マスター ノードにエラーを報告し、エラーを回避するためにタスクを再計画します。
最後に、EvalGPT マスター ノードは EvalAgent ノードからのすべての結果を照合し、リクエストに対する最終的な回答を生成します。
evalgpt
インストールする次のコマンドを使用して evalgpt をインストールできます。
go install github.com/index-labs/evalgpt@latest
次のコマンドを実行して、インストールを確認できます。
evalgpt -h
git clone https://github.com/index-labs/evalgpt.git
cd evalgpt
go mod tidy && go mod vendor
mkdir -p ./bin
go build -o ./bin/evalgpt ./ * .go
./bin/evalgpt -h
その後、bin ディレクトリで見つけることができます。
evalgpt コマンドラインをインストールした後、それを実行する前に、以下のオプションを設定する必要があります。
Openai API キーの構成
export OPENAI_API_KEY=sk_ ******
また、コマンド引数で openai API キーを設定することもできますが、お勧めできません。
evalgpt --openai-api-key sk_ ***** -q < query >
Python インタープリターの構成
デフォルトでは、コードインタープリターはシステムの Python インタープリターを使用します。ただし、Python の仮想環境ツールを使用してまったく新しい Python インタープリターを作成し、それに応じて構成することができます。
python3 -m venv /path/evalgpt/venv
# install third python libraries
/path/evalgpt/venv/bin/pip3 install -r requirements.txt
# config python interpreter
export PYTHON_INTERPRETER=/path/evalgpt/venv/bin/python3
または
evalgpt --python-interpreter /path/evalgpt/venv/bin/python3 -q < query >
注記:
複雑なタスクに取り組む前に、必要な Python サードパーティ ライブラリを必ずインストールしてください。これにより、コード インタプリタが対応するタスクを処理できるようになり、効率が向上し、スムーズな操作が保証されます。
ヘルプ
> evalgpt -h
NAME:
evalgpt help - A new cli application
USAGE:
evalgpt help [global options] command [command options] [arguments...]
DESCRIPTION:
description
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--openai-api-key value Openai Api Key, if you use open ai model gpt3 or gpt4, you must set this flag [ $OPENAI_API_KEY ]
--model value LLM name (default: " gpt-4-0613 " ) [ $MODEL ]
--python-interpreter value python interpreter path (default: " /usr/bin/python3 " ) [ $PYTHON_INTERPRETER ]
--verbose, -v print verbose log (default: false) [ $VERBOSE ]
--query value, -q value what you want to ask
--file value [ --file value ] the path to the file to be parsed and processed, eg. --file /tmp/a.txt --file /tmp/b.txt
--help, -h show help
注記:
コード インタープリターを実行する前に、必ず OpenAI API キーと Python インタープリターを構成してください。次の例では、OpenAI API キーと Python インタープリターの環境変数がすでに構成されています。
単純なクエリ
マシンのパブリック IP アドレスを取得します。
❯ evalgpt -q ' get the public IP of my computer '
Your public IP is: 104.28.240.133
文字列の sha256 ハッシュを計算します。
❯ evalgpt -q ' calculate the sha256 of the "hello,world" '
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
Web サイトのタイトルを取得します。
❯ evalgpt -q " get the title of a website: https://arxiv.org/abs/2302.04761 " -v
[2302.04761] Toolformer: Language Models Can Teach Themselves to Use Tools
パイプライン
パイプラインを使用してコンテキスト データを入力し、それに対してクエリを実行できます。
> cat a.csv
date,dau
2023-08-20,1000
2023-08-21,900
2023-08-22,1100
2023-08-23,2000
2023-08-24,1800
> cat a.csv | evalgpt -q ' calculate the average dau '
Average DAU: 1360.0
ファイルを操作する
pngファイルをwebpファイルに変換します。
> ls
a.png
> evalgpt -q ' convert this png file to webp ' --file ./a.png
created file: a.webp
> ls
a.png a.webp
CSVデータを元に折れ線グラフを描画します。
> cat a.csv
date,dau
2023-08-20,1000
2023-08-21,900
2023-08-22,1100
2023-08-23,2000
2023-08-24,1800
> evalgpt -q ' draw a line graph based on the data from the CSV ' --file ./a.csv
出力:
EvalGPT マスター ノードは、フレームワークのコントロール センターとして機能します。これには、プランニング、スケジューラ、メモリという 3 つの重要なコンポーネントが含まれています。
計画コンポーネントは、大規模な言語モデルを活用して、ユーザーの要求に基づいてタスクを計画します。複雑なタスクをより小さく管理しやすいサブタスクに分割し、それぞれが個別の EvalAgent ノードによって処理されます。
スケジューラ コンポーネントはタスクの分散を担当します。各サブタスクを EvalAgent ノードに割り当て、リソースの効率的な利用とタスクの並列実行を確保して最適なパフォーマンスを実現します。
メモリ コンポーネントは、すべての EvalAgent ノードの共有メモリ空間として機能します。実行されたタスクの結果を保存し、異なるノード間でデータ交換するためのプラットフォームを提供します。この共有メモリ モデルは、複雑な計算を容易にし、エラー発生時のタスクの再計画を可能にすることでエラー処理を支援します。
コードの実行中にエラーが発生した場合、マスター ノードはエラーを回避するためにタスクを再計画し、それによって堅牢で信頼性の高い動作を保証します。
最後に、EvalGPT マスター ノードはすべての EvalAgent ノードから結果を収集してコンパイルし、ユーザーのリクエストに対する最終的な回答を生成します。この集中制御と調整により、EvalGPT マスター ノードは EvalGPT フレームワークの重要な部分になります。
EvalAgent ノードは、EvalGPT フレームワークの主力ノードです。各サブタスクのマスター ノードによって生成され、コードの生成、実行、結果の収集を担当します。
EvalAgent ノードのコード生成プロセスは、割り当てられている特定のタスクによってガイドされます。大規模な言語モデルを使用して、タスクを実行するために必要なコードを生成し、タスクの要件と複雑さに確実に適合するようにします。
コードが生成されると、EvalAgent ノードはランタイム環境を開始してコードを実行します。このランタイムは柔軟性があり、必要に応じて外部ツールを組み込むことができ、コード実行のための堅牢なプラットフォームを提供します。
実行中、EvalAgent ノードは結果を収集し、EvalGPT マスター ノードから共有メモリにアクセスできます。これにより、効率的なデータ交換が可能になり、大幅なデータ操作や以前の計算結果へのアクセスを必要とする複雑な計算が容易になります。
コードの実行中にエラーが発生した場合、EvalAgent ノードはこれらを EvalGPT マスター ノードに報告します。その後、マスター ノードはエラーを回避するためにタスクを再計画し、堅牢で信頼性の高い動作を保証します。
本質的に、EvalAgent ノードは EvalGPT フレームワーク内の自律ユニットであり、コードの生成と実行、エラーの処理、および結果の効率的な伝達が可能です。
EvalGPT のランタイムは EvalAgent ノードによって管理されます。各 EvalAgent ノードは、特定のタスクのコードを生成し、コードを実行するランタイムを開始します。ランタイム環境は柔軟であり、必要に応じて外部ツールを組み込むことができ、適応性の高い実行コンテキストを提供します。
ランタイムにはエラー処理メカニズムも含まれています。コードの実行中に EvalAgent ノードでエラーが発生した場合、EvalGPT マスター ノードにエラーが報告されます。その後、マスター ノードはエラーを回避するためにタスクを再計画し、堅牢で信頼性の高いコード実行を保証します。
ランタイムは EvalGPT マスター ノードのメモリと対話できるため、効率的なデータ交換が可能になり、複雑な計算が容易になります。この共有メモリ モデルにより、重要なデータ操作や以前の計算結果へのアクセスを必要とするタスクの実行が可能になります。