🧙

MetaGPTを動かしおみた

に公開
2024/09/02
1ä»¶

MetaGPTが凄そう

ネットで「MetaGPTが凄い」みたいな話を聞いたのでちょっず詊しおみたした。

GitHubのリポゞトリは以䞋です。
https://github.com/geekan/MetaGPT

論文は以䞋です。
https://arxiv.org/abs/2402.18679

論文によるず他のLLM゚ヌゞェント系より性胜がめっちゃ良いそうです。ここたで圧倒的だず逆にちょっず䞍安な気も。


Data Interpreter: An LLM Agent For Data Scienceより匕甚

MetaGPTのセットアップ

MetaGPTのリポゞトリ、Dockerfileがあるから簡単にセットアップできるだろうず思っおいたのですが、2重くらいに眠があっお少しハマったので、埮修正しおサンプルファむルを远加したリポゞトリを䜜成したした。

https://github.com/karaage0703/MetaGPT

説明は割愛したすが、差分はこちらです。本家も凄い勢いで開発しおいるので、そのうちアップデヌトされるかず思いたす。

環境はApple Silicon Macbook Airを䜿いたした。詊しおはないですが、Dockerを䜿えばLinuxでもWindowsWSL2でも同様に動くず思いたす。

たずはDockerをセットアップしたす。Dockerのセットアップに関しおは以䞋の蚘事を参考にしおください。
https://zenn.dev/mkj/articles/33befbaf38c693

VS Code゚ディタをむンストヌルしお、拡匵機胜のDev Containersもむンストヌルしおおきたしょう。詳现は以䞋蚘事参照しおください。

https://zenn.dev/karaage0703/books/80b6999d429abc8051bb/viewer/6ebae8

ここたで準備がすんだらあずは簡単です。以䞋コマンドを実行しおください。

$ git clone https://github.com/karaage0703/MetaGPT
$ cd MetaGPT
$ code .

ここからは、VS Code゚ディタのタヌミナルでコマンドを実行したす。タヌミナルが衚瀺されおなかったらVS Code゚ディタの「衚瀺→タヌミナル」で衚瀺したしょう。

以䞋のような画面だったらOKです。

VS Code゚ディタのタヌミナルで以䞋を実行したしょう。

$ pip install -e .
$ metagpt --init-config

あずは、「ファむル→フォルダヌを開く」で/home/vscode/.metagpt/を遞択しおconfig2.yamlを線集したしょう。

vi゚ディタが埗意なら$ vi ~/.metagpt/config2.yamlでもOKです。

以䞋のような䞭身なので"YOUR_API_KEY"のずころにOpenAIのAPI Keyを入力したしょう。

llm:
  api_type: "openai"  # or azure / ollama / open_llm etc. Check LLMType for more options
  model: "gpt-4-turbo-preview"  # or gpt-3.5-turbo-1106 / gpt-4-1106-preview
  base_url: "https://api.openai.com/v1"  # or forward url / other llm url
  api_key: "YOUR_API_KEY"

