流れ
これだけです。
- docker pull significantgravitas/auto-gpt
- docker-compose.yml, .envの作成
- docker-compose run
ご活用頂く場合は自己責任にて。少なくともChatGPTのAPI使用料と、他にAPIを使う場合はその費用がかかります。
https://github.com/Significant-Gravitas/Auto-GPT の内容を参考にしています。
まだなら:Dockerのインストール
Docker Desktop をインストールし、起動しておきます。
Dockerイメージのダウンロード
Docker Desktopが起動している状態で、ターミナルやコマンドプロンプトなどからこのコマンドを打ちます。
docker pull significantgravitas/auto-gpt
作業用ディレクトリの作成
デスクトップやその他のディレクトリに自由に作成します。今回はデスクトップにautogptというディレクトリを作った想定で進めます。
mkdir ~/Desktop/autogpt
docker-compose.ymlの作成
今作ったばかりの作業用ディレクトリにdocker-compose.ymlを作成。
version: "3.9" services: auto-gpt: image: significantgravitas/auto-gpt depends_on: - redis env_file: - .env environment: MEMORY_BACKEND: ${MEMORY_BACKEND:-redis} REDIS_HOST: ${REDIS_HOST:-redis} profiles: ["exclude-from-up"] volumes: - ./auto_gpt_workspace:/app/auto_gpt_workspace - ./data:/app/data ## allow auto-gpt to write logs to disk - ./logs:/app/logs ## uncomment following lines if you have / want to make use of these files #- ./azure.yaml:/app/azure.yaml #- ./ai_settings.yaml:/app/ai_settings.yaml redis: image: "redis/redis-stack-server:latest"
.envの作成
同じディレクトリに.envファイルを作成する。テンプレートはこちら。
https://github.com/Significant-Gravitas/Auto-GPT/blob/master/.env.template
.envには少なくとも下記のようにOpenAIのAPIキーを記述する必要があります。
OPENAI_API_KEY=sk-.......
実行
下記のコマンドでコンテナを実行します。
cd 作った作業用ディレクトリ docker-compose run --rm auto-gpt # gpt3だけを使う。ユーザーの確認無しでどんどん進める場合はこちら # docker-compose run --rm auto-gpt --gpt3only --continuous
この時点でDocker DesktopのContainersの画面に、作業用ディレクトリの名前の項目が1つできているはずです。
動かしてみる
ターミナルがこのような画面になるので、そのままEnterで続けます。
–manual と入れる
I want Auto-GPT to:
と尋ねられます。ここでAutoGPTの紹介でよく見る Goal1, Goal2…というものを入力したいときは –manual とここで入れます。
もちろんそうせずタスクのゴールを書いてもかまいません。その場合はその Goal1, Goal2…が自動で設定されるイメージです。
AI Nameの命名
今回は試しにJavaで書いたコードから要件を推察してもらうことにします。
FizzBuzzが書かれたFizzBuzz.javaを auto_gpt_workspace ディレクトリに置いておきます。.envで設定したとおり、docker runの時点で作業用ディレクトリには auto_gpt_workspace というディレクトリが生成+マウントされ、Auto-GPTはこのディレクトリにアクセスが可能です。
タスクに合わせて自分でAIを命名して「AI Name」に入力します。今回は「Amazing Java code analyzer」(すごいJavaコード分析者)とします(ださい)。
何をしてほしいか、最終的なゴールを伝える
必要なのはやってほしいことを簡潔に伝えることで、仮にこれが最終的なゴールでなくても動きます。
今回は「Read FizzBuzz.java, infer what requirements the code was written under, and itemize them.」(FizzBuzz.javaを読んで、どんな要件のもと書かれたコードなのかを推察し、箇条書きにする。) と入れEnter。
最終的なゴールに導く小タスクを列挙する
今回はこのようにしました。
- FizzBuzz.javaを読んで、このコードがどのような要件の下で書かれたかを推測し、それを箇条書きにする。
- それのPython版を作成する。
最大5件入れられます。今回のように5件未満の場合は空文字列のままEnterです。
予算上限を入れる
このタスクを実行するにあたってAPIにかけられる金額の上限を設定できます。目安の認識で入れると良いでしょう。今回は$1と設定します。
とはいえこの記事を執筆するのに数回実行し、かかったのは$0.04です。(2023年05月現在、GPT3.5のみの使用)
動き始める
自立型AIと呼ばれるAutoGPTですが、次に何をするか逐一提案してくれるのが特徴です。
提案内容が良ければそのまま y と打ってEnterで承認します。別のことをしてほしければ、 Input: にその旨自然言語の形で指示を書きEnterです。
このとき、例えば y -10 と入れるとこの先10回自動で承認したことになります。
n と打つとその場でAutoGPTごと終了します。(dockerのrun自体が終了する)
AutoGPTがタスクを進めるとき、すぐ y -100 などとはせずうまく動いているか目視で確認することをおすすめします。時折タスクが前に進まないことがあり、そのときは一度終了してプロンプトを考え指示を自分で与えたり停止したりなどの操作が必要です。
完了
最終的にPythonのコードが返ってきました。生成されたコードも問題なく実行できます。
THOUGHTS: Now that I have analyzed the FizzBuzz.java code, I can determine its requirements. I will create a Python implementation based on those requirements. (FizzBuzz.javaのコードを分析したことで、その要件を判断することができるようになりました。その要件に基づいてPythonの実装を作成することにします。)
REASONING: I have analyzed the FizzBuzz.java code and determined that it is a simple program that prints numbers from 1 to 100, replacing multiples of 3 with ‘Fizz’, multiples of 5 with ‘Buzz’, and multiples of both 3 and 5 with ‘FizzBuzz’. I can create a Python implementation based on these requirements.(FizzBuzz.javaのコードを分析した結果、1から100までの数字をprintし、3の倍数を「Fizz」、5の倍数を「Buzz」、3と5の両方の倍数を「FizzBuzz」に置き換える単純なプログラムであると判断しました。これらの要件に基づいて、Pythonの実装を作成できます。)
Dockerイメージとても楽でありがたい限りです。ご活用頂く場合は自己責任にて。