· · 1 分で読めます

あなたのエージェントはどこで物事を覚えているか?チャット履歴ストレージの実践ガイド

サービス管理かクライアント管理か?線形か分岐型か?AIエージェントが実際に何ができるかを決める重要なアーキテクチャ上の決定。C#とPythonのコード例付き。

Agent Framework AI Agents Architecture CSharp Python
この記事は他の言語でも読めます:English, Català, Español, Deutsch, Français, Português, Italiano, 中文, 한국어, Русский, हिन्दी, Polski, Türkçe, العربية, Bahasa Indonesia, Nederlands

この投稿は自動翻訳されました。元の記事はこちらをご覧ください。

AIエージェントを構築する際、ほとんどのエネルギーをモデル、ツール、プロンプトに費やします。会話履歴がどこに保存されるかという問題は実装の詳細に見えますが、実は最も重要なアーキテクチャ上の決定の一つです。

これにより、ユーザーが会話を分岐させたり、回答を元に戻したり、再起動後にセッションを再開したりできるかどうか、そしてデータがインフラから出るかどうかが決まります。Agent FrameworkチームはLデープな分析を公開しました

2つの基本パターン

サービス管理型: AIサービスが会話状態を保存します。アプリは参照(スレッドID、レスポンスID)を保持し、サービスは各リクエストに関連する履歴を自動的に含めます。

クライアント管理型: アプリが完全な履歴を管理し、各リクエストに関連メッセージを送信します。サービスはステートレスです。すべてを制御できます。

Agent Frameworkによる抽象化

AgentSession session = await agent.CreateSessionAsync();
var first = await agent.RunAsync("私の名前はAliceです。", session);
var second = await agent.RunAsync("私の名前は何ですか?", session);
session = agent.create_session()
first = await agent.run("私の名前はAliceです。", session=session)
second = await agent.run("私の名前は何ですか?", session=session)

セッションが基礎的な違いを処理します。プロバイダーを切り替えてもアプリケーションコードは変わりません。

プロバイダー早見表

プロバイダーストレージモデル圧縮
OpenAI/Azure Chat CompletionsクライアントN/A開発者
Foundry Agent Serviceサービス線形サービス
Responses API(デフォルト)サービス分岐型サービス
Anthropic Claude, OllamaクライアントN/A開発者

選び方

  1. 会話の分岐や「やり直し」が必要? → サービス管理型のResponses API
  2. データ主権が必要? → データベースバックドプロバイダーのクライアント管理型
  3. シンプルなチャットボット? → サービス管理型の線形で十分

完全な記事で意思決定ツリー全体を確認してください。

共有:
この記事のソースコードをGitHubで見る ↗
← Aspire 13.2: Bun サポート、コンテナ改善、デバッグの摩擦軽減
VS Code 1.118: Copilot CLI にセッション名、モデルバッジ、TypeScript 7.0 ナイトリーオプトイン →