エージェント同士をタスク完了に向けて自律的に行動させるフレームワークが登場!
3つの要点
✔️ エージェント間の協調性を高めるための新たなフレームワークであるrole-playingを提案
✔️ role-playingの性能を検証するための、2つの大規模な対話データセットを作成
✔️ 本論文に用いられたエージェントの実装に伴うライブラリをオープンソース化
CAMEL: Communicative Agents for "Mind" Exploration of Large Scale Language Model Society
written by Guohao Li, Hasan Abed AI Kader Hammoud, Hani Itani, Dmitrii Khizbullin
(Submitted on 31 Mar 2023)
Comments: Published on arxiv.
Subjects: Artificial Intelligence(cs.AI); Computation and Language (cs.CL); Computers and Society (cs.CY); Machine Learning (cs.LG); Multiagent Systems(cs.MA)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
ChatGPTに代表されるチャットベースの大規模言語モデルの急速な進歩により、様々なタスクの解決において目覚ましい成果が得られている一方で、それらのタスク解決能力はエージェントを正しい方向に導くための人間の能力に大きく依存しており、ユーザーが自分の意図を適切かつ正確なプロンプトにする必要があります。
加えて、効果的なプロンプトを作成するためには、その分野の深い理解と専門知識が必要になることも多く、例えば、取引に関する専門知識がない人が、取引アプリケーションを開発するためにエージェントに指示するための適切なプロンプトを作成することは困難であると考えられます。
本稿では、こうした問題点を解決するために、role-playingと名付けられた新たなエージェントフレームワークを提案し、2つの大規模データセットを用いた実験によりその有効性を実証し、これらの実装に伴うライブラリをオープンソース化することで今後の研究のサポートに大きく貢献した論文について解説します。
Role-Playing Framework
本論文で提案するフレームワークであるrole-playingは、複数のコミュニケーションエージェントを自律的にタスク完了へと導くための新しいアプローチです。
このアプローチは、タスクが与えられた時にAIアシスタントとAIユーザーの2人が協力するロールプレイングによりタスクを解決するように設計されたアプローチになります。
例として、下図は「あるユーザーが株式市場向けの取引Botを開発する」というタスクが与えられた際のrole-playingの全体像を示しています。
この例では、ロールプレイングセッション開始時に、AIアシスタントとAIユーザーにそれぞれ、Python ProgrammerとStock Traderという役割が割り当てられており、AIユーザーはタスクプランナーとして適切なプランニングを行い、AIアシスタントはタスク実行者として計画されたプランを実行しながらAIユーザーに返答を返しています。
このように、role-playingはユーザーがエージェントに役割を割り当てるだけでエージェント同士が自動的にタスク完了に向けたプランに導くような構成になっていることがわかります。
加えて筆者達は、role-playingの実装に伴うライブラリをオープンソース化しており、これによってこれまで困難であったユーザーがそのタスクを実現するための専門知識を持っていないような場面において、誰にでも使用することができる有効なアプローチであると言えます。
Inception Prompting
通常の言語モデルとは異なり、本手法のプロンプトエンジニアリングはロールプレイングの最初のタスク指定とエージェントの役割の割り当てにのみ行われ、会話フェーズが始まると、AIアシスタントとAIユーザーは、タスクが完了するまで自動的にプロンプトを出し合います。
本論文では、このようなプロンプトエンジニアリングをInception Promptingと呼んでおり、Task Specifier Prompt・Assistant System Prompt・User System Promptの3つのプロンプトから構成されます。
例として、後述する会話データセットであるAI SocietyのロールプレイングのInception Promptingを図に示します。
Task Specifier Promptは、ロールプレイングセッションにおけるAIアシスタントとAIユーザーの役割に関する情報を含んでおり、これによりエージェントはアイデアを入力として受け取り、具体的なタスクを生成することができるようになっています。
Assistant System PromtとUser System Promptには、割り当てられたタスクや役割に関する情報・終了条件・望ましくない行動を避けるための制約や要件が含まれており、エージェント間の自律的な協力を実現する上で非常に重要な役割を果たしていることがわかります。
Experiments
本論文では、検証を行うにあたって大規模な会話データを収集し、それを基にCAMEL AI SocietyとCAMEL Codeと名付けた2つのデータセットを作成し、それらの分析を行いました。
その後、2つのgpt-3.5-turboエージェントを用いてrole-playingによるAIアシスタントとAIユーザーのシミュレーションによる検証を行い、そこで発見された課題について考察しました。
CAMEL AI Society
CAMEL AI Societyを作成するために、次の一連のステップによるアプローチを実行しました。
- はじめに、エージェントにAIアシスタントとAIユーザーの役割の選択肢を提示させる(これは、エージェントにこれらの役割を引き出すように設計された特定のプロンプトを与えることで実行する)
- 次に、エージェントに生成されたAIアシスタントとAIユーザーの役割のロールプレイングによって解決できる可能性のあるタスクの範囲を生成するように指示する
- 解決可能なタスクの範囲を生成した後、エージェントに渡されたTask Specifier Promptを使用してタスクをより具体化する
この一連のステップのプロンプトの要約は下図のようになります。
本プロンプトにより、50種類のAIアシスタントとAIユーザー、10個のタスクを生成し、合計で25000セットの会話を生成しました。
生成されたAIアシスタントとAIユーザーの役割は下図のようになりました。
CAMEL Code
CAMEL Codeを生成するために、CAMEL AI Societyと同様のアプローチを用いて、次のアプローチを実行しました。
- はじめに、エージェントにプログラミング言語とドメインのリストを提示させる
- 次に、エージェントに特定のプログラミング言語の専門家であるプログラマーが、特定のドメインで働く人と協力して解決できる可能性のあるタスクのセットを生成するように指示する
- 生成したタスクのセットをTask Specifier Promptを使用してより具体化する
本プロンプトにより、20種類のプログラミング言語と50種類のドメイン、そしてプログラミング言語とドメインの組み合わせごとに50個のタスクを生成し、合計で50000セットの会話を生成しました。
Challenges and Observations
前述したデータセットを用いて、role-playingによるシミュレーションを行なった結果、下図に示される4つの課題が発見されました。
4つの課題は以下の通りです。
- Role Flipping: 会話中にAIアシスタントとAIユーザーが入れ替わってしまう
- Assistant Repeats Instruction: アシスタントが支持を繰り返してしまう
- Flake Reply: AIアシスタントが「I will...」のような曖昧な返答をしてしまう
- Infinite Conversation: AIアシスタントとAIユーザーが無意味な会話の無限ループに入ってしまう
これらの課題の解決がより効果的なAIシステムの開発の手掛かりになることが考えられ、本検証により貴重な洞察を得ることができました。
まとめ
いかがだったでしょうか。今回は、role-playingと名付けられた新たなエージェントフレームワークを提案し、2つの大規模データセットを用いた実験によりその有効性を実証し、これらの実装に伴うライブラリをオープンソース化することで今後の研究のサポートに大きく貢献した論文について解説しました。
本論文の内容は、大規模言語モデルやコミュニケーションエージェントの分野に貴重な洞察を与える一方で、role-playingが生成するタスクは大規模かつ多様であるため、タスク完了能力を評価するために多くのドメイン知識が必要になるなどの課題もあるため、今後の進展に注目です。
今回紹介したプロンプトやデータセットの詳細は本論文に載っていますので、興味がある方は参照してみてください。
この記事に関するカテゴリー