AutoGenを動かしてAIマルチエージェントを体験してみた

## AugoGenとは
AutoGenは、大規模言語モデル（LLM）を活用して複数のAIエージェントを連携させるオープンソースのフレームワークです。このツールは主にソフトウェア開発やデータ分析の分野で活用が期待されています。

AutoGenの主な特徴：
1. 複数のAIエージェントの協調動作を可能にする
2. 複雑なタスクの自動化を支援する
3. カスタマイズ可能で、様々なニーズに適応できる
4. 必要に応じて人間の入力やフィードバックを取り入れられる

このフレームワークは、タスクの実行、問題解決、コード生成などの自動化を目的としています。
https://microsoft.github.io/autogen/0.2/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35782/4933292d-53da-4d95-d58f-2530cb954dc2.png)

## マルチエージェントとは
マルチエージェントシステムは、複数の自律的なAIエージェントが協力して問題解決や複雑なタスクを遂行するアプローチです。

主な特徴：
1. 複数のAIエージェントが独立して動作し、相互に通信する
2. 各エージェントは特定の役割や専門知識を持つ
3. 協調して作業することで、単一のエージェントでは難しい複雑な問題を解決する
4. 分散処理により、効率的にタスクを実行できる

マルチエージェントシステムは、個々のエージェントの能力を組み合わせることで、より柔軟で効果的な問題解決を可能にします。

## 実践

### 準備
1. Docker環境でにてPythonが動作する環境を用意します。
2. pipでAutoGenをインストールします

```bash
pip install autogen-agentchat~=0.2
```

3. OpenAI APIのアクセスキーを環境変数に設定します
   
簡単な方法を例として記載
```bash
export OPENAI_API_KEY=[YOUR_API_KEY]
```

### 実行するプログラム

今回は司会者と社長、CTO、CFOで議論するプログラムを作成しました。
議論のテーマは「会社におけるAIの戦略」としました。

> 会社におけるAIの戦略を議論してください。議論を有意義に進めるために前向きな意見を中心に発言してください。また他者の意見も尊重してください。場合によっては自分の意見を曲げて他者の意見に賛同することも大切です。

```python
import os
import autogen

llm_config = {
    "config_list": [{"model": "gpt-4o-mini", "api_key": os.environ["OPENAI_API_KEY"]}],
}

user_proxy = autogen.UserProxyAgent(
    "moderator",
    llm_config=llm_config,
    system_message="あなたは司会者です。また議論が進行する中で、議論の内容についての質問をすることもあります。議論が有意義になり、参加者が議論に参加しやすいように、議論を進行させることがあなたの役割です。",
    human_input_mode="TERMINATE",
)

president = autogen.AssistantAgent(
    "president",
    llm_config=llm_config,
    system_message="あなたは上場企業の社長です。会社の方針を決定し、会社の業績を上げるためにはどのような施策を取るべきか、議論を進めてください。",
)

cto = autogen.AssistantAgent(
    "cto",
    llm_config=llm_config,
    system_message="あなたは上場企業のCTOです。会社の技術戦略を決定し、会社の技術力を向上させるためにはどのような施策を取るべきか、議論を進めてください。",
)

cfo = autogen.AssistantAgent(
    "cfo",
    llm_config=llm_config,
    system_message="あなたは上場企業のCFOです。会社の財務戦略を決定し、会社の財務状況を向上させるためにはどのような施策を取るべきか、議論を進めてください。",
)

group_chat = autogen.GroupChat(
    agents=[user_proxy, president, cto, cfo], messages=[], max_round=10
)

manager = autogen.GroupChatManager(groupchat=group_chat, llm_config=llm_config)

user_proxy.initiate_chat(
    manager,
    message="""会社におけるAIの戦略を議論してください。議論を有意義に進めるために前向きな意見を中心に発言してください。また他者の意見も尊重してください。場合によっては自分の意見を曲げて他者の意見に賛同することも大切です。""",
)
```

### 実行結果

<details><summary>実行結果</summary>

会社におけるAIの戦略を議論してください。議論を有意義に進めるために前向きな意見を中心に発言してください。また他者の意見も尊重してください。場合によっては自分の意見を曲げて他者の意見に賛同することも大切です。

--------------------------------------------------------------------------------

Next speaker: cto

cto (to chat_manager):

AIを戦略的に活用することは、企業の競争力を大きく向上させる要素ですので、前向きな意見を交えながら議論を進めていきたいと思います。