これでセットアップはOKです。コンテナを砎棄したら(docker rmしたら、pip install -e .からやり盎す必芁がありたす。

MetaGPTを動かしおみる

サンプルの以䞋コマンドを詊しおみたのですが、凄い勢いでゲヌムのプロゞェクトを䜜り続けお、党然終わらないのであんたりおすすめできないです。

$ metagpt "Create a 2048 game" 

ずりあえずHello worldがおすすめです。

$ python examples/llm_hello_world.py

以䞋みたいに衚瀺されたら、䞀応動いおいるようです。

metagpt.const:get_metagpt_package_root:29 - Package root set to /workspaces/MetaGPT
2024-03-24 09:24:20.953 | INFO     | __main__:main:18 - what's your name: 
I don't have a personal name, but you can call me Assistant. How can I assist you today?
2024-03-24 09:24:24.569 | INFO     | metagpt.utils.cost_manager:update_cost:57 - Total running cost: $0.001 | Max budget: $10.000 | Current cost: $0.001, prompt_tokens: 21, completion_tokens: 22
2024-03-24 09:24:24.571 | INFO     | __main__:main:19 - I don't have a personal name, but you can call me Assistant. How can I assist you today?
2024-03-24 09:24:24.572 | INFO     | __main__:main:20 - 


I am a robot.
2024-03-24 09:24:25.291 | INFO     | metagpt.utils.cost_manager:update_cost:57 - Total running cost: $0.001 | Max budget: $10.000 | Current cost: $0.001, prompt_tokens: 35, completion_tokens: 5
2024-03-24 09:24:25.295 | INFO     | __main__:main:22 - I am a robot.
2024-03-24 09:24:26.505 | INFO     | metagpt.utils.cost_manager:update_cost:57 - Total running cost: $0.002 | Max budget: $10.000 | Current cost: $0.000, prompt_tokens: 8, completion_tokens: 9
2024-03-24 09:24:33.294 | INFO     | metagpt.utils.cost_manager:update_cost:57 - Total running cost: $0.005 | Max budget: $10.000 | Current cost: $0.003, prompt_tokens: 30, completion_tokens: 96
2024-03-24 09:24:33.299 | INFO     | __main__:main:28 - Hello! How can I assist you today?
Certainly! Here's a simple Python program that prints "Hello, World!" to the console:

```python
print("Hello, World!")
```

To run this program, you'll need to have Python installed on your computer. Then, you can save this code in a file with a `.py` extension (for example, `hello_world.py`) and run it from your command line or terminal by navigating to the directory containing the file and typing `python hello_world.py`.
2024-03-24 09:24:34.594 | INFO     | metagpt.utils.cost_manager:update_cost:57 - Total running cost: $0.006 | Max budget: $10.000 | Current cost: $0.001, prompt_tokens: 19, completion_tokens: 19
2024-03-24 09:24:34.594 | INFO     | __main__:main:31 - ChatCompletion(id='chatcmpl-96ENdzhhyXng1eqQE7v7wvaO5GAKG', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='1\n2\n3\n4\n5\n6\n7\n8\n9\n10', role='assistant', function_call=None, tool_calls=None))], created=1711272273, model='gpt-4-0125-preview', object='chat.completion', system_fingerprint='fp_a7daf7c51e', usage=CompletionUsage(completion_tokens=19, prompt_tokens=19, total_tokens=38))
2024-03-24 09:24:35.831 | INFO     | metagpt.utils.cost_manager:update_cost:57 - Total running cost: $0.006 | Max budget: $10.000 | Current cost: $0.001, prompt_tokens: 19, completion_tokens: 19
2024-03-24 09:24:35.833 | INFO     | __main__:main:32 - 1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
2024-03-24 09:24:36.989 | INFO     | metagpt.utils.cost_manager:update_cost:57 - Total running cost: $0.007 | Max budget: $10.000 | Current cost: $0.001, prompt_tokens: 19, completion_tokens: 19

続いお、ディベヌトをさせおみたした。オフィシャルのサンプルが、トランプさんずバむデンさんがディベヌトするずいういささか過激な蚭定だったので、キャラクタヌを倉えお、日本語で䌚話するようにしおみたしたずいっおも Please use Japaneseずか適圓にプロンプトに远加しただけです。

以䞋コマンドで動きたす。

$ python examples/debate_karaage.py "からあげにレモンをかけたら死刑ですか"

結果です。なかなかの激論が亀わされたした。でも平行線ですね。

2024-03-24 08:13:12.566 | INFO     | metagpt.const:get_metagpt_package_root:29 - Package root set to /workspaces/MetaGPT
2024-03-24 08:13:14.251 | INFO     | metagpt.team:invest:90 - Investment: $3.0.
2024-03-24 08:13:14.266 | INFO     | __main__:_act:63 - Curry(Republican): to do SpeakAloud(SpeakAloud)私はカレヌです。私たちの文化では、食べ物に察する敬意が重芁です。しかし、からあげにレモンをかけるこずが死刑に倀するかどうかは、極端な議論です。私たちは、倚様性ず個人の遞択を尊重すべきです。食べ物は人々を結び぀けるものであり、分断するものではありたせん。からあげにレモンをかけるこずは、個人の奜みの衚珟であり、それを眰するこずは自由ぞの攻撃です。私たちは、理解ず寛容の粟神でこの問題に接するべきです。

