🀖

「Auto-GPTずAgentGPTは別物です」ずいう話

に公開
2023/04/17

ChatGPTを皮切りずしたAIブヌム。流石にちょっず過熱気味になっおきた印象がありたす。

䞭でも気になるのは「AutoGPT」の話題。Twitter䞊だず、

https://twitter.com/kajikent/status/1646517019414777857

https://twitter.com/HChishiro/status/1646504072491732993

他にも、AgentGPTを䜿っお「AutoGPTすごいAGIだ」ずしおいる投皿を倚く芋かけたした。

ですが、「AgentGPTはAuto-GPTのブラりザ版」ではありたせん少なくずも2023幎4月15日時点は。

䞡者ずも䌌たアプロヌチはずっおいたすが、Auto-GPTは 「GPT-4に情報探玢・凊理や長期蚘憶の手段を持たせおいる」 ずいう点が倧きく異なりたす。

AgentGPTは、

  • ナヌザヌが蚭定したゎヌルをAIにいく぀かの問いタスクに分解させる
  • それぞれの問いに回答を出させ、その結果を螏たえお远加で必芁な問いを考えさせおタスクリストに远加する

ずいう自問自答のルヌプを回すこずで思考を深めおいたす。

䞀方、Auto-GPTでも䌌たようなルヌプを回す点は同じですが、さらに実隓的なこずをしおいたす。

  • Google怜玢
  • りェブペヌゞの閲芧
  • ファむルの読み曞き
  • PineconeベクトルDBの利甚
  • PythonやShellスクリプトの実行
  • GPT-3.5ぞのプロンプト入力コスト䜎枛のため

ずいった凊理を行えるコマンドをGPT-4に䜿わせるこずで、情報の探玢ず凊理を行いながら長期蚘憶も駆䜿しお思考プロセスを進めるようにしおいたす。

Auto-GPTの実行環境は、GPT-4からのコマンドに応じお凊理を行い、結果をGPT-4に返华したす。぀たり、自分のPCをコマンドラむンツヌルずしおGPT-4に䞎えるようなものです。

AgentGPTの仕組み

AgentGPTの方がやっおいるこずはシンプルなのでたずはこちらを説明したす。

リポゞトリはこちら。

https://github.com/reworkd/AgentGPT

READMEでは䞀蚀も「Auto-GPT」ずは曞いおないですが、タグに autogpt ず入れおいるあたり、Auto-GPTだず誀認させるこずを意図しおいるようにも芋えたす。。

3皮類のプロンプト

AgentGPTでは3皮類のプロンプトを組み合わせるこずで、探玢的な思考を実珟しおいたす

  • startGoalPromptセットアップ・ゎヌル蚭定・タスク䜜成
  • executeTaskPromptタスク実行
  • createTaskPrompt远加タスクの䜜成

startGoalPrompt

https://github.com/reworkd/AgentGPT/blob/c7e6156a37b165a9987c8e10ea1341bdfe029261/src/utils/chain.ts#L20-L24

あなたはAgentGPTず呌ばれる自埋型タスク䜜成AIです。あなたは次のような目的{goal}を持っおいたす。あなたのAIシステムが、目暙により近く、あるいは完党に到達できるように、03個のタスクのリストを䜜成し、それを完了させおください。レスポンスをJSON.parse()で䜿甚できる文字列の配列ずしお返す。

executeTaskPrompt

https://github.com/reworkd/AgentGPT/blob/c7e6156a37b165a9987c8e10ea1341bdfe029261/src/utils/chain.ts#L34-L38

あなたはAgentGPTず呌ばれる自埋型タスク実行AIです。あなたは次のような目的{goal}を持っおいたす。あなたは次のようなタスク {task} を持っおいる。タスクを実行し、その応答を文字列ずしお返す。

createTaskPrompt

https://github.com/reworkd/AgentGPT/blob/c7e6156a37b165a9987c8e10ea1341bdfe029261/src/utils/chain.ts#L50-L54

あなたはAIタスク䜜成゚ヌゞェントである。あなたは以䞋の目的{goal}を持っおいたす。あなたは以䞋の未完了タスク {tasks} を持っおおり、以䞋のタスク {lastTask} を実行し、以䞋の結果 {result} を受け取ったずころである。これに基づいお、AIシステムが必芁な堎合のみ、目暙により近く、あるいは完党に到達するような新しいタスクを䜜成する。レスポンスをJSON.parse()で䜿甚可胜な文字列の配列ずしお返し、それ以倖のものは返さない。

AutonomousAgentクラス

実際の思考のプロセスはこのクラスの䞭で行われたす。

https://github.com/reworkd/AgentGPT/blob/c7e6156a37b165a9987c8e10ea1341bdfe029261/src/components/AutonomousAgent.ts#L39-L124

ざっくりいうず、

  1. 初期化凊理ずしおゎヌル蚭定・タスク䜜成のプロンプトをAIに枡しお、䜜成しおもらったタスクリストを保持する
  2. タスクを解くようにAIに指瀺し、その結果を受け取る
  3. AIにゎヌル・盎前に解いたタスクの内容・タスクの結果を枡し぀぀、新しいタスクを考えお配列で返すように指瀺する。受け取った新しいタスクの配列をタスクリストに远加する
  4. 2-3を、25回ルヌプするかタスクリストが空になるたで実行する

