chatRoute()
AI SDK 形式を使用して Agent の会話をストリーミングするチャットルートハンドラーを作成します。この関数は、メッセージを受け取り、Agent を実行し、レスポンスを AI SDK 互換形式でクライアントへストリーミングする HTTP POST エンドポイントを登録します。カスタム API ルート内で使用する必要があります。
フレームワークに依存しないハンドラーが必要な場合は、handleChatStream() を使用してください。
chatRoute() は、既存の AI SDK v5/デフォルトの動作を維持します。アプリが AI SDK v6 の型を使用している場合は、version: 'v6' を渡します。
chatRoute() は、受信したリクエストの AbortSignal を agent.stream() に転送します。クライアントが切断すると、Mastra は進行中の生成を中止します。
切断後もサーバーで生成を続行し、最終レスポンスを永続化するには、agent.stream() を使用するカスタム API ルートを作成し、返された MastraModelOutput に対して consumeStream() を呼び出します。
使用例使用例への直接リンク
次の例では、ID が weatherAgent の Agent を使用するチャットルートを /chat エンドポイントに設定します。
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 に解決されます。
import { Mastra } from '@mastra/core'
import { chatRoute } from '@mastra/ai-sdk'
export const mastra = new Mastra({
server: {
apiRoutes: [
chatRoute({
path: '/chat/:agentId',
}),
],
},
})
パラメーターパラメーターへの直接リンク
version?:
'v5' を渡します。アプリが AI SDK v6 のレスポンスヘルパーの型を使用している場合は、'v6' を渡します。path:
/chat または /chat/:agentId)。Agent を動的にルーティングするには :agentId を含めます。agent?:
:agentId が含まれていない場合は必須です。agentVersion?:
{ versionId: '<id>' } を、ステータスによって解決するには { status: 'draft' } または { status: 'published' } を渡します。ルートの呼び出し時には、クエリパラメーター ?versionId=<id> または ?status=draft|published がこの静的な値より優先されます。Editor の設定が必要です。defaultOptions?:
sendStart?:
sendFinish?:
sendReasoning?:
sendSources?:
heartbeatMs?:
追加設定追加設定への直接リンク
prepareSendMessagesRequest を使用すると、チャットルートへ送信するリクエストをカスタマイズできます。たとえば、Agent に追加の設定を渡せます。
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',
},
},
}
},
}),
})