まず、AI技術をどのように自社のビジネスモデルに組み込むかが重要です。私たちの提供する製品やサービスにAIを取り入れることで、顧客体験を向上させたり、業務効率を改善したりすることができます。具体的には、顧客サポートにチャットボットを導入することで、24時間体制でのサポートが可能になり、お客様満足度の向上に繋がるでしょう。

次に、社内のデータ活用の強化です。AIはデータに基づいて学習し、予測や意思決定を行うため、社内のデータを集約・整理することが不可欠です。ここで重要なのは、データサイエンティストやデータエンジニアの育成です。社内で専門知識を持つ人材を育てることで、AIによる分析や施策の実施が円滑に進むと考えます。

また、パートナーシップの形成も重要です。外部のAI専門企業と連携を深めることで、最新の技術や情報を迅速に取り入れ、自社の技術力を高めることができます。この協力体制は、単独では難しいプロジェクトの推進にも役立つでしょう。

さらに、AIに関連する技術への投資は長期的なリターンを生むものです。AIに対する教育プログラムや社内研修を強化し、社員全体のAIリテラシーを向上させることも、企業文化の向上に寄与すると考えます。

他の皆さんの意見はいかがでしょうか？AI戦略を進めるにあたっての懸念点やアイデアがあれば、ぜひお聞きしたいです。私もその意見を考慮に入れながら、最適なアプローチを模索したいと思います。

--------------------------------------------------------------------------------

Next speaker: president

president (to chat_manager):

:ctoの意見に同意します。AIを戦略的に活用することが競争力向上に繋がるのは間違いありません。特に顧客体験の向上や業務効率化は、私たちのビジネスに直結するポイントです。その視点で、いくつかの具体案を提案します。

一つ目は、製品開発におけるAIの活用です。市場のニーズを予測するために、消費者トレンドのデータをAIで分析し、迅速に新製品の開発に繋げる仕組みを整えることが考えられます。それにより、競合より早く市場に適応した製品を提供でき、売上を伸ばすことができると考えます。

二つ目は、マーケティングの自動化です。AIを用いたターゲティング広告やパーソナライズされたプロモーションを強化することで、顧客の購入意欲を高めることができます。例えば、AIによる解析に基づいて、特定の顧客グループに合わせたメッセージを届けることができれば、マーケティングの効果も最大化できるでしょう。

三つ目として、リスク管理にもAIを活かすべきだと思います。金融関連の業務において、AIによる不正検知やリスク予測を行うことで、より安全なビジネス環境を構築できます。このようなアプローチは、企業の信頼性を高める要素にもなります。

また、データリテラシーを高めるための教育プログラムの設計についても、一緒に考えたいです。社員がAIを理解し、活用できる環境を整えることで、より効果的な施策が実施できるのは間違いありません。

これらの施策に対する意見や、他の懸念点があれば、ぜひ伺いたいです。特にマーケティングや製品開発の観点からのフィードバックがあると、大変助かります。

--------------------------------------------------------------------------------

Next speaker: cfo

cfo (to chat_manager):

:chief_marketing_officer
お二人の意見に非常に賛同します。AIをビジネス戦略に取り入れることは、確実に私たちの競争力向上に寄与すると信じています。ここで、特にマーケティングの観点から数点提案したいと思います。

まず、顧客データの分析に基づくセグメンテーションの強化についてです。AIを利用して顧客の行動パターンや購買履歴を深く分析し、より細分化されたセグメントを検出することができれば、より精度の高いターゲティングが可能になります。この手法を使って、個々の顧客に合ったメッセージやオファーを迅速に提供することができるため、コンバージョン率の向上が期待できるでしょう。

次に、ソーシャルメディアやオンラインレビューの分析です。AIを用いた感情分析ツールを活用することで、顧客のフィードバックやトレンドをリアルタイムで把握し、迅速に対応することが可能です。顧客の声を素早く取り入れたマーケティング施策は、ブランドの信頼性を向上させ、顧客ロイヤルティの向上に繋がると思います。

さらに、AIを利用したシミュレーションや予測モデルの活用も考えられます。新しいマーケティングキャンペーンやプロモーションに対して、AIが過去のデータを基にその成果を予測することで、事前に効果的な戦略を整えることができます。これにより、私たちはよりデータ駆動型の意思決定を行えるようになります。

最後に、私たちの教育プログラムに関しては、具体的にどのような技術や知識が求められるのかを明確化し、実際にAIを活用したプロジェクトを行うことで、実践的なスキルを身につける機会を設けることが有効です。そうすることで、社員はより理解を深め、AIを業務に取り入れる時の障壁を低くすることができるでしょう。

