handleChatStream()
AI SDK 互換形式で Agent のチャットをストリーミングする、フレームワークに依存しないハンドラーです。Hono または Mastra 独自の apiRoutes 機能の外部でチャットストリーミングを処理する必要がある場合は、この関数を直接使用します。
handleChatStream() は、createUIMessageStreamResponse() でラップできる ReadableStream を返します。
handleChatStream() は、既存の AI SDK v5/デフォルトの動作を維持します。アプリが AI SDK v6 の型を使用している場合は、version: 'v6' を渡します。
Mastra サーバー内にチャットルートを作成する場合は、chatRoute() を使用してください。
UI ストリームでの構造化出力UI ストリームでの構造化出力への直接リンク
基盤となる Agent の実行に structuredOutput を渡すと、最終的な構造化出力オブジェクトがカスタムデータパートとして AI SDK 互換 UI ストリームに出力されます。
{
"type": "data-structured-output",
"data": {
"object": {}
}
}
object フィールドには、構造化出力の完全な値が含まれます。Mastra がこのイベントを出力するのは、最終的な構造化出力オブジェクトに対してのみです。構造化出力の部分的なチャンクは UI ストリームに公開されません。
このイベントは、onData などの AI SDK UI のカスタムデータ処理で読み取るか、メッセージのデータパートからレンダリングします。
使用例使用例への直接リンク
Next.js App Router の例:
app/api/chat/route.ts
import { handleChatStream } from '@mastra/ai-sdk'
import { createUIMessageStreamResponse } from 'ai'
import { mastra } from '@/src/mastra'
export async function POST(req: Request) {
const params = await req.json()
const stream = await handleChatStream({
mastra,
agentId: 'weatherAgent',
params,
messageMetadata: () => ({ createdAt: new Date().toISOString() }),
})
return createUIMessageStreamResponse({ stream })
}
パラメーターパラメーターへの直接リンク
version?:
'v5' | 'v6'
= 'v5'
出力する AI SDK ストリームコントラクトを選択します。既存のデフォルト動作を使用するには、省略するか
'v5' を渡します。アプリが AI SDK v6 のレスポンスヘルパーの型を使用している場合は、'v6' を渡します。mastra:
Mastra
登録済みの Agent を含む Mastra インスタンス。
agentId:
string
チャットに使用する Agent の ID。
agentVersion?:
{ versionId: string } | { status?: 'draft' | 'published' }
特定の Agent バージョンを選択します。厳密なバージョンを指定するには
{ versionId: '<id>' } を、ステータスによって解決するには { status: 'draft' } または { status: 'published' } を渡します。Editor の設定が必要です。params:
ChatStreamHandlerParams
メッセージと任意の再開データを含む、チャットストリームのパラメーター。
params.messages:
UIMessage[]
会話内のメッセージの配列。
params.resumeData?:
Record<string, any>
中断された Agent の実行を再開するためのデータ。
runId の設定が必要です。params.runId?:
string
実行 ID。
resumeData を指定する場合は必須です。params.providerOptions?:
Record<string, Record<string, unknown>>
言語モデルに渡す Provider 固有のオプション(例:
{ openai: { reasoningEffort: "high" } })。defaultOptions.providerOptions とマージされ、params が優先されます。params.requestContext?:
RequestContext
Agent の実行に渡すリクエストコンテキスト。
defaultOptions?:
AgentExecutionOptions
Agent の実行に渡すデフォルトオプション。params とマージされ、params が優先されます。
sendStart?:
boolean
= true
ストリームで開始イベントを送信するかどうか。
sendFinish?:
boolean
= true
ストリームで終了イベントを送信するかどうか。
sendReasoning?:
boolean
= false
ストリームに推論ステップを含めるかどうか。
sendSources?:
boolean
= false
ストリームに出典の引用を含めるかどうか。
onError?:
(error: unknown) => string
ストリームでエラーが発生したときに呼び出されます。エラーメッセージとしてクライアントに送信する文字列を返します。エンドユーザーに届く前にエラーをサニタイズするために使用します。たとえば、内部インフラストラクチャの詳細が漏洩するのを防げます。
messageMetadata?:
(options: { part: UIMessageStreamPart }) => Record<string, unknown> | undefined
現在のストリームパートを受け取り、開始チャンクと終了チャンクに付加するメタデータを返す関数。詳細は AI SDK のメッセージメタデータに関するドキュメントを参照してください。