Auto-GTPと18戦4勝14敗してわかったこと（Tipsなど）

※4/26 .envでのファイルダウンロード・ローカルでのコマンド実行について修正。
※4/27 ai_settings.yamlの日本語対応について修正


# Tips（≒わかったこと）
需要がありそうなので、先頭に記載。

## OpenAI APIのサイズ・トークン制限が最大の壁
- ほぼすべて（？）のアクション実行結果をAPIに投げようとするため、この制限で引っ掛かり、エラーになることが多い。
- Goalを調整したり、引っ掛かりそうな内容を事前に整理してから渡すなどが必要そう。

## ai_settings.yamlは便利
- 前回プロンプトから入力したAIのName・role・goalが格納される。
- ファイルを編集後に実行することで、プロンプトでの投入が不要になる。
- 複数ファイルを保存しておいて、`--ai-settings`オプションでyamlを指定することも可能

## ファイルのダウンロードや、Gitコマンドの実行も可能なため注意。
- Web上からのファイルダウンロードや、Git Cloneでリポジトリをコピーしたりも出来ます。
- ~~ファイルダウンロードはオプションでデフォルト無効化。~~
- ファイルのダウンロードではなく、ローカルコマンドの実行がデフォルト無効でした。
    - にもかかわらず、Gitコマンドが実行された記憶があります。
    - 途中でローカルリポジトリの更新をしたことが原因の可能性があります。
- `--continuous` オプションで実行しなければ、意識する必要はない。

## ファイルの読み取り
- 参考資料の提示や、Goalが5つでは足りない場合等に、ファイルを指定して読み込ませることが可能。
- ファイルが巨大だと、ファイルを読み込みその内容をAPIに投げる→トークン制限でエラーになりがち。
- 派生系でURLなどを参考資料として提示可能だが、「このURLを参考に、類似のUIを作成して」等の指示を出すと、`CRITICISM:`で「パクリは良くないので自力で作ります」と言われる場合もあり。

## ファイルの書き込み
- 結果などをファイルに書き込みすることが可能。
- `\Auto-GPT\auto_gpt_workspace` に出力。
- ファイル名は指定せずとも認識可能な名称を考えて保存してくれる。
  - ファイル数が増えて散乱しがちなので、指示したほうがよい。

## インストールフォルダに注意
- Windows 環境で何も考えずにPowerShellを管理者権限で実行から、Git Cloneをすると`C:\Windows\system32`配下にローカルリポジトリ作成され、ファイル作成が失敗しがち。

## Goalに無理難題は設定しない
- ChatGPTであれば諦める・わかりませんとなる内容も、Web検索など駆使して延々と解決を試みてしまいがち。
  - 結果としてAPIの料金がかさむ。

## 中間レポートの作成指示は有用
- タスクX回実行するごとに、中間レポートを作成するような指示は有効。
- 最終的な結果を作成するように指示した場合、途中でエラー終了したり、`--continuous-limit`オプションで終了したりと何も残らない場合があるため。

## ロールも動作に影響する
- レポートなどの出力結果・表現が変わる。
  - エントリーレベルを指定すると平たい文章になる。
  - プロフェッショナルを指定すると、Markdown書式で報告書っぽい文章になる
- あまり関係ないロールを設定すると、想定外の動作をする
  - ロールをWebマーケティングコンサルタントにした状態で、スクリプト作成＋スクリプトの仕様書作成という目標設定にしたら、仕様書作成時にロールにしたがってWebマーケティングに関連する情報を調べだした…

## 言語対応
- 日本で目標設定などしても、~~問題なく~~動作する。
    - `目標１の動作を１０分で実施し完了しているかにかかわらずに目標３の実行を試みて` で、`the top 10 most popular books of all time`を調べたりするので、英語推奨です。
- 出力は英語になってしまう。

## APIの費用はそんな気にしなくて大丈夫
- ドキュメントでは非推奨とされている`--continuous`オプションだが、`--continuous-limit`オプションで自動実行回数を制限できる。
- 途中エラーで止まることも多いので、そんなにAPIは叩かれない。
- [API側で制限をすることも可能](https://platform.openai.com/account/billing/limits)
- 実績値は以下の通り。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2459468/1378d719-20b3-0326-e1db-9aaf4c9996a9.png)




# 概要
人間の贅沢・怠惰はとどまることを知らず、当初はあんなに便利に感じたChatGPTに色々と不平・不満が上がってしまいます。

- プロンプト考えるのめんどくさい
- ブラウザとエディタを往復するのが苦痛
- 最新の情報にもアクセスしたい

