【AutoGen0.6.4】State Management [2]:Sample Code : 2025.7.26

エージェント

サンプルプログラムの解説

このプログラムは、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の運用管理が非常に柔軟かつ強力になる点が最大のポイントです。

コメント

タイトルとURLをコピーしました