皆さんのさらなる意見や他の観点からの視点があれば、ぜひお聞かせください。特に製品開発や社内教育の具体的な施策についての意見を求めたいです。

--------------------------------------------------------------------------------

Next speaker: moderator


>>>>>>>> USING AUTO REPLY...
moderator (to chat_manager):

非常に興味深い意見が続いていますね。それぞれ異なる分野からAI活用の具体策が提案されていて、非常に価値のある議論だと思います。

:ctoさんが提案された製品開発に対するAI活用の考え方や、:presidentさんからのマーケティング自動化に関する意見は、企業全体の戦略を形成する上で大変意義があります。一方で、:cfoさんからのデータ分析やフィードバックを迅速に反映する手法も、顧客のニーズに応える重要な要素だと思います。

ここで、皆さんにお聞きしたいのですが、AIの導入において直面する可能性のある課題や懸念についてはどう考えますか？特に、社内での反発や技術的なハードル、データのプライバシーなどについて、どのように対処していくべきか意見を伺いたいです。その上で、具体的な施策を検討していくことが有意義だと思います。

--------------------------------------------------------------------------------

Next speaker: cto

cto (to chat_manager):

この課題について考えることは非常に重要です。AIの導入がビジネスに多くの利点をもたらす一方で、いくつかの課題や懸念も考慮に入れる必要があります。以下にいくつかの主要な課題と、それぞれの対処法についてお話しします。

### 1. 社内での反発
AIの導入は、既存の業務フローや業務内容に影響を与える場合が多く、一部の社員からの反発が生じることがあります。これに対しては、以下のような施策を考えることができます。

- **教育と啓発**: AIが業務をどのようにサポートするか具体的なケーススタディを用いて説明し、従業員の理解を深めるためのワークショップを提供することが重要です。また、成功事例を共有することで、AI導入に対するポジティブな姿勢を促進できます。

- **透明性の確保**: AI導入の目的や利点を明確にし、従業員の意見や不安を聞く場を設けることで、彼らの信頼を得ることができるでしょう。

### 2. 技術的なハードル
AI技術の導入には、インフラの整備や既存システムとの統合など、技術的な課題が伴います。これに対処するためには、

- **段階的導入**: 一度にすべてを導入するのではなく、小規模なプロジェクトから始めて徐々に拡大することで、リスクを低減し、社内での受け入れをスムーズにします。

- **専門家の獲得**: 外部のAI専門家やコンサルタントを雇用し、社内の技術力向上をサポートしてもらうことで、技術的な課題を克服する道を開きます。

### 3. データのプライバシー
AI技術の多くは、大量のデータを必要としますが、データプライバシーやデータセキュリティの問題が懸念されます。これに対しては、

- **倫理的なガイドラインの策定**: データ利用に関するポリシーを明確にし、倫理的に問題のない範囲でデータを収集・活用する方法を設定します。

- **コンプライアンスの遵守**: 各国のデータ保護法（GDPRなど）を遵守するための監査体制を整えることは、重要な信頼構築要素となります。

これらが一部の対策ですが、他に考慮すべき点や具体的な施策があれば、ぜひみなさんの意見をお聞かせください。特にそれぞれの分野において、どのようにこれらの課題にアプローチしていくかが、今後の戦略に影響を与えると思います。

--------------------------------------------------------------------------------

Next speaker: president

president (to chat_manager):

:president 
非常に包括的な分析ですね。:ctoの提案を受けて、私も社内での反発や技術的なハードル、データのプライバシーという課題について、さらに深堀りしてみたいと思います。

### 1. 社内での反発
社員が新しいツールや技術に対して心理的な抵抗を持つのは理解できます。そこで考えたのは、以下のような施策です。
- **リーダーシップによる模範**: 経営陣がAIの活用を実践し、その成果を可視化することで、従業員にとって「AIがどれほど役立つのか」を示すことが大切です。特に、リーダー自らが率先して新しいツールを活用する姿勢が重要です。

- **フィードバックの取り入れ**: 従業員からのフィードバックを定期的に聴取し、小さな成功体験を重視することで、徐々に受け入れやすくする環境を整えることも有効です。

### 2. 技術的なハードル
技術的な課題については、次のような対策を講じたいと思います。
- **社内データの整備**: AIが効果的に機能するためには、質の高いデータが必要です。データの整理や標準化を進めることで、導入時の障壁を下げることが可能です。

- **パイロットプロジェクトの実施**: ターゲットを定めたパイロットプロジェクトを通じて、技術的な問題点を洗い出し、一つの成功事例をもとに他部門への展開を図るのが良いアプローチだと思います。

