「オートジェンへの参入:マルチエージェントフレームワークの基礎を探索する」
「オートジェンへの道:マルチエージェントフレームワークの基礎への探求」
イントロダクション
「自動生成に飛び込む:マルチエージェントフレームワークの基礎を探る」というテーマでソフトウェア開発の未来へのスリリングな旅に出ましょう。OpenAIのChatGPTに続く専門領域であるLLMエージェントは、AIエージェントの開発を革新する前例のない急激な急増を経験しています。単調なタスクの自動化から、動的な意思決定の課題への取り組みまで、LLMエージェントはかつて不可能と思われていた領域の限界を押し広げています。LLMエージェントは、私たちが想像することができる未来の世界において、コンピュータが現実とシームレスに融合し、AIエージェントの重要性がますます高まる世界を思い浮かべてください。言葉やジェスチャーを使ってエージェントに指示を出し、彼らが優れた推論力と行動能力でタスクを実行する様子を想像してください。しかし、私たちはAIエージェントの革命の夜明けを迎えており、ますます複雑なタスクに取り組むエージェントを力づけるための新しいインフラストラクチャ、ツール、フレームワークが生まれる様子を目の当たりにしています。マルチエージェントチャットシステムのための最先端のフレームワークであるAutogenが、今回の探求の中心になります。
本記事では、革命の初期段階にあるAIエージェントの複雑さを解きほぐし、Autogenの能力を探求しながら、これらのインテリジェントな実体をどのように活かすかを発見していきます。
学習目標
- LLMエージェントとは何かを理解する
- Autogenとは何かを理解し、Autogenを使用してエージェントを構築する基礎を探る
- AutogenとOpenAI APIを使用してエージェントを構築する
- LLMエージェントの実世界での使用例を探索する
この記事はData Science Blogathonの一環として公開されました。
- このAI論文は、「サブセンテンスエンコーダーを紹介します:テキストの細かい意味表現のための対照的に学習されたコンテクスト埋め込みAIモデル」という意味です
- OpenAIのAPIとBubbleを使用した4つのアプリのアイデア
- 「アルトマンのスティーブ・ジョブズモーメントとしてのOpenAIのCEO」
LLMエージェントとは何か
通常の言語モデルは、翻訳や質問応答など、多くのことに長けています。しかし、その知識と能力には限界があります。それは、家を建てるための道具を持たない職人のようなものです。しかし、LLM(俳句言語モデル)は、必要なツールさえ与えられれば、推論や行動が可能であることが観察されています。ほとんどのLLMは世界の知識が限られていますが、プロンプティングを介してカスタムソースからの情報を補完することができます。
この目的を達成するには、2つの方法があります。検索付き生成(Retrieval Augmented Generation)とLLMエージェントです。RAGでは、モデルに情報をカスタムのハードコードパイプラインを通じて提供します。しかし、エージェントでは、LLMは推論に基づいて手元のツールを使います。たとえば、GPT-4にSerperツールを組み合わせれば、インターネットを検索して回答することができます。また、Yahoo Financeツールにアクセスできる場合は、株式のパフォーマンスを取得して分析することもできます。つまり、LLM、ツール、推論および行動のためのフレームワークの組み合わせがAIエージェントの特徴です。
LLMエージェントの構築には、プラットフォームやツールが急速に増えてきています。Autogenもそのようなツールの1つです。そのため、Autogenが何であり、それを使用してLLMエージェントを作成する方法を理解しましょう。
Autogenとは何か
Autogenは、マイクロソフトのオープンソースツールで、堅牢なマルチエージェントアプリケーションを構築するためのツールです。複数のエージェント間のコミュニケーションを重視して、ゼロから設計されています。このツールを使用して、複数のエージェントが提供された問題の解決策を見つけるためにお互いに会話するLLMアプリケーションを作成することができます。エージェントは高度にカスタマイズ可能であり、特定のタスクを実行するために彼らをガイドすることができます。また、Langchainツールエコシステムとも非常に統合されており、既存のLangchainツールを活用してエージェントを補完することができます。
タスクを達成するために、Autogenはさまざまなタイプのエージェントを提供しています。例えば、
- アシスタントエージェント:コーディング、レビューなどのタスクを達成する責任を持つエージェントです。
- ユーザープロキシエージェント:その名前の通り、これらのエージェントはユーザーの代わりに行動します。人間がエージェントループに参加し、会話をガイドするためのものです。
- 教育可能エージェント:このエージェントは高度に教育可能に設定されています。LLMには存在しない具体的な情報をエージェントに与えることができます。
ほとんどのユースケースでは、アシスタントエージェントとユーザープロキシエージェントのみが必要です。それでは、Autogenでエージェントを設定する方法を見てみましょう。RetrieveAssistantAgentとRetrieveUserProxyエージェントのような他のエージェントも、RAGに対して設定されています。
以下は、典型的なマルチエージェントのワークフローのダイアグラムです。
Autogenを使用してエージェントをビルドする
さあ、Autogenエージェントを設定してみましょう。しかし、その前に、環境をセットアップしましょう。ユースケースにコードの実行が必要な場合、エージェントは現在の環境でそれを実行します。公式のドキュメントによれば、それはコンテナ内で行うのが最適です。すぐに始めるために、GitHub codespacesを使用できます。 「pyautogen」をインストールしてください。
現時点では、AutogenはOpenAIモデルのみをサポートしています。エージェントを効果的に使用するために、モデルを設定する必要があります。必要なものを使用するために、複数のOpenAIモデルを設定できます。モデルを設定するためのさまざまな方法がありますが、私たちはJSONファイルを定義します。
JSONファイル
#OAI_CONFIG_LIST[{"model": "gpt-4"、"api_key": "< your OpenAI API key here>"}、{"model": "gpt-4"、"api_key": "< your Azure OpenAI API key here>" 、"base_url": "< your Azure OpenAI API base here>" 、"api_type": "azure" 、"api_version": "2023-07-01-preview"}、{"model": "gpt-3.5-turbo"、"api_key": "< your OpenAI API key here>"}]
モデルのリストを定義します。
import autogenconfig_list = autogen.config_list_from_json("OAI_CONFIG_LIST"、filter_dict = { "model": { "gpt-3.5-turbo"} })
このメソッドはまず、環境変数でOAI_CONFIG_LISTを検索します。失敗した場合、現在のディレクトリのOAI_CONFIG_LIST Jsonファイルを検索します。 filter_dictは、パラメータに基づいてモデルをフィルタリングするためのものです。ここでは、モデルが設定されています。
LLMの構成
次に、LLMの構成を定義します。この例では、Pythonスクリプトを実行してシンプルなグラフのプロットタスクを実行するためにJupyter Notebookの関数ツールを使用します。
llm_config = { "functions": [ { "name": "python"、"description": "run cell in ipython and return the execution result."、"parameters": { "type": "object"、"properties": { "cell": { "type": "string"、"description": "Valid Python cell to execute。 "、} "、"required": [ "cell"]、} }、} ]、"config_list": config_list、"timeout": 120、}
IPythonノートブック内でPythonスクリプトを実行する関数を定義します。
from IPython import get_ipythondef exec_python(cell):ipython get_ipython()result = ipython.run_cell(cell)log = str(result.result)if result.error_before_exec is not None:log + = f“\ n {result.error_before_exec}” if result.error_in_exec is not None:log + = f“\ n {result.error_in_exec}” return log
アシスタントエージェントとユーザープロキシエージェントの使用
ほぼマルチエージェントシステムの構築が完了しました。前述のエージェントが不足しています。ここでは、アシスタントエージェントとユーザープロキシエージェントが必要です。これがこれらのエージェントを定義する方法です。
chatbot = autogen.AssistantAgent(name = "chatbot"、system_message = "プログラミングタスクでは、提供された関数だけを使用してください。\nタスクが終わったら、TERMINATEで返信してください。"、llm_config = llm_config、)#UserProxyAgentのインスタンスを作成する後user_proxy = autogen.UserProxyAgent(name = "user_proxy"、is_termination_msg = lambda x: x.get( "content"、 "")とx.get( "content"、 "")。\ rstrip().endswith( "TERMINATE") 、human_input_mode = "NEVER"、max_consecutive_auto_reply = 10、code_execution_config = { "work_dir": "coding" })。
human_input_modeパラメータを持つUserProxyAgentは、値に基づいてエージェントループに実際の人間を配置します。ALWAYSに設定すると、応答ごとに入力を要求します。TERMINATEに設定すると、実行の最後にのみ要求します。NEVERに設定すると、ユーザーからの入力を要求しません。
関数をユーザープロキシエージェントに登録します。
user_proxy.register_function( function_map={ "python": exec_python, })
さて、エージェントを実行します。
# 会話を開始するuser_proxy.initiate_chat( chatbot, message="sin波の曲線をプロットしてください",)
エージェントを実行すると、システム上で何が起こっているかについてのログが表示されます。
実行ログ
上記の実行ログでは、Assistantエージェント「chatbot」がコードを生成し、コードが実行され、潜在的なエラーが見つかります。ユーザープロキシはエラーをアシスタントに送り返し、再びソリューションコード(この場合はMatplotlibのインストール)を実行し、最後に最終コードを実行して出力を返します。
また、CriticやReviewerなどの他のAssistantエージェントを会話に追加することで、出力をより個人化することもできます。以下にその方法を示します。
critic = autogen.AssistantAgent( name="Critic", system_message="""Critic。あなたは、視覚化コードの品質を評価することにより、クリアな理論的根拠を提供しながら、1(悪い)から10(良い)のスコアを提供することにより、視覚化コードの品質を評価する能力が高い、役に立つアシスタントです。上記のクリティークに基づいて、コーダーに改善すべき具体的な行動リストを提案してください。""", llm_config=llm_config,)groupchat = autogen.GroupChat(agents=[user_proxy, coder, critic], messages=[], max_round=12)manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)user_proxy.initiate_chat(manager, message="逆正弦波の曲線をプロットしてください。-pi/2からpi/2の範囲で")
上記の実行では、クリティックがプロットの改善策を提案し、Assistantが適合するコードを生成しようとします。2つ以上のエージェントが必要な場合は、チャットマネージャを使用します。
この例では、GPT 3.5を使用しています。より複雑なコーディングや論理的なタスクには、GPT-4が推奨されます。GPT-4のような能力のあるモデルを使用することで、より少ないエージェントでより多くのことができます。また、GPT-3.5は時々ループに陥る傾向があります。そのため、深刻なアプリケーションにはGPT-4がより良い選択肢です。また、新しいタイプの実験的なEcoAssistantが開発中です(コード)。このエージェントは、高コストなモデル(GPT-4など)を使用することのコストを削減するために、モデルの階層を介してコミュニケーションを開始します。アウトプットを改善し、コストを削減するというアプローチの一つの重要な利点は、エージェントが単一のデータベースを共有しているため、より大きなモデルによるコードを後でより小さなモデルで取得できることです。
現実世界のユースケース
現実世界でのAIエージェントの範囲は広範です。多くの企業が既存のシステムにエージェントを導入し始めています。以下は、非常に有用なAIエージェントのユースケースのいくつかです。
- パーソナルエージェント: AIエージェントのもっとも重要な使用法の1つは、テキスト、音声、またはジェスチャーコマンドに基づいてタスクを遂行する電子デバイス上のJarvisのようなパーソナルアシスタントです。
- AIインストラクター: チャットモデルだけでは、限られたことしか達成できません。しかし、ツールを備えたAIエージェントなら、より多くのことが可能です。教育、法律、セラピーなど、様々な分野のAIインストラクターは、多くのユーザーにとって役立つことができます。
- ソフトウェアのUX: ソフトウェアのユーザーエクスペリエンスは、効率的なエージェントの実装によって大幅に向上することができます。AIエージェントは、音声コマンドに基づいて自動的に食事やタクシーの手配、ショッピングなどのタスクを達成します。
- 空間コンピューティング: AIエージェントは、従来のコンピュータが現実世界とシームレスに統合する空間コンピューティングの前兆となるでしょう。エージェントは、周囲のデータを処理して有用な情報を抽出し、複雑なタスクを実行することができます。
結論
AIエージェントは人気を集めています。今後、どのような形であれ、ほとんどのソフトウェアシステムに統合されることは疑いの余地がありません。これはエージェント開発の最初の段階であり、インターネットの1990年代と同様です。間もなく、新しい問題を解決する優れたエージェントが登場するでしょう。そして、Langchainのようなライブラリやツールも進化し続けるでしょう。
重要なポイント
- Autogenは、マイクロソフトが提供するオープンソースのマルチエージェントアプリケーションフレームワークです。
- Autogenを使用することで、複雑なタスクを解決するためのマルチエージェントシステムをシームレスに構築することができます。
- アシスタントエージェントやユーザープロキシエージェントなど、コード生成、テキスト生成などのタスクを実行するための機能を提供します。
- GPT-3.5などはテキスト生成などの基本的なことには使えますが、より複雑なコーディングタスクにはGPT-4のようなモデルが必要です。
よくある質問
この記事で使用されているメディアはAnalytics Vidhyaによる所有ではなく、著者の裁量によって使用されています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles