オートゲンのネストされたチャット:より多くの応答性と動的なAIプロキシ相互作用を構築する
人工知能(AI)の進歩により、チャットボットが迅速に発展することができました。今日、AIエージェントの出現により、チャットボットは、従来の会話の制限をはるかに超えて、より複雑で階層化された相互作用を処理することができます。以前の記事「Autogenを使用したマルチエージェントチャットボットの構築」では、Autogenを使用したシーケンシャルチャットの概念を調査します。これにより、複数のエージェント間の構造化された回転通信が可能になります。これに基づいて、より複雑な機能、ネストされたチャットに移動します。 Autogenの強力なフレームワークを使用すると、ネストされた対話により、ロボットは固定順序に従うのではなく、スムーズな通信を維持できます。彼らは、単一の会話フローで他のツールを掘り下げ、中断を処理し、スムーズに回復することができます。この記事では、オートゲンにネストされたチャットを実装するように導き、レスポンシブで動的なプロキシインタラクションを作成する際の関連性を強調します。
まず、ネストされたチャットとは何かを理解しましょう。
循環会話に繰り返し関与するために2つのプロキシ会話が必要な3パーティのプロキシチャットを検討してください。これら2つのエージェント間のチャットをネストされたチャットに追加できます。この別々の会話を完了した後、エージェントはコンテキストをメインの会話に戻すことができます。
次の図は、ネストされたチャットの変換プロセスを示しています。
着信メッセージが条件をトリガーすると、メッセージはネストされたチャットに入ります。ネストされたチャットは、デュアルプロキシチャット、シーケンシャルチャット、またはその他のチャットにすることができます。ネストされたチャットのチャット結果は、メインの会話に送り返されます。
この記事では、ネストされたチャットを使用して、記事執筆システムを構築します。これを行うために、3つのエージェントを作成します。1つは記事の概要を書くために、もう1つはこのアウトラインから記事を書くために、もう1つは記事をレビューするためです。ライターとレビュアーに何度もお互いに話しかけることを望んでいるので、これら2人のエージェントをネストされたチャットに入れます。
さらに、ネットワーククエリツールにアクセスする許可を得て、プロファイルプロキシを提供します。
それでは、コードでこれをしましょう。
Autogen Proxyを構築する前に、必要なLLMに必要なAPIキーがあることを確認してください。この演習では、ネットワークを検索するためにTavilyも使用します。
必要なAPIキーに.ENVファイルをロードします。ここでは、OpenAIおよびTavily API Key()を使用します。
<code>from dotenv import load_dotenv load_dotenv('/home/santhosh/Projects/courses/Pinnacle/.env')</code>
config_listとして使用するLLMを定義します
<code>config_list = { "config_list": [{"model": "gpt-4o-mini", "temperature": 0.2}] }</code>
必要なキーストア
Autogen-AgentChat - 0.2.37
Tavily-Python - 0.5.0
それでは、実装を始めましょう。
user_proxyプロキシを定義します。これは、ツールも実行されます。次に、LLMを使用してアウトラインを定義して、記事の概要を生成します。
<code>from autogen import ConversableAgent user_proxy = ConversableAgent( name="User", llm_config=False, is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"], human_input_mode="TERMINATE") outline = ConversableAgent( name="Article_outline", system_message="""您是一位经验丰富的內容策略師,負責為指定主題的文章創建詳細的提綱。您的目標是將文章組織成邏輯部分,以便清晰有效地傳達主要思想。如有需要,請使用web_search工具。任務完成後返回“TERMINATE”。""", llm_config=config_list, silent=False, )</code>
Web_search関数を定義して、ネットワークを照会します。
<code>def web_search(query: str) -> str: tavily_client = TavilyClient() response = tavily_client.search(query, max_results=3, days=10, include_raw_content=True) return response['results']</code>
executor user_proxyを使用して、web_search関数をアウトラインプロキシに登録します。
執行者をuser_proxyに設定して、作家のエージェントに送信されたアウトラインを確認できるようにします。
<code>register_function( web_search, caller=outline, # 助手代理可以建议调用。 executor=user_proxy, # 用户代理可以执行调用。 name="web_search", # 默认情况下,函数名称用作工具名称。 description="搜索互联网以获取给定查询的结果", # 工具的描述。 )</code>
記事コンテンツを生成する1つのエージェントと、記事を確認し、改善の提案を提供する別のエージェントを定義します。
<code>writer = ConversableAgent( name="Article_Writer", system_message="""您是一位熟练的作家,负责根据给定的提纲创作一篇全面、引人入胜的文章。您的目标是遵循提纲中提供的结构,用经过充分研究、清晰且内容翔实的內容扩展每个部分。保持文章长度约为500字。如有需要,請使用web_search工具。任務完成後返回“TERMINATE”。""", llm_config=config_list, silent=False, ) reviewer = ConversableAgent( name="Article_Reviewer", system_message="""您是一位熟练的技术文章审阅者。审阅给定的文章,并提供建议以使文章更具吸引力和趣味性。""", llm_config=config_list, silent=False, )</code>
これで、両方のエージェントのネストされたチャットを登録できます。
<code>writer.register_nested_chats( trigger=user_proxy, chat_queue=[ { "sender": reviewer, "recipient": writer, "summary_method": "last_msg", "max_turns": 2, } ], )</code>
上記のコードでは、user_proxyがWriter Proxyにメッセージを送信すると、ネストされたチャットがトリガーされます。その後、ライターエージェントが記事を書き、レビュアーエージェントはMAX_TURNS(この場合は2回)に基づいて記事を複数回レビューします。最後に、ネストされたチャットの結果はユーザーエージェントに送り返されます。
すべてがセットアップされたので、チャットを始めましょう
<code>chat_results = user_proxy.initiate_chats( [{"recipient": outline, "message": "撰写一篇关于微软发布的Magentic-One代理系统的文章。", "summary_method": "last_msg", }, {"recipient": writer, "message": "这是文章提纲", "summary_method": "last_msg", }])</code>
ここでは、Magentic-One Agent Systemに関する記事を書きます。まず、user_proxyプロキシは、アウトラインプロキシとのチャットを開始し、Writer Proxyとのチャットを開始します。
これで、上記のコードの出力が次のようになります。
ご覧のとおり、user_proxyは最初に、記事の主題を説明するアウトラインプロキシにメッセージを送信します。これにより、ツールコールがトリガーされ、user_proxyがツールを実行します。これらの結果に基づいて、アウトラインエージェントはアウトラインを生成し、ライターエージェントに送信します。その後、上記のように、ライターエージェントとレビュアーエージェントの間のネストされたチャットは継続されます。
それでは、最終結果、つまりMagic-Oneに関する記事を印刷しましょう。
<code>print(chat_results[1].chat_history[-2]['content'])</code>
Autogenのネストされたチャットは、単一の会話プロセスで複雑なマルチタスクインタラクションを有効にすることにより、チャットボットの機能を強化します。ネストされたチャットにより、ボットは専用のチャットを個別に開始し、出力をシームレスに統合できます。この機能は、eコマースからヘルスケアまで、さまざまなアプリケーションに対する動的なターゲットを絞った応答をサポートしています。ネストされたチャットにより、Autogenはより応答性の高いコンテキスト対応AIシステムへの道を開きます。これにより、開発者はさまざまなユーザーのニーズを効果的に満たすことができる複雑なチャットボットを構築できます。
AIエージェントの詳細については、独占エージェントAI Pioneerプログラムをご覧ください!
Q1。 A. Autogenでのネストされたチャットにより、チャットボットはチャットプロセスで複数のサブコンバージョンを管理できます。多くの場合、特定の情報を取得するために他のエージェントまたはツールが含まれます。構造化された回転アプローチに続くシーケンシャルチャットとは異なり、ネストされたチャットにより、ボットは割り込みと並列タスクを処理し、その出力をメインの会話に統合できます。
Q2。 A.ネストされたチャットは、ボットがプロのエージェントにタスクを委任できるようにすることにより、カスタマーサポートを改善します。たとえば、eコマースでは、チャットボットが別のエージェントを参照して注文ステータスまたは製品情報を確認し、情報をシームレスに転送し、より速くより正確な応答を確保することができます。
Q3。 A.ネストされたチャットは、さまざまな業界に適用できます。銀行業界では、人事部門での専門的なサポートを提供しています。この柔軟性により、ネストされたチャットは、マルチタスクと詳細な情報処理が必要なあらゆる分野に適しています。
Q4。 A.はい、Autogenにネストされたチャットを実装するには、言語モデルやTavilyなどのWeb検索ツールなどの特定のAPIキーを使用してプロキシを構成する必要があります。さらに、各エージェントは、ネストされた会話をスムーズに実行するための適切なタスクとツールを定義する必要があります。
Q5。 A.はい、Autogenは、ネストされたチャットで各エージェントが発生したコストを追跡できます。チャット結果のcost
属性にアクセスすることにより、開発者はプロキシインタラクションに関連する支出を監視し、チャットボットのリソース利用と効率を最適化するのに役立ちます。
以上がAutogenを使用したマルチエージェントネストチャットを構築するための4つのステップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。