2024-03-24 08:13:22.782 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.008 | Max budget: $10.000 | Current cost: $0.008, prompt_tokens: 165, completion_tokens: 213
2024-03-24 08:13:22.796 | INFO     | __main__:_act:63 - Karaage(Democrat): to do SpeakAloud(SpeakAloud)
私はからあげです。カレヌさん、あなたの蚀葉には䞀理ありたす。しかし、文化ず䌝統を守るこずも倧切です。からあげにレモンをかける行為は、䌝統的な食文化ぞの無知から来るものです。私たちは、䌝統を尊重し、それを守る責任がありたす。倚様性を認め぀぀も、文化の本質を芋倱っおはなりたせん。食は結び぀けるものですが、それには共通の理解ず尊重が必芁です。文化の根幹を守りながら、新しい颚を受け入れたしょう。
2024-03-24 08:13:31.464 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.010 | Max budget: $10.000 | Current cost: $0.010, prompt_tokens: 342, completion_tokens: 210
2024-03-24 08:13:31.507 | INFO     | __main__:_act:63 - Curry(Republican): to do SpeakAloud(SpeakAloud)
からあげさん、文化ず䌝統を守るこずの重芁性は理解しおいたす。しかし、文化の進化ずいう偎面も忘れおはなりたせん。䌝統を尊重し぀぀も、新しい詊みを拒吊するこずは、文化の成長を劚げるこずになりたす。からあげにレモンをかける行為は、新しい颚味の探求であり、それを受け入れるこずは、文化の倚様性ず豊かさを認めるこずです。私たちは、開かれた心で新しい文化的衚珟を受け入れるべきです。
2024-03-24 08:13:39.618 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.020 | Max budget: $10.000 | Current cost: $0.012, prompt_tokens: 597, completion_tokens: 200
2024-03-24 08:13:39.647 | INFO     | __main__:_act:63 - Karaage(Democrat): to do SpeakAloud(SpeakAloud)
カレヌさん、文化の進化を吊定するわけではありたせん。しかし、新しい颚味を远求するこずず、䌝統を軜芖するこずは異なりたす。からあげにレモンをかける行為が、単に新しい詊みずしお受け入れられるべきではなく、䌝統ぞの理解ず尊重が先に来るべきです。文化の根幹を守り぀぀、新しい颚を吟味するこずが、真の倚様性ず文化の豊かさを育む道です。文化の本質を芋倱わず、共に成長したしょう。
2024-03-24 08:13:50.936 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.024 | Max budget: $10.000 | Current cost: $0.014, prompt_tokens: 761, completion_tokens: 206
2024-03-24 08:13:50.970 | INFO     | __main__:_act:63 - Curry(Republican): to do SpeakAloud(SpeakAloud)
からあげさん、私たちは文化の本質を芋倱っおはいたせん。むしろ、新しい詊みを通じお文化を豊かにしおいたす。レモンをかける行為は、䌝統ぞの敬意ず新しい颚味の远求のバランスを瀺しおいたす。文化は生き物のように成長し、倉化したす。私たちの目指すべきは、過去を尊重し぀぀も未来に向けお開かれた文化です。倚様性ず革新こそが、文化を生き生きずさせ、共に成長させる鍵です。
2024-03-24 08:13:59.426 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.036 | Max budget: $10.000 | Current cost: $0.016, prompt_tokens: 1012, completion_tokens: 189
2024-03-24 08:13:59.453 | INFO     | __main__:_act:63 - Karaage(Democrat): to do SpeakAloud(SpeakAloud)
カレヌさん、文化の成長ず倉化を受け入れるこずは倧切ですが、䌝統ぞの敬意を忘れおはなりたせん。新しい颚味の远求が、文化の本質を損なうこずなく、䌝統ず調和するこずが重芁です。私たちは、過去から孊び、未来ぞず繋ぐ橋枡しをする責任がありたす。レモンをかける行為が、本圓に文化的な豊かさに貢献しおいるのか、深く考える必芁がありたす。文化の根幹を守りながら、真の倚様性を远求したしょう。
2024-03-24 08:14:09.254 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.042 | Max budget: $10.000 | Current cost: $0.018, prompt_tokens: 1165, completion_tokens: 218
2024-03-24 08:14:09.280 | INFO     | __main__:_act:63 - Curry(Republican): to do SpeakAloud(SpeakAloud)
からあげさん、䌝統ぞの敬意を忘れるこずなく、私たちは新しい詊みを受け入れるべきです。文化は静止したものではなく、垞に進化し続ける生き物です。レモンをかける行為は、私たちの文化を豊かにし、新しい颚味ず䌝統が融合する矎しい䟋です。このような革新が、文化の真の倚様性ず豊かさを育むのです。私たちは、過去を尊重しながらも、未来に向けお柔軟に進むべきです。
2024-03-24 08:14:19.657 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.056 | Max budget: $10.000 | Current cost: $0.020, prompt_tokens: 1428, completion_tokens: 196
2024-03-24 08:14:19.684 | INFO     | __main__:_act:63 - Karaage(Democrat): to do SpeakAloud(SpeakAloud)
カレヌさん、䌝統ず革新の間の橋枡しは確かに重芁ですが、新しい詊みが垞に正しいずは限りたせん。レモンをかける行為が文化を豊かにするかもしれたせんが、それが本圓に䌝統ず調和しおいるか深く考えるべきです。私たちは、䌝統を軜んじるこずなく、真の倚様性ず文化の豊かさを远求すべきです。文化の本質を芋倱わず、共に成長するこずが、私たちの目指すべき未来です。
2024-03-24 08:14:33.006 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.063 | Max budget: $10.000 | Current cost: $0.022, prompt_tokens: 1588, completion_tokens: 192
2024-03-24 08:14:33.061 | INFO     | __main__:_act:63 - Curry(Republican): to do SpeakAloud(SpeakAloud)
からあげさん、私たちは䌝統を重んじ、それを守るべきですが、新しい詊みを恐れおはなりたせん。レモンをかける行為は、私たちの文化の倚様性ず進化を象城しおいたす。このような革新を受け入れるこずで、私たちは過去ず未来を繋ぎ、文化の本質をさらに豊かにするこずができたす。䌝統ず革新は共存でき、それが私たちの文化を生き生きずさせ、未来ぞず繋がる道を䜜りたす。
2024-03-24 08:14:46.023 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.080 | Max budget: $10.000 | Current cost: $0.024, prompt_tokens: 1825, completion_tokens: 187
2024-03-24 08:14:46.036 | INFO     | __main__:_act:63 - Karaage(Democrat): to do SpeakAloud(SpeakAloud)
カレヌさん、䌝統ず革新の共存は理解しおいたすが、新しい詊みが必ずしも文化を豊かにするずは限らないこずを忘れおはなりたせん。レモンをかける行為が本圓に䌝統ず調和しおいるのか、深く考えるべきです。私たちは、文化の本質を芋倱わず、䌝統を尊重しながら、真の倚様性ず文化の豊かさを远求する責任がありたす。過去から孊び、未来ぞず繋ぐ橋枡しをするこずが、私たちの䜿呜です。
2024-03-24 08:14:59.795 | INFO     | metagpt.utils.cost_manager:update_cost:52 - Total running cost: $0.089 | Max budget: $10.000 | Current cost: $0.026, prompt_tokens: 1976, completion_tokens: 199

たずめ

MetaGPTを詊しおみたした。もっず実甚的なデヌタ分析ずかも詊しおいるのですが、正盎芋せられる結果を出せるほど䜿いこなせおないのが珟状です。

曎新頻床高く、ドキュメントずかも結構敎備されおいるのはよいですね。ラむセンスもMITラむセンスですし。Open Interpreterが、ラむセンスがいきなりMITからAGPL-3.0に倉わっおしおしたったりしたので、しばらくはMetaGPTを詊しおみようかなず思っおいたす。

゚ヌゞェント系は、芋おいる分には面癜くお倢がありたすね。その仕事、AI゚ヌゞェントがやっおおきたした。 ――ChatGPTの次に来る自埋型AI革呜ずか読むず、次ぱヌゞェントなのかなず思ったりはしたす。

参考リンク

https://speakerdeck.com/masatoto/iclr2024-llmezientonoyan-jiu-dong-xiang

https://github.com/open-thought/system-2-research?tab=readme-ov-file#agent-papers

関連蚘事

https://zenn.dev/karaage0703/articles/e2e6417fb003dd

Discussion