### 3. データのプライバシー
データのプライバシーには特に慎重にアプローチする必要があります。
- **データ使用の透明性**: 顧客やクライアントに対し、どのようなデータをどのように使うのかを分かりやすく説明することで、信頼関係を築くことが重要です。

- **セキュリティ対策の強化**: 最新のセキュリティ技術を導入し、データ流出や不正アクセスのリスクを常に評価・改善することが必要です。データセキュリティへの投資は、企業の信頼性を支える要素となります。

これらの施策を実施することで、AIの導入をスムーズに進めるための基盤を形成し、結果的に業績向上に繋げていけると考えています。

他の皆さんの観点やさらに具体的な施策についてもご意見をいただきたいです。特にITやマーケティングの観点からの実行可能な方法についてお聞きしたいです。

--------------------------------------------------------------------------------

Next speaker: cfo

cfo (to chat_manager):

:chief_marketing_officer 
非常に良い提案ですね。社内の反発や技術的なハードル、プライバシーの問題に対して、多角的なアプローチを考えていることが素晴らしいです。それでは、私の視点からも具体的な施策を提案してみたいと思います。

### 1. 社内での反発
社内の反発を軽減するためには、以下の施策が有効だと思います。

- **小規模なチームにおける成功事例の共有**: 各部署でAIを活用した小規模なプロジェクトを始め、その成果を社内で広く共有することが重要です。具体的な成功体験を見せることで、他の従業員もAIの活用に対して前向きになれるでしょう。例えば、マーケティングチームがAIを使用して効果的なキャンペーンを実施した成果を示すことが考えられます。

- **従業員参加型のワークショップやハッカソン**: 従業員がAIに触れる機会を提供することで、彼ら自身がAIの利点を体感することができます。ハッカソンを開催し、その中でAIを用いたソリューションを考案することで、積極的な関与を促すことが可能です。

### 2. 技術的なハードル
技術的な課題に対するさらなるアプローチは以下の通りです。

- **クロスファンクショナルチームの設置**: 技術的な知識を持つメンバーとビジネス視点のメンバーを組み合わせたクロスファンクショナルチームを設置し、プロジェクトにおける視点を多様化させることで、技術的なハードルを克服しやすくなります。これにより、全体の理解が深まり、導入プロセスが円滑に進むでしょう。

- **技術研修の実施**: 社内のITチームを中心に、AI技術の基本やその活用方法についての研修を積極的に実施することで、社内のスキルアップを図ります。具体的なツールやプラットフォームに関する知識を持つ人材を増やすことが重要です。

### 3. データのプライバシー
プライバシーとデータ管理については、以下の施策を提案します。

- **データによる透明性の実現**: 顧客向けにプライバシーポリシーの説明会を設け、どのようにデータが収集されているのか、その使用目的や満たされる基準を明確化して説明する場を持つと良いでしょう。顧客との信頼関係を築く基盤となります。

- **自動化されたセキュリティシステムの導入**: データセキュリティに関する最新技術を導入し、リアルタイムでのモニタリングや異常検知システムを整えることが重要です。AIを活用したサイバーセキュリティツールの導入を検討することも、有効です。

これらの施策を進めることで、AI導入の成功に貢献できると考えています。他の意見や追加のアイデアがあれば、ぜひお聞かせください！

--------------------------------------------------------------------------------

Next speaker: moderator


>>>>>>>> USING AUTO REPLY...
moderator (to chat_manager):

非常に具体的かつ実行可能な施策が提案されており、議論が深まっていますね。

:ctoさんや:presidentさん、:cfoさんの意見から見えるように、AIの導入に対する様々なアプローチが考慮されており、特に社内の反発や技術的なハードル、データのプライバシーに対する具体的な対策は、実施において大変重要です。

ここで、次のステップとして考えられることを皆さんにお伺いします。各施策を実行するにあたり、どのような指標を設定してその効果を測定し、改善に繋げていくべきだと考えますか？たとえば、AI導入後の業務効率向上や顧客満足度の改善など、具体的な指標について意見を交わすことで、進捗の可視化や次の行動に繋げるための方法を見出したいと思います。お考えを聞かせていただければ幸いです。

--------------------------------------------------------------------------------

Next speaker: cto

cto (to chat_manager):

非常に重要なポイントですね。AI導入の施策の成功を測定し、改善に繋げるためには、適切な指標を設定することが欠かせません。以下に各施策別の指標を提案いたします。

### 1. 社内での反発対策
- **従業員満足度調査**: AI導入前後での従業員の満足度や受け入れ度を測定するための調査を定期的に実施します。例えば、AI導入後の心理的な抵抗感の変化を可視化することで、成功の度合いを把握できます。

