microsoft/TypeAgent
Sample code that explores an architecture for using language models to build a personal agent that can work with application agents.
TypeAgent – パーソナルAIエージェントのサンプル
何であるか
- Microsoftがメンテナンスするオープンソースのサンプルで、自然言語で話しかけることができる単一のパーソナルアシスタントを構築する方法を示す。
- コードは、大規模言語モデル(LLM)と従来のソフトウェアコンポーネント(アクション、メモリ、計画)を、構造化プロンプトのアプローチを使って組み合わせる方法を示している。
コアアイデア
| 原則 | 実装方法 |
|---|---|
| モデルを論理構造に要約する | アクションはタイプ化されたスキーマ(TypeChat経由)として表現される;メモリはオントロジーとして保存される;計画にはLLM、品質モデル、人間が協力する「思考の木」探索が用いられる。 |
| 構造で情報密度を制御する | アクション契約は離散的で詳細に記述される;メモリはLLMのアテンションウィンドウに収まるようなタイトな意味構造に保持される;各探索ノードはサブ問題に焦点を当てる。 |
| 構造を通じて協働を可能にする | 人間が曖昧なリクエストを明確化する;シンプルなパーサーが論理形式を抽出する;複数のモデル(LLM、アドバンテージ/品質モデル)が協力して最良優先探索木を拡張する。 |
主要コンポーネント
- TypeAgent Shell – ElectronベースのUIで、複数の登録済みエージェントと1つのインターフェースを通じて会話(音声対応)できる。
- Dispatcher – 構造化プロンプトを使用して、ユーザーの自然言語リクエストを、意図に最も合致するタイプ化された契約を持つエージェントにルーティングする。
- KnowPro – 構造化RAGメモリレイヤーを実装:会話履歴は論理的エンティティとしてインデックス化され、「どの本について話したか?」といった正確なクエリが可能になる。
- Cache – LLM駆動の構造化プロンプトを使用してアクション翻訳をメモ化し、モデルへの繰り返し呼び出しを減らし、遅延を低減する。
- Agent SDK – エージェントがディスパッチャーとシェルに接続するために実装すべきTypeScriptインターフェースを定義する。
含まれるサンプルエージェント(すべて同じアーキテクチャに基づく)
- 音楽プレーヤー、チャット、ウェブブラウザ、VS Code、リストマネージャー、カレンダー、メール、デスクトップ自動化、画像エディター、Markdownエディター、フォトモンタージュなど。
試してみる方法
- プラットフォーム固有のセットアップドキュメント(Windows、WSL2、Linux、macOS)に従い、Node、Azure OpenAIキーなどをインストールする。
- TypeAgent Shell(
ts/packages/shell)を実行する – 音声対応の会話ウィンドウが表示される。 - 営業中のエージェントとやり取りするか、SDKを実装してエージェントを登録し、ディスパッチャーに接続する(
Echoチュートリアルを参照)。
設計のハイライト
- 構造化RAG – 伝統的なベクトルのみの検索を、スキーマ駆動のインデックスに置き換え、会話的な事実の再現率を向上させる。
- アクション-メモリの結合 – アクション(例:「私のカレンダーにピクルスボールの試合を追加する」)を実行すると、後続のアクションで参照可能なメモリエントリが自動的に作成される。
- AMPアーキテクチャ(アクション-メモリ-計画) – 3つのフローを統合し、シームレスな情報交換を可能にする。
現在の状態と制限
- 初期段階のサンプルコードであり、プロダクション用のフレームワークではない。
- 開発者マシン上でAzure OpenAIサービスでのみテスト済み;英語のみの評価。
- よく作られたJSONスキーマに依存している;スキーマがユーザーの意図を捉えられないと、LLMは無効な応答を生成する可能性がある。
- ビルトインのテレメトリはなし;開発者は自らAPIキーを提供する必要がある。
誰にとって役立つか
- LLM駆動エージェントの構造化方法を探求する研究者やエンジニア。
- パーソナルアシスタント、アクションディスパッチャー、メモリ拡張チャットボットのリファレンス実装を求める開発者。
- LLMコストを削減し、信頼性を向上させる「構造化プロンプト」パターンに関心のあるチーム。
Microsoftが計画している次なるステップ
- メモリおよびディスパッチレイヤー用の再利用可能なライブラリを公開する。
- インストール可能なパッケージと、新エージェントの動的発見を提供する。
上記のすべての情報は、リポジトリのREADMEから直接取得;追加機能は推測していない。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト