> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # chatRoute() AI SDK 形式を使用して Agent の会話をストリーミングするチャットルートハンドラーを作成します。この関数は、メッセージを受け取り、Agent を実行し、レスポンスを AI SDK 互換形式でクライアントへストリーミングする HTTP `POST` エンドポイントを登録します。[カスタム API ルート](https://mastra.zisheng.pro/ja/docs/server/custom-api-routes)内で使用する必要があります。 フレームワークに依存しないハンドラーが必要な場合は、[`handleChatStream()`](https://mastra.zisheng.pro/ja/reference/ai-sdk/handle-chat-stream) を使用してください。 `chatRoute()` は、既存の AI SDK v5/デフォルトの動作を維持します。アプリが AI SDK v6 の型を使用している場合は、`version: 'v6'` を渡します。 > **切断時の動作:** `chatRoute()` は、受信したリクエストの `AbortSignal` を `agent.stream()` に転送します。クライアントが切断すると、Mastra は進行中の生成を中止します。 > > 切断後もサーバーで生成を続行し、最終レスポンスを永続化するには、`agent.stream()` を使用する[カスタム API ルート](https://mastra.zisheng.pro/ja/docs/server/custom-api-routes)を作成し、返された `MastraModelOutput` に対して `consumeStream()` を呼び出します。 ## 使用例 次の例では、ID が `weatherAgent` の Agent を使用するチャットルートを `/chat` エンドポイントに設定します。 ```typescript import { Mastra } from '@mastra/core' import { chatRoute } from '@mastra/ai-sdk' export const mastra = new Mastra({ server: { apiRoutes: [ chatRoute({ path: '/chat', agent: 'weatherAgent', }), ], }, }) ``` `agentId` に基づいて実行時に定義する Agent ルーティングも使用できます。URL `/chat/weatherAgent` は、ID が `weatherAgent` の Agent に解決されます。 ```typescript import { Mastra } from '@mastra/core' import { chatRoute } from '@mastra/ai-sdk' export const mastra = new Mastra({ server: { apiRoutes: [ chatRoute({ path: '/chat/:agentId', }), ], }, }) ``` ## パラメーター **version** (`'v5' | 'v6'`): 出力する AI SDK ストリームコントラクトを選択します。既存のデフォルト動作を使用するには、省略するか 'v5' を渡します。アプリが AI SDK v6 のレスポンスヘルパーの型を使用している場合は、'v6' を渡します。 (Default: `'v5'`) **path** (`string`): ルートパス(例: /chat または /chat/:agentId)。Agent を動的にルーティングするには :agentId を含めます。 (Default: `'/chat/:agentId'`) **agent** (`string`): このチャットルートで使用する Agent の ID。パスに :agentId が含まれていない場合は必須です。 **agentVersion** (`{ versionId: string } | { status?: 'draft' | 'published' }`): 特定の Agent バージョンを選択します。厳密なバージョンを指定するには { versionId: '\' } を、ステータスによって解決するには { status: 'draft' } または { status: 'published' } を渡します。ルートの呼び出し時には、クエリパラメーター ?versionId=\ または ?status=draft|published がこの静的な値より優先されます。Editor の設定が必要です。 **defaultOptions** (`AgentExecutionOptions`): Agent の実行に渡すデフォルトオプション。指示、メモリ設定、maxSteps、その他の実行設定を含められます。 **sendStart** (`boolean`): ストリームで開始イベントを送信するかどうか。 (Default: `true`) **sendFinish** (`boolean`): ストリームで終了イベントを送信するかどうか。 (Default: `true`) **sendReasoning** (`boolean`): ストリームに推論ステップを含めるかどうか。 (Default: `false`) **sendSources** (`boolean`): ストリームに出典の引用を含めるかどうか。 (Default: `false`) **heartbeatMs** (`number`): アイドルタイムアウトが設定されたインフラストラクチャを経由しても接続を維持する、SSE ハートビートの間隔(ミリ秒)。 ## 追加設定 [`prepareSendMessagesRequest`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat#transport.default-chat-transport.prepare-send-messages-request) を使用すると、チャットルートへ送信するリクエストをカスタマイズできます。たとえば、Agent に追加の設定を渡せます。 ```typescript const { error, status, sendMessage, messages, regenerate, stop } = useChat({ transport: new DefaultChatTransport({ api: 'http://localhost:4111/chat', prepareSendMessagesRequest({ messages }) { return { body: { messages, // Pass memory config memory: { thread: 'user-1', resource: 'user-1', }, }, } }, }), }) ```