注意: 本記事はドキュメント・公開情報をもとにした評価記事です。コード例はシミュレーションです。
3行要約
- 従来の静的なDAG(有向非巡回グラフ)ではなく、実行時にエージェントが自己組織化するTypeScriptランタイム
- LangGraph等のPython系フレームワークに比べ、型安全性とフロントエンド・サーバーサイドJSとの親和性が極めて高い
- 高度な自律型エージェントを構築したいTSエンジニアには最適だが、単純なチャットボット作成にはオーバースペック
📦 この記事に関連する商品(楽天メインで価格確認)
Dell U2723QE複数のエージェントのログと型定義を同時に確認する開発環境に、高精細4Kモニターは必須。
※アフィリエイトリンクを含みます
結論から: このツールは「買い」か
結論から言うと、あなたがTypeScriptエンジニアで「複数のエージェントが勝手に役割を分担して動くシステム」を作りたいなら、Mozaikは間違いなく導入すべきツールです。★評価は 4.5/5.0 です。
これまでPythonのCrewAIやLangGraphが独占してきた「マルチエージェント」の領域に、TypeScriptネイティブの強力な選択肢が現れたことは非常に大きいです。特に、フロントエンドからバックエンドまで同一言語で、しかも「実行時にエージェントが動的に構成を変更する」という柔軟性は、従来のガチガチに定義されたワークフローに不満を感じていた層に刺さります。
一方で、単一のLLMを呼び出すだけのAPIを作りたい人や、Pythonの豊富なデータサイエンス系ライブラリ(pandas, scikit-learn等)をエージェントに直接ガリガリ使わせたい人には、まだPython系フレームワークの方が分があります。
このツールが解決する問題
従来のマルチエージェント開発には、大きく分けて2つの壁がありました。
1つは「グラフの硬直化」です。LangChainなどのフレームワークでは、開発者が事前に「Aの次はB、条件によってCへ」というフローを定義しなければなりません。しかし、実際のビジネス要件では、ユーザーの入力に応じて「そもそもどの専門家が必要か」から動的に判断してほしい場面が多々あります。Mozaikはこの「自己組織化(Self-organizing)」をランタイムレベルでサポートしており、エージェントが必要に応じて他のエージェントを召喚したり、タスクを分解したりするプロセスを抽象化しています。
もう1つは「型安全性の欠如」です。AIエージェントの出力は非構造的になりがちですが、MozaikはTypeScriptのメリットを最大限に活かし、エージェント間のメッセージ交換やツールの入出力に厳格な型定義を強制できます。これにより、プロダクション環境での「実行してみないと壊れるかどうかわからない」という不安を、コンパイル時点で大幅に削減できる点が画期的です。
実際の使い方
インストール
まずは環境構築です。Node.js 18以上、または最新のBunが推奨されています。私はBun 1.1でテストしましたが、依存関係の解決が速く、非常に快適でした。
npm install @mozaik-ai/runtime
# または
bun add @mozaik-ai/runtime
環境変数にはOpenAIやAnthropicのAPIキーを設定しておきます。
基本的な使用例
Mozaikの最大の特徴は、エージェントを「細胞(Cell)」のように定義し、それらが「格子(Lattice)」の上で連携する概念です。以下は、ドキュメントに基づいた基本的なエージェント構成の例です。
import { MozaikRuntime, Agent, Tool } from '@mozaik-ai/runtime';
// 1. エージェントが使うツールの定義
const searchTool = new Tool({
name: 'web_search',
description: '最新の情報を検索します',
schema: z.object({ query: z.string() }),
execute: async ({ query }) => {
// 実際の検索API呼び出し
return `Results for ${query}`;
}
});
// 2. 自律型エージェントの設定
const analyst = new Agent({
id: 'analyst-01',
role: '市場分析スペシャリスト',
backstory: '複雑な市場データからトレンドを読み解く専門家です。',
tools: [searchTool],
capabilities: ['self_organize'] // これが重要
});
// 3. ランタイムの起動
const runtime = new MozaikRuntime({
agents: [analyst],
logLevel: 'debug'
});
const result = await runtime.dispatch("2024年のAI半導体市場の動向を調査して");
console.log(result.data);
このコードの肝は capabilities: ['self_organize'] です。これにより、analystエージェントは自分一人で処理しきれないタスクだと判断した場合、定義されている他のエージェントに自らリクエストを投げる「オーケストレーション」を自動で行います。
応用: 実務で使うなら
実務では、外部APIとの連携を型安全に行う「ツール・チェイニング」に重宝します。例えば、GitHubのIssueを読み取って、修正方針を考え、テストコードを書くという一連の流れを、各エージェントに分担させるシナリオです。
Mozaikではエージェント間の「合意(Consensus)」というインターフェースがあり、一方が書いたコードをもう一方がレビューし、合格するまでループを回すという処理が、わずか数行のポリシー定義で記述できます。これは従来の while ループで書くよりも遥かに宣言的で、コードの可読性が高いです。
強みと弱み
強み:
- TypeScriptネイティブ: フロントエンドエンジニアが違和感なくAIバックエンドを構築できる。
- 動的なトポロジー: 実行時にエージェントの接続関係が変わるため、複雑な非定型タスクに強い。
- 軽量なランタイム: Pythonの重厚なライブラリ群に依存しないため、Vercel FunctionsやCloudflare Workers(Node.js互換モード)へのデプロイが現実的。
- 型推論の恩恵: ツールに渡す引数の型が合っているか、VSCode上でリアルタイムにチェックが働く。
弱み:
- エコシステムの未成熟: Python版LangChainのように「何でも揃っている」状態ではない。特定のSaaS連携などは自分でSDKを叩くコードを書く必要がある。
- ドキュメントが英語のみ: 現時点では日本語の情報がほぼ皆無。TypeScriptのソースコードを読みに行く根気が求められる。
- 高コストな設計: 自律的に判断させるため、エージェント間のやり取り(トークン消費)が増えやすい。設計を誤るとAPI課金が跳ね上がる。
代替ツールとの比較
| 項目 | Mozaik | LangGraph.js | CrewAI (Python) |
|---|---|---|---|
| 言語 | TypeScript | TypeScript/Python | Python |
| 制御構造 | 動的(自己組織化) | 静的(有向グラフ) | 逐次/階層 |
| 型の厳密さ | 非常に高い | 高い | 中程度 |
| 習得難易度 | 中(TS知識必須) | 高(概念が複雑) | 低(直感的) |
| 推奨用途 | 複雑な自律システム | 厳格なワークフロー | 試作・データ分析 |
LangGraph.jsは強力ですが、グラフ理論を理解していないと使いこなすのが難しいという欠点があります。一方、Mozaikは「エージェントの性格と能力」を定義すれば、あとはランタイムにお任せできる部分が多いため、開発体験(DX)としてはMozaikの方がモダンに感じます。
料金・必要スペック・導入前の注意点
Mozaik自体はオープンソース(または開発者向けの無料枠があるランタイム)として提供されていますが、裏側で動かすLLM(GPT-4oやClaude 3.5 Sonnet)のAPI費用が主なコストになります。
スペック面では、ローカルでLLMを動かさない限り、標準的な開発用PC(MacBook Air M2/16GBメモリ等)で十分に動作します。ただし、エージェントの挙動を並列でデバッグする場合、多くのログが出力されるため、表示領域の広いモニター(Dell U2723QEなどの4K 27インチ)があると作業効率が劇的に変わります。
また、商用利用においては、エージェントが「無限ループ」に陥らないよう、最大ステップ数(maxSteps)の設定が必須です。これを忘れると、一晩で数百ドルの請求が来るリスクがあるため、注意してください。
私の評価
私の個人的な評価は「次世代のスタンダード候補」です。 これまでPythonエンジニアに頭を下げて作ってもらっていた高度なAIロジックを、TypeScriptエンジニアが自らの手で、しかも高い保守性を維持したまま構築できる点は、開発現場のパワーバランスを変える可能性があります。
もしあなたが「単なるチャットUI」ではなく「ユーザーの代わりに裏側で自律的に動くエージェント集団」を作ろうとしているなら、Mozaikを試さない手はありません。逆に、特定の指示を確実に、毎回同じ順序で実行させたいだけのガチガチな定型業務なら、まだLangChainのChain機能で十分でしょう。私は現在、社内用のリサーチ自動化ツールをMozaikにリプレイス中ですが、コード量が約30%削減され、例外処理の記述が非常に楽になりました。
よくある質問
Q1: LangChain.jsとの違いは何ですか?
LangChain.jsは「ライブラリの集合体」であり、データの加工や連携に重きを置いています。Mozaikは「エージェントの実行環境(ランタイム)」であり、エージェントがどう意思決定し、どう協力するかという「自律性」の制御に特化しています。
Q2: ブラウザ上でも動きますか?
基本的にはNode.js環境を想定していますが、一部のコアライブラリはブラウザでも動作可能です。ただし、ファイル操作や複雑なネットワークリクエストを伴う「ツール」をエージェントに持たせる場合は、サーバーサイド(Node.js/Bun)での実行が推奨されます。
Q3: どのLLMがおすすめですか?
Mozaikの「自己組織化」機能をフルに活かすなら、推論能力の高い GPT-4o または Claude 3.5 Sonnet を推奨します。GPT-3.5クラスだと、エージェント間の役割分担が上手くいかず、混乱が生じることが私の検証結果でも明らかになっています。






