マルチAIエージェントと最近の取り組み
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 1
自己紹介
名前:せっかくだから
出身地:(生まれも育ちも)神奈川県
ITエンジニア歴:8年(最近は技術検証やDX推進がメイン
タスク)
高校は電気系の工業高校、大学は数学科出身
趣味:マラソン、野球観戦、旅行、サウナ
マルチAIエージェントと最近の取り組み
※画像は東北・みやぎ復興マラソン2018完走直後に撮ったものです。 2
アジェンダとゴール
1. マルチAIエージェントとは?
2. マルチAIエージェント界隈の最近の動向
3. エージェントのコミュニケーション設計・制御からのアプローチ
4. プログラミングフレームワークからのアプローチとサンプルコード
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 3
マルチAIエージェントとは?
ざっくりいうと・・・
複数のAI同士が協調や競争を行い、
タスクを達成するための仕組み。
WebResercher役
依頼例
⼈⼯知能に関するニュースを調査して︕
Webから情報を収集
します︕
Writer役
調査報告書を書きます︕
Reviewer役
報告書をレビューします︕
連係
連係
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 4
マルチAIエージェント界隈の最近の動向
研究の方向性としては、おおざっぱに分けると2つ!
1. コミュニケーション方式からアプローチ
2. プログラミングフレームワークからのアプローチ
マルチAIエージェントの
最近の動向
プログラミングフレームワーク
マルチAIエージェントが実装しやすくなる枠組み
コミュニケーション⽅式
AIエージェント同⼠のコミュニケーション⽅法・グループ体制
🦜🕸
AutoGen LangGraph crewAI
ChatDev AgentVerse ReConcile
研究事例
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 5
コミュニケーション方式からアプローチ
AI同士のコミュニケーション構造を工夫することで、マルチAIエージェントのタスク
達成を目指す研究が進んでいる。
各エージェントの役割の設定
エージェント間の情報共有ルールの設定
評価の設定
→コミュニケーション方式を工夫して、マルチAIエージェントの精度を上げるの研究
を紹介する。
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 6
ChatDev マルチAIエージェントから構成さ
れたソフトウェア開発会社
(以下のエージェントから構成)
CEO
CTO
Programmer
Tester
Desiner
CPO
エージェントが、それぞれの役割
を果たし、ソフトウェア開発を行
う。
マルチAIエージェントと最近の取り組み
引用:Experiential Co-Learning of Software-Developing Agents https://arxiv.org/abs/2312.17025 7
AgentVerse マルチAIエージェントでPDCA的
なサイクルを回し、タスクを解決
していく仕組み
Expert Recruitment (各エージ
ェントの役割を決定)
Collaborative Decision-
making (エージェント同士の
意思決定)
Action Execution (意思決定に
基づいたタスクの実行)
Evaluation (タスクの評価と次
のサイクルへの改善提案)
マルチAIエージェントと最近の取り組み
引用:AgentVerse: Facilitating Multi-Agent Collaboration and Exploring Emergent Behaviors https://arxiv.org/abs/2308.10848 8
RECONCILE それぞれが異なるLLM(GPT、
Genimi、Claude等)を持つエージ
ェントが討論して、最終的に回答
を出す仕組み
質問に対して、エージェントは以
下を生成
回答本文
信頼度(%で表現)
他のエージェントの回答と信頼度
をもとに、回答の修正を繰り替え
し、1つの回答を出す。
マルチAIエージェントと最近の取り組み
引用:ReConcile: Round-Table Conference Improves Reasoning via Consensus among Diverse LLMs https://arxiv.org/abs/2309.13007 9
プログラミングフレームワークからのアプローチ
マルチAIエージェントの実装が容易になるようなプログラミングフレームワークの開
発が進んでいる。
代表的なフレームワーク(2024/2時点 発表者調べ)
AutoGen
LangGraph
crewAI
→今回はAutoGenのサンプルコードを紹介する。
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 10
AutoGen
Microsoftが公開した、マルチAIエ
ージェントの実装を容易にするた
めのフレームワーク
プロンプト(依頼文)で、エージ
ェントの役割や情報共有ルールを
設定できる。
マルチAIエージェントと最近の取り組み
参照:AutoGen https://microsoft.github.io/autogen/ 11
サンプルコードについて 実装したソースコードは発表者の
GitHubで公開中!
ざっくりした処理の流れ
設定の読み込み
エージェントの定義
グループの定義とタスクの依
頼
サンプルコードでは、
AIのニュースを調査し、
markdown形式の調査報告書を作
成するタスクを実施。
マルチAIエージェントと最近の取り組み
発表者のGitHub https://github.com/Combat-Travor/try_autogen/blob/main/try_createreport.py 12
サンプルコード(設定)
import autogen
# 設定の読み込み
config_list = autogen.config_list_from_json(
"OAI_CONFIG_LIST",
filter_dict={
"model": "gpt-4-0125-preview",
}
)
llm_config = {
"config_list": config_list,
"timeout": 100,
}
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 13
サンプルコード(エージェントの定義)
# UserProxy(ユーザの代理役)
user_proxy = autogen.UserProxyAgent(
name="UserProxy",
llm_config=llm_config,
system_message="""あなたは、ユーザとの連絡窓口です。ユーザの調査依頼に応じて、WebResearcher、Writer、Reviewerなどに指示を出します。
WebResearcher、Writer、Reviewerからの報告を受け取り、ユーザに回答を行うか、WebResearcher、Writer、Reviewerに別の指示を出します。
ユーザが[end]と入力したら、タスクを終了してください。
""",
# エージェントの会話に人間が介入するかどうかのモード
human_input_mode="TERMINATE",
# 必要に応じてプログラムを実行するために、code_execution_configを設定する。
code_execution_config={
"use_docker": False,
}
)
# WebResearcher
web_researcher = autogen.AssistantAgent(
name="WebResearcher",
llm_config=llm_config,
system_message="""あなたは、WebResearcherです。ユーザからの依頼に基づいて、Web上の情報を収集します。
収集した情報を元に、Writerに報告書の作成を依頼します。
またWebからデータを収集するために、必要に応じてプログラムコードを書いて、UserProxyにコードの実行を依頼してください。
"""
)
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 14
サンプルコード(Writer、Reviewerの定義)
# Writer
writer = autogen.AssistantAgent(
name="Writer",
llm_config=llm_config,
system_message="""あなたは、Writerです。WebResearcherからの情報を元に、ユーザへの報告書を作成します。
作成した報告書は、Reviewerにレビューを依頼して、レビュー結果に応じて修正してください。
""",
)
# Reviewer
reviewer = autogen.AssistantAgent(
name="Reviewer",
llm_config=llm_config,
system_message="あなたは、Reviewerです。Writerが作成した報告書を確認し、ユーザに提出します。",
)
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 15
サンプルコード(グループの定義とタスクの依頼)
# グループの定義
groupchat = autogen.GroupChat(
agents=[
user_proxy,
web_researcher,
writer,
reviewer
],
messages=[],
max_round=12
)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)
# マルチAIエージェントにタスクを依頼する。
user_proxy.initiate_chat(
manager,
message="""人工知能に関するニュースを調査し、以下の条件を満たすように、調査報告書を作成してください。
# 条件
- 調査報告書はmarkdown形式で記載してください。
- なぜそのニュースが注目されているかの解説を報告に含めてください。
- 高校生や老人など様々な人が理解できるように具体例等を挙げて、わかりやすく説明するように記載してください。
"""
)
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 16
実行の様子(動画)
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 17
最後に宣伝 (せっかくだから)CDLEのOSIRO
でもぜひ、情報交換しましょう!
(神奈川県民ではあるものの)
CDLE栃木では最新の技術の共有
会を開催中!
本日実行したサンプルコードは、
発表者のGitHub(左のQRコー
ド)で公開中です。
マルチAIエージェントと最近の取り組み
Presented by @せっかくだから 18

マルチAIエージェントと最近の取り組み Multi AI agent and Some recent research topics