【AutoGen0.6.4】State Management [3]:save_state() および load_state() : 2025.7.26

エージェント

目的

AutoGen AgentChatでは、チャットセッションの途中経過や最終状態(State)をシリアライズ(保存)、デシリアライズ(復元)できます。これにより、一度終了したセッションの再開や、複数サーバ間での状態共有などが容易になります。


サンプルコード

以下は、会話の途中でstateを保存し、その後同じ状態から会話を再開する流れの例です。

pythonCopyEditfrom autogen_agentchat.agents import UserProxyAgent, AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient

# 1. エージェントとグループチャットの初期化
model_client = OpenAIChatCompletionClient(model="gpt-4")
user = UserProxyAgent("user", human_input_mode="NEVER")
assistant = AssistantAgent("assistant", model_client=model_client)
team = RoundRobinGroupChat([user, assistant], max_turns=2)

# 2. チャットを1ターンだけ進行
result = team.run("Count to 10.", max_turns=1)  # 1ターンのみ
state = result.state

# 3. 状態(state)を保存
state.save_state("chat_state.json")

# 4. 別プロセスや別タイミングで、状態を復元して再開
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.state import State

# エージェントやteamの初期化は同じ
team = RoundRobinGroupChat([user, assistant], max_turns=2)

# 保存済みstateをロード
loaded_state = State.load_state("chat_state.json")

# チャットを続行(前回の続きから)
result2 = team.run(state=loaded_state)

# 会話全体の履歴を表示
for msg in result2.state.messages:
    print(f"[{msg.sender}] {msg.content}")

解説

  1. 状態の保存
    state.save_state("ファイル名") で、現在のチャットの状態(履歴や各種プロパティ)をファイル(JSON形式など)にシリアライズして保存します。
  2. 状態の復元
    State.load_state("ファイル名") で、保存しておいた状態をデシリアライズ(復元)します。
    復元したstateteam.run(state=復元したstate) のように引き渡すことで、前回終了時点から会話を継続できます。
  3. 応用例
    • 長時間のチャットや対話型タスクで途中中断と再開を実現できる。
    • 他サーバへのセッション引き継ぎや、エラー発生時のリカバリに利用可能。
    • 会話ログとして全履歴や中間状態の保存・分析も容易になる。

注意点

  • 状態ファイルの保存先(例: “chat_state.json”)や管理ポリシーは実運用要件に応じて調整してください。
  • 再開時には、同じエージェント構成(user, assistant など)を再現する必要があります。
  • stateの保存・復元は、セッション単位で独立しており、複数セッションの並行管理にも適しています。

まとめ

save_state()load_state() を用いることで、AutoGen AgentChatのセッション状態を安全かつ柔軟に管理でき、信頼性の高い対話システムやエンタープライズ向けの運用要件にも対応できます。
設計上も、この状態管理APIを活用することで、多様なチャット運用シナリオを効率よく実現できます。

コメント

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