AIエンジニアの探求

計算論的神経科学で博士号取得後、AIエンジニアとして活動中。LLMの活用や脳とAIの関係などについて記事を書きます。

AutoGPTを使ってみた

この記事は?

AutoGPTというGPT-4を活用してゴールを与えるだけで自動的にタスクを完了させることを試みたプログラムが注目を集めています。

このAutoGPTを簡単なユースケースで使ってみたので、具体的な動作の様子や(あくまで個人の所感としての)使い方のコツを書いてみました。

なお、AutoGPT関連の記事には抽象度の高い「こういうことができる」という情報や「動かすための手順」は載っていることが多いものの、「実際に動かした時にどのような結果が得られるか」が載っている記事が少ないと感じたため、そのような情報を求めている方にとっては有益な記事になっているのではと思います。

また、上でも書いたように実行方法は他の記事などで紹介されているのでここでは省略します。私は公式ドキュメントに従ってdockerを利用しました。

ユースケース - 簡単なコードの作成と実行

私自身のざっくりとした理解として、「AutoGPTはChatGPTにGoogle検索やプログラムの実行といった手足をつけたもの」というものがあるのでせっかくなら「手足を上手く使いこなす能力」をみたいと思いました。

色々なゴール設定を試してみたのですがなかなか上手くいかず、たどり着いたのが「正弦波をmatplotlibで描画して保存する」というゴールでした。

なお、名前・役割・ゴールは以下の通りです。

Name:  MatplotlibGPT
Role:  an AI assistant that specializes in creating high-quality visualizations using the Matplotlib library.
Goals:
-  Generate a sin function plot using Matplotlib that accurately represents the data and is visually appealing.
-  Customize the plot to meet your specific needs, including adjusting the color scheme, adding labels and titles, and modifying the axis limits.
-  Save the plot in a variety of file formats, including PNG, PDF, and SVG, to ensure compatibility with your preferred software and devices.
-  Provide guidance and troubleshooting support if any issues arise during the visualization process.
-  Continuously learn and adapt to new trends and techniques in data visualization to ensure that your plots are always up-to-date and effective.

これを実行してみると、大体以下のような流れでタスクが実行されていきました(この流れでは人間は介入せず、AutoGPTが提案するnext actionを全て承認していました)。

  • sin_plot.pyというファイルを実行しようとする
  • そのようなファイルは存在しないことに気づき、新しく作成する
  • 作成したsin_plot.pyを実行する
  • matplotlibのライブラリがないことに気づく
  • matplotlibをインストールするたのスクリプトを作成する
  • 作成したスクリプトを実行する
  • もう一度sin_plot.pyを実行する(この時画像の保存先が間違っており、保存されない)
  • 画像が保存されたかを確かめるためにフォルダ内を調べる
  • 画像が保存されてないことに気づく
  • もう一度sin_plot.pyを実行する
  • 画像が保存されたかを確かめるためにフォルダ内を調べる
  • 画像が保存されてないことに気づく
  • もう一度sin_plot.pyを実行する
  • ...

途中までいい感じだったのですが、最後は無限ループに陥ってしまいました。 ちなみに途中までの試行錯誤プロセスはさすがGPT-4という感じで、「よく自分もこういう感じに開発するなあ」と思いながら見ていました笑

また、この時sin_plot.pyは以下のようになっており、

  • 画像を保存する前にplt.show()がついている

ことで正しく保存されなくなってしまっているようです。

# Import Matplotlib
import matplotlib.pyplot as plt
import numpy as np
import os

# Generate data
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

# Create plot
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Sin Function Plot')
plt.show()
fig.savefig('sin_plot.png')
fig.savefig('sin_plot.pdf')
fig.savefig('sin_plot.svg')

フィードバックを与えることによる介入

AutoGPTでは、AIが提案するnext actionに対してフィードバックを与えることが可能です。

具体的には、以下のようにnext actionが提案されるのでInput:のところに要望などを書くことができます。

NEXT ACTION:  COMMAND = execute_python_file ARGUMENTS = {'filename': '/app/autogpt/auto_gpt_workspace/sin_plot.py'}
  Enter 'y' to authorise command, 'y -N' to run N continuous commands, 's' to run self-feedback commands'n' to exit program, or enter feedback for ...
  Asking user via keyboard...
Input:

この提案を承諾しても無限ループから脱出できないので、「画像が上手く保存されていないようです」と伝えてみました。

すると保存先がfig.savefig('plots/sin_plot.png')になるという、的外れな変更が適用されてしまいました。

仕方ないので、Input:plt.show() may not be necessary.と直接的に指示を出すと、「ファイル読み込み操作」のあと以下のプランが提案されて、正しくスクリプトが修正されました。

PLAN:
-  Use the 'read_file' command to read the 'sin_plot.py' script.
-  Modify the script to remove the 'plt.show()' command.
-  Use the 'write_to_file' command to save the modified script.
-  Use the 'execute_python_file' command to run the modified script and generate the plot.
-  Check that the plot is generated correctly and is visually appealing.
-  Modify the code as needed to customize the plot.

最終的に得られたグラフは以下になります。

所感

まず第一に、思ったよりも使いこなすのが大変という印象でした。

「ゴールを与えるだけ」だと無限ループしたり頓珍漢な方向に進んでしまうので、適切にフィードバックを与えて面倒を見る必要があります。 ChatGPTのようにインタラクティブに使うツールと考えた方が良さそうな感じです。

一方、「実際にプログラムを実行できる」というのはやはり新しい体験で楽しく、「ChatGPTに書いてもらったコードを自分で実行する」のとはレイヤーが違う作業をしている感覚がありました。

上手くやればAutoGPTをフル活用した開発フローが作れそうな気がします。

今後もAutoGPTを使っていき、より難易度の高いタスクを実行できないか試していきたいと思います。