そんな中で[Auto-GTP](https://github.com/Significant-Gravitas/Auto-GPT)の存在を知り、これでもっともっと楽ができるぞ！と思い、使いこなすために四苦八苦しました。


# 対戦ハイライト
## レギュレーション
想定通り・許容できる範囲の回答結果を出力出来たら人類の勝利・出来なければ人類の敗北（≒指示が適切でなかった）とします。
コマンドは以下とします。

- ~~python -m autogpt --continuous --continuous-limit 250~~
  - v0.2.2 時点では.shと.batのスクリプトが提供されるようになりました。
- .\run.bat --continuous --continuous-limit 250

## 実行環境

Windows OS＋Python。
`.env`はAPIキーの設定のみ。



## 対戦結果





| No. | Goal                                                | 結果                                      | 勝敗 |
| --- | --------------------------------------------------- | ----------------------------------------- | ---- |
| 1   | ニュースサイトのAWSコストの見積                    | AWS カリキュレーターにうまくアクセスできなくてループして敗北 | ×   |
| 2   | ニュースサイトのAWSコストの見積（AWSカリキュレーター使うな） | AWS カリキュレーター以外の見積サイト等利用してループして敗北 | ×   |
| 3   | ニュースサイトのAWSコストの見積（同じタスクを３回実行してダメなら諦めろ） | エラーで停止。レポートファイルは作成されるも空ファイル<br>ファイル作成失敗は`C:\Windows\system32`配下にローカルリポジトリ作成してしまったため。 | ×   |
| 4   | ニュースサイトのAWSコストの見積（どうせダメなら１０回ごとに中間報告をレポートに報告せよ） | 中間報告もファイルに出力されず…<br>ファイル作成失敗は`C:\Windows\system32`配下にローカルリポジトリ作成ししてしまったため。 | ×   |
| 5   | WEBマーケに関する情報収集                          | 空ファイルの出力…<br>ファイル作成失敗は`C:\Windows\system32`配下にローカルリポジトリ作成してしまったため。 | ×   |
| 6   | 問い合わせフォームを作成して                        | HTMLのみ作成。<br>設定したゴールからは遠い内容。日本語ですらないし…<br>`CRITICISM:`で「パクリは良くない」と言われた結果の可能性あり | ×   |
| 7   | オプションで指定可能なPinecone, Milvus, Redis, Weaviateの比較・調査。 | COMMAND = clone_repository によりそれぞれのリポジトリをClone試みてきたので、緊急停止。<br>ここから0.2.2にVer UP | ×   |
| 8   | オプションで指定可能なPinecone, Milvus, Redis, Weaviateの比較・調査。（Web検索ベースで） | エントリーレベルの部下がロール<br>想定通りレポート出力 | 〇   |
| 9   | オプションで指定可能なPinecone, Milvus, Redis, Weaviateの比較・調査。（Web検索ベースで） | 機械学習のスペシャリストがロール<br>想定通りレポート出力 | 〇   |
| 10  | Goalをファイルからの読み込み出来るかのテスト          | 想定通りレポート出力                      | 〇   |
| 11  | ChatGPTとかで読み込めないような長文をファイルから読み取り | 初手の読み取りでAPIのトークン制限に引っ掛かりOUT | ×   |
| 12  | トークン制限に引っ掛からないように細分化する指示を追加 | 細分化の判断にOpneAI APIを利用してNG       | ×   |
| 13  | すべての動作で、トークン制限に引っ掛からないように細分化する指示を追加 | 細分化の判断にOpneAI APIを利用してNG       | ×   |
| 14  | OpneAI APIを一切利用せずにBeautiful Soupだけ使って、テキスト要素だけを抜けという指示をするもだめ。 | 初手の読み取りでAPIのトークン制限に引っ掛かりOUT | ×   |
| 15  | Beautiful Soupを使って、テキスト要素をHTMLから取り出したテキストを用意。それをOpneAI APIで利用できるサイズに分割だけして、を指示 | 細分化の判断にOpneAI APIを利用してNG | ×   |
| 16  | Dev Containers環境作り                             | how to use dev containers in vscode のWeb検索がトークン制限で初手で積み。 | ×   |
| 17  | Pinecone投入                                         | how to use dev containers in vscode のWeb検索がトークン制限で初手で積み。<br>初回？なのか起動時に時間がかかりました。<br>Pineconeコンソールを確認すると、Indexが作成されていたので、それが原因 | ×   |
| 18  | シンプルな情報収集と中間レポート含むレポート作成      | 想定通りの結果                            | 〇   |


# 次回以降にやってみたいこと

- ファイルのDL・Gitコマンドを実行可能な点を活用しての自動構築
  - 現在はWindows OS上で実行しているので、Dev Containersで使い捨て環境を作成して実施か？
- Pineconeを利用して、APIのサイズ制限に引っ掛かるようなデータの処理
  - そもそもベクトル検索型データベースのことをよく理解できてないが…


# 参考
https://github.com/Significant-Gravitas/Auto-GPT

https://qiita.com/yam_dev/items/c346dcf699ca758e0535

https://dev.classmethod.jp/articles/dive-deep-into-modern-data-saas-about-pinecone/