AutoGenの開発ストリームは2つに分かれている

# はじめに
2024年はAI分野ではモデルの進化だけでなく、AIエージェントという言葉が流行り始めた年となりました。
今後AIの進化とともに、AIが自律的に思考してタスクをこなしていくのではないかという盛り上がりがありましたが、これはモデルの進化だけでは難しい側面で、モデルを活用するフレームワークが重要になっています。
AIエージェントとしてはautogen, crewAIをはじめとして、LlamaIndexやLangChain, Llama Stackなどさまざまなフレームワークで実装が始まっています。

そんな中、Microsoft主導によるautogenが、いつのまにか2つに分裂していました。Microsoftによるautogen ver0.4系とコミュニティ主導によるver0.3系です。
pyautogenやautogenでインストールしたのに、MicrosoftのGithubを見てもそれが書いていない・・・ということで迷ったなら、これが原因です。
ここをある程度整理しておかないと、autogenで実装しようとgithubやpypiを見ると混乱しそうなので記事とさせていただきました。

# autogen開発の背景と目的 ～ver0.2
AutoGenは、Microsoftとペンシルベニア州立大学の共同プロジェクトとして始まりました。
AutoGenは、複数のエージェントが協力してタスクを解決するためのオープンソースのプログラミングフレームワークです。AutoGenは、LLM（大規模言語モデル）を活用し、エージェント間の対話やツールの使用をサポートしています。

### バージョン0.1
最初のバージョン0.1は、基本的なエージェント間の対話機能とツールの統合を提供しました。このバージョンでは、以下の機能が含まれていました。

- エージェント間の対話: 複数のエージェントが協力してタスクを解決するための基本的な対話機能
- ツールの統合: エージェントが外部ツールを使用してタスクを実行できるようにする機能
- LLMのサポート: 大規模言語モデルを使用してエージェントの対話を強化

### バージョン0.2
バージョン0.2では、さらに多くの機能が追加され、エージェントの協力と対話がより高度になりました。このバージョンの主な改善点は以下の通りです。

- エージェントの役割の拡張: 各エージェントが特定の役割を持ち、専門知識を活用してタスクを解決する機能
- 対話の最適化: エージェント間の対話がより自然で効率的になるよう最適化
- ツールの追加: 新しいツールの統合と既存ツールの改善
- パフォーマンスの向上: システム全体のパフォーマンスが向上し、よりスムーズな動作が可能に

AutoGenのバージョン0.2までの開発経緯は、エージェント間の協力と対話を強化するための重要なステップで、ある程度の安定版として現在も開発が進められています。

ver0.2を使用する場合、現在は以下のようにインストールします
```terminal
pip install autogen-agentchat~=0.2
```

# コミュニティ開発が始まる ver0.2.34～
こちらの動画でその経緯が説明されています。
AutoGenの創設者であるXi Wang博士とShing Yun Wu博士へのインタビューとなっていて、その中でautogenが一定の成果を見せるようになったver0.2のころから、次第にMicrosoftの企業としてのイニシアティブが見られるようになったとのこと。
これは仕方のないことでしたが、結局Microsoft主導による開発ではなく、コミュニティ主導での開発をしていこうという流れが生まれ、ver0.2.34をフォークして、ver0.3の開発がスタートしたようです。

https://www.youtube.com/watch?v=Hl_Z0-IKBjY&t=7s

さらにここを見ると、pyautogenパッケージの管理者アクセスがロックされて、Microsoft側からはアクセスできなくなってしまっていると、、、Xのアカウントが＠pyautogenなのにPyPiでpyautogenのメンテナンスができないという皮肉な状況に

https://github.com/microsoft/autogen/discussions/4217

https://x.com/pyautogen/status/1857264760951296210


そのため、autogenの公式はMicrosoftですと言いつつも、パッケージはコミュニティ側に持っていかれてしまったという状況に。Microsoftはパッケージの再構築が必要となったとのことです。この状況から察するに、結構な意見の対立があったのかもしれませんね。

## コミュニティ主導 AG2
AG2として開発が始まり、オープンで開発スピードが速く、たくさんの提案など活発に議論しながら開発が進められています。
これがver0.3系として始まったようで、Releaseを見るとv0.3.2b2がありました。記事時点ではすでにv0.6.1となっていて、バージョンで見分けるのは無理な感じです。

https://ag2.ai/

https://github.com/ag2ai/ag2

このAG2を使用する場合は、PyPIの説明にこうあります
**AG2 is available via pyautogen (or its alias autogen or ag2) on PyPI!**
「pyautogenもしくは、エイリアスとしてautogen, ag2が使えるよ」
これは邪推ですが、pyautogenを訴訟とかでMicrosoft側に戻されても、他が使えるようにしたのでは？と思ってしまいました。

もし皆さんが以下のように書いた場合、いずれもAG2が入るということになります
```terminal
pip install autogen

pip install pyautogen

pip install ag2
```

## Microsoft主導 ver0.4
もともとMicrosoftとペンシルベニア州立大学の協力のもと進められていたautogenでしたが、コミュニティ主導のバージョンと別れたことで、Microsoftはver0.3を飛ばしてver0.4の開発を始めました。

ちなみにver0.2は安定板として開発が進められていますが、GithubのREADME.mdを読むと、ver0.4を選択してほしい感じがひしひしと伝わります。

https://github.com/microsoft/autogen

ver0.4はver0.2のバージョンアップではなく、根本から書き直しをしていると説明があります。
名前空間やパッケージなど大きな変更を行ったようです。

https://github.com/microsoft/autogen/releases/tag/v0.4.0.dev11

現在は以下のように書くとMicrosoftのautogenがインストールされます。
```terminal
pip install autogen-agentchat
```
ただし、現時点ではこれでインストールされるのはver0.2系で、ver0.4系を入れる場合は
```terminal
pip install autogen-agentchat==0.4.0.dev13
```
といった感じでバージョン指定をする必要があります。
正式リリースになるとこの辺りは変更になるかと思います。

ドキュメントも一応紹介しておきます。

**ver0.2** (microsoft.github.io/autogen/0.2/docs/Getting-Started)

https://microsoft.github.io/autogen/0.2/docs/Getting-Started

**ver0.4** (microsoft.github.io/autogen/dev/index.html)

https://microsoft.github.io/autogen/dev/index.html


補足として、microsoft/autogenの使用するのにautogen studioというものがありますが、こちらもver0.2とver0.4で分かれています。

**ver0.2**
```
pip install autogenstudio
```

**ver0.4**
```
pip install autogenstudio==0.4.0.dev45
```
さらに、ver0.4を開発する中で誕生したのがMagentic-oneです。ver0.4を推進する材料になるかもしれませんね。

https://github.com/microsoft/autogen/tree/main/python/packages/autogen-magentic-one


# まとめ
autogenについては、こんな背景があるのかぁということを知ってもらって、何かしらの助けになれば幸いです。

Web検索して過去記事などからautogenを構築しようとしても、うまくいかないといったことが起きるかもしれませんし、調べても混乱するかもしれません。原因の一つがこの対立です。Microsoftもコミュニティのどちらもautogen公式だと主張している状況のようです。

コミュニティ主導は進化も早いですが、実験的なトライも多いでしょうし、多くの発見もあるかと思います。ただ市場で安定的なフレームワークになれるかは未知数です。
MicrosoftはAIの分野での主導権を取りたいでしょうし、そのためには先進的だけど安定的なフレームワークという気持ちもあるのだと思います。そのため多くのLLMサービスとの接続なども重視しないといけません。
2025年はver0.4がリリースとなると思いますが、AG2とともにその進化に期待しているところです。