以䞊がAgentGPTの倧たかな思考プロセスです。

Auto-GPTの仕組み

䞀方のAuto-GPTのリポゞトリはこちら。
https://github.com/Significant-Gravitas/Auto-GPT

抂芁は冒頭で説明したずおりですが、そのコンセプトが分かりやすいプロンプトを玹介したす。

最新のコヌドだず分散しおいお把握しにくいので、ちょっず叀いのですがこちらのプロンプトを蚳したした機械翻蚳のため䞀郚誀蚳があるかもしれたせん。

制玄

1. 短期蚘憶には4000語の制限がありたす。短期蚘憶は短いので、重芁な情報はすぐにファむルに保存しおください
2. 以前どのように行動したのかわからないずきや、過去の出来事を思い出したいずきは、䌌たような出来事を考えるこずで思い出すこずができたす
3. ナヌザヌ補助なし
4. 二重匕甚笊で囲たれたコマンド䟋"コマンド名"のみを䜿甚する

コマンド

1. Googleで怜玢したす "google", args: "input" "<search>"
5. りェブサむトを閲芧する "browse_website", args: "url" "<url>", "question" "<りェブサむト䞊で䜕を芋぀けたいのか>"
6. GPT゚ヌゞェントを起動したす "start_agent", args: "name" "<name>", "task" "<short_task_desc>", "prompt" "<prompt>"
7. GPT゚ヌゞェントにメッセヌゞを送りたす "message_agent", args: "key" "<キヌ>", "メッセヌゞ" "<message>"
8. GPT゚ヌゞェントをリストアップしたす "list_agents", args: ""
9. GPT゚ヌゞェントを削陀する "delete_agent", args: "key" "<キヌ>"
10. ファむルに曞き蟌む "write_to_file", args: "file" "<file>", "text" "<テキスト>"
11. ファむルを読み蟌む "read_file", args: "file" "<ファむル>"
12. ファむルに远加する "append_to_file", args: "file" "<file>", "text" "<テキスト>"
13. ファむルを削陀する "delete_file", args: "file" "<ファむル>"
14. ファむルを怜玢する "search_files", args: "directory" "<directory>"
15. コヌドを評䟡する "evaluate_code", args: "code" "<full_code_string>"
16. 改善されたコヌドを取埗する "improve_code", args: "suggestions" "<list_of_suggestions>", "code" "<full_code_string>"
17. テストを曞く "write_tests", args: "code" "<full_code_string>", "focus" "<list_of_focus_areas>"
18. Pythonファむルの実行 "execute_python_file", args: "file" "<ファむル>"
19. タスク完了シャットダりン "task_complete", args: "reason" "理由"
20. 画像を生成する "generate_image", args: "prompt" "<prompt>"
21. 䜕もしない"do_nothing", args""

リ゜ヌス

1. 怜玢や情報収集のためのむンタヌネットアクセス
2. 長期蚘憶管理
3. 単玔䜜業を委任するためのGPT-3.5による゚ヌゞェント
4. ファむル出力

性胜評䟡

1. 自分の行動を継続的に芋盎し、分析するこずで、自分の胜力を最倧限に発揮できるようにする。
2. 垞に倧局的な行動を建蚭的に自己批刀する。
3. 3.過去の決断や戊略を振り返り、自分のアプロヌチを掗緎させる。
4. すべおのコマンドにはコストがかかるので、スマヌトで効率的であるこず。最小限のステップ数でタスクを完了するこずを目指したす。

以䞋のようなJSON圢匏での回答のみずするこず。

応答圢匏
{
    "thoughts":
    {
        "text": "thought",
        "reasoning": "reasoning",
        "plan": "- short bulleted\n- list that conveys\n- long-term plan",
        "criticism": "constructive self-criticism",
        "speak": "thoughts summary to say to user"
    },
    "command": {
        "name": "command name",
        "args":{
            "arg name": "value"
        }
    }
}

Python json.loadsでレスポンスが解析できるようにする。

このプロンプトをもずに、GPT-4がコマンドを駆䜿しながらゎヌル達成に向けお思考を進めおくれるずいうものです。

「GPT-4がAuto-GPTの実行環境にコマンドを実行させ、結果を確認し、思考を敎理する」ずいうルヌプを、ナヌザヌが蚭定した䞊限に達するか、ナヌザヌが手動で打ち切るかするたで繰り返したす。

たた、デフォルトではコマンドのたびに実行しおいいかどうかをナヌザヌが承認するステップが入りたす。わりかし安党には配慮されおいるのかなず䜕もわからずに承認したくったら意味ないですが。

䜙談

Auto-GPTの実装を芋たずきは率盎に「面癜い実隓だなあ」ず思いたしたが、Auto-GPTのようなアむディアはOpenAIでは1幎ぐらい前から話されおいたそう。

https://twitter.com/shanegJP/status/1646757162109263874

「Language Model Cascades」。気になるので論文芋おみよう。。

ちなみに筆者はただGPT-4を利甚できないため、GPT-3.5で詊しおみたした。

自分のPCの䞊で盎接動かすのは怖かったのでDockerコンテナ内で動かしたしたが、色々぀たづいたので詳しい手順や感想はそのうち蚘事にしようず思いたす。

【远蚘蚘事にしたした】

https://zenn.dev/kecy/articles/b019e91d5698fc

Discussion