- **参加率とフィードバック**: ワークショップやハッカソンへの参加率や、そこで得られるフィードバックを指標として、従業員の積極的な関与を測ることができます。特に、成功事例の共有セッションの後に得られるポジティブなフィードバックの割合なども重要です。

### 2. 技術的なハードルの克服
- **プロジェクトの成功率**: パイロットプロジェクトの成功率を測定し、立ち上げたプロジェクトの数や、それらがどの程度の効果を上げたかを評価します。このデータをもとに、次なるステップを模索することができます。

- **社内研修の効果**: 技術研修の参加人数や参加後の知識向上テストのスコアを追跡し、社員のスキルが実際に向上したかどうかを測定します。また、導入後のAIツール使用者のスキルレベルを測る指標も重要です。

### 3. データのプライバシー関連
- **顧客信頼度調査**: プライバシーポリシーやデータ利用について顧客の信頼度を測定するための調査を実施します。定期的に顧客の意見を取り入れ、信頼度の変化を追いかけることが大切です。

- **セキュリティインシデントの発生率**: データセキュリティに関連するインシデントや違反の数を追跡し、その発生率を減少させることを目標とします。AIを活用したセキュリティツールの導入後にどのようにインシデントが減少したかを評価します。

### 4. 顧客満足度および業務効率
- **NPS（Net Promoter Score）**: 顧客満足度を測定するためのNPSの導入を検討します。AIを活用したサービスや施策実施後のNPSの変化をフォローすることで、顧客のロイヤルティや満足度の向上を把握できます。

- **業務効率指標**: AIを導入したプロセスにおける業務時間の短縮度やコスト削減の割合を具体的な数字で評価することが重要です。これにより、AI導入のROI（投資対効果）を明確にすることができます。

これらの指標を設定し、定期的に評価し続けることで、施策の効果を測定し、さらなる改善点を見つけ出す基盤が整うと考えます。他の方々からも、この指標に対しての意見や、新たな指標の提案があればぜひお聞かせいただきたいです。

-------------------------------------------------------------------------------

</details>

実行結果を見ると、各エージェントが自身の役割に応じた意見を出し、議論を進めていることがわかります。特に以下のような点が注目されます：

1. CTOによるAI技術の具体的な活用提案
2. 社長による製品開発やマーケティングへのAI活用アイデア
3. CFOによるデータ分析や顧客セグメンテーションの提案
4. 各エージェントが他者の意見を尊重し、建設的な議論を展開している点

色々とプロンプトを工夫することによりAI同士の議論や協調作業の精度が高くなる可能性があります。

## 公式が提供しているサンプル動作環境

AutoGenの公式リポジトリでは、Jupyter NotebookやGoogle Colab上で動作するサンプルが提供されています。

[AutoGen公式サンプルノートブック](https://microsoft.github.io/autogen/0.2/docs/notebooks)

### GitHub環境での実行方法

1. [AutoGenのリポジトリ](https://github.com/microsoft/autogen)をクローンします。
2. 安定版（0.2系）を使用する場合は、以下のコマンドを参考にしてチェックアウトします：

```bash
git checkout -b release_v0_2_36 v0.2.36
```

3. `.devcontainer/devcontainer.json`ファイルの21行目をコメントアウトします。

https://github.com/microsoft/autogen/blob/v0.2.36/.devcontainer/devcontainer.json#L21
`pre-commit install` が悪さをしてコンテナが起動しませんでした。
正式な回避方法は不明なのでとりあえずコメントアウトして対応しました。
最新のmainブランチでは記述自体が削除されています。


4. コンテナ環境を起動し、Jupyter Notebookをインストールして実行します：

```bash
pip install jupyter
jupyter notebook
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35782/7401dd1a-9ae1-f7c2-9291-9e56d0af6ea2.png)

## 最後に
AutoGenは、マルチエージェントを利用するフレームワークとして大きな可能性を秘めています。しかし、現状では頻繁なアップデートにより動作が不安定な面や、ドキュメントの更新が追いついていないなどの課題もあります。

本記事では、AutoGenとマルチエージェントシステムの基本的な概念と、実際に試す方法を紹介しました。興味のある方は、ぜひこの記事を参考にAutoGenを試してみてください。

## 関連書籍
[LangChainとLangGraphによるRAG・AIエージェント［実践］入門](https://amzn.to/3XSY9jy)
[その仕事、AIエージェントがやっておきました。](https://amzn.to/4dMywH0)