サンプルプログラムの解説
このプログラムは、AutoGen AgentChatでユーザーとAIエージェントによるグループチャットを実行し、会話履歴や終了状態をstateオブジェクトとして取得する一連の流れを示す。状態管理により、履歴確認や終了条件の追跡、運用時のデバッグや再開が容易になる点が特徴。
1. 必要なモジュールのインポート
まず、AutoGenのエージェントとグループチャット機能、OpenAIのモデルクライアントなどをインポートします。
pythonCopyEditfrom autogen_agentchat.agents import UserProxyAgent, AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
2. モデルクライアントとエージェントの作成
ここではOpenAIのgpt-4モデルを利用し、UserProxyAgent(ユーザー入力担当)とAssistantAgent(AI担当)を用意します。
pythonCopyEditmodel_client = OpenAIChatCompletionClient(model="gpt-4")
user = UserProxyAgent("user", human_input_mode="NEVER")
assistant = AssistantAgent("assistant", model_client=model_client)
UserProxyAgentはユーザーの立場で会話に参加します(今回はhuman_input_mode=”NEVER”なので自動応答のみ)。AssistantAgentはOpenAIのAIモデルを利用したエージェントです。
3. チーム(グループチャット)の構築
ラウンドロビン方式(交互に応答)のグループチャットを設定します。
pythonCopyEditteam = RoundRobinGroupChat([user, assistant], max_turns=2)
max_turns=2なので、2回ずつ応答したらチャットが終了します。
4. チャットの実行
実際にプロンプトを渡して会話を開始します。
pythonCopyEditresult = team.run("Count to 3.")
"Count to 3."というプロンプトで開始し、ユーザー→AIの順で2ターンだけやり取りします。
5. Stateの取得と利用
会話終了後、resultオブジェクトからstateを取得し、会話履歴や終了状態を確認できます。
pythonCopyEditstate = result.state
print(state.messages)
print(state.terminated)
print(state.termination_reason)
state.messages:全てのやり取り履歴(リスト形式で格納)state.terminated:チャットが終了したかどうか(True/False)state.termination_reason:どの終了条件で終了したか(例:MaxMessageTerminationなど)
サンプルの要点まとめ
- エージェント・グループチャットを設定してプロンプトを投げる
- 会話の結果オブジェクトから
stateを取得し、履歴・状態・終了理由を確認できる - 状態管理によって、対話フローや結果の追跡、運用上のデバッグが容易になる
コード全体(整理版)
pythonCopyEditfrom autogen_agentchat.agents import UserProxyAgent, AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
# モデルクライアントの準備
model_client = OpenAIChatCompletionClient(model="gpt-4")
# ユーザーおよびAIエージェントの準備
user = UserProxyAgent("user", human_input_mode="NEVER")
assistant = AssistantAgent("assistant", model_client=model_client)
# グループチャットの構築
team = RoundRobinGroupChat([user, assistant], max_turns=2)
# チャットの実行
result = team.run("Count to 3.")
# 状態(State)の取得と確認
state = result.state
print(state.messages) # 会話履歴
print(state.terminated) # 終了状態(True/False)
print(state.termination_reason) # 終了理由
解説まとめ
このサンプルプログラムは、AutoGen AgentChatで会話を行い、その状態(履歴、終了条件など)をstateオブジェクトとして取り出すまでの一連の流れを示しています。
状態管理の活用によって、会話の進行制御、トラブルシュート、ログ保存、後続処理への連携など、対話AIの運用管理が非常に柔軟かつ強力になる点が最大のポイントです。


コメント