VNext から標準 API へ移行する
@mastra/core の v0.20.0 以降では、以下の変更が適用されます。
レガシー API(AI SDK v4)レガシー API(AI SDK v4)への直接リンク
従来のメソッドは改名され、AI SDK v4 および v1 モデルとの後方互換性を維持しています。
.stream()→.streamLegacy().generate()→.generateLegacy()
標準 API(AI SDK v5)標準 API(AI SDK v5)への直接リンク
以下が現在の API となり、AI SDK v5 および v2 モデルとの完全な互換性を備えています。
.streamVNext()→.stream().generateVNext()→.generate()
移行方法移行方法への直接リンク
すでに .streamVNext() と .generateVNext() を使用している場合は、検索と置換を使用し、それぞれ .stream() と .generate() に変更します。
以前の .stream() と .generate() を使用している場合は、アップグレードするかを決めてください。アップグレードしない場合は、検索と置換を使用して .streamLegacy() と .generateLegacy() に変更します。
要件に合う移行方法を選択してください。
AI SDK v4 モデルを引き続き使用するAI SDK v4 モデルを引き続き使用するへの直接リンク
.stream()と.generate()の呼び出しをすべて、それぞれ.streamLegacy()と.generateLegacy()に改名します。
その他の変更は不要です。
AI SDK v5 モデルを引き続き使用するAI SDK v5 モデルを引き続き使用するへの直接リンク
.streamVNext()と.generateVNext()の呼び出しをすべて、それぞれ.stream()と.generate()に改名します。
その他の変更は不要です。
AI SDK v4 から v5 へアップグレードするAI SDK v4 から v5 へアップグレードするへの直接リンク
- すべてのモデル Provider パッケージをメジャーバージョンアップします。
これにより、すべて v5 モデルになります。主な相違点を理解し、コードを更新するには、以下のガイドに従ってください。
主な相違点主な相違点への直接リンク
更新された .stream() メソッドと .generate() メソッドは、動作、互換性、戻り値の型、利用可能なオプションがレガシー版とは異なります。このセクションでは、移行時に把握しておく必要がある重要な変更点を説明します。
対応するモデルバージョン対応するモデルバージョンへの直接リンク
レガシー API
.generateLegacy().streamLegacy()
AI SDK v4 モデル(specificationVersion: 'v1')のみに対応します。
標準 API
.generate().stream()
AI SDK v5 モデル(specificationVersion: 'v2')のみに対応します。
この制約は、明確なエラーメッセージとともに実行時に適用されます。
戻り値の型戻り値の型への直接リンク
レガシー API
-
.generateLegacy()戻り値:GenerateTextResultまたはGenerateObjectResult -
.streamLegacy()戻り値:StreamTextResultまたはStreamObjectResult
詳しくは、以下の API リファレンスを参照してください。
標準 API
-
.generate()format: 'mastra'(デフォルト):MastraModelOutput.getFullOutput()を返しますformat: 'aisdk':AISDKV5OutputStream.getFullOutput()を返します- 内部で
.stream()を呼び出し、.getFullOutput()を待機します
-
.stream()format: 'mastra'(デフォルト):MastraModelOutput<OUTPUT>を返しますformat: 'aisdk':AISDKV5OutputStream<OUTPUT>を返します
詳しくは、以下の API リファレンスを参照してください。
形式の制御形式の制御への直接リンク
レガシー APIレガシー APIへの直接リンク
format オプションはありません。常に AI SDK v4 の型を返します。
// Mastra native format (default)
const result = await agent.stream(messages)
標準 API標準 APIへの直接リンク
format オプションで出力を選択します。
'mastra'(デフォルト)'aisdk'(AI SDK v5 互換)
// AI SDK v5 compatibility
const result = await agent.stream(messages, {
format: 'aisdk',
})
標準 API の新しいオプション標準 API の新しいオプションへの直接リンク
以下のオプションは、標準の .stream() と generate() で使用できますが、レガシー版では使用できません。
-
format- 出力形式として 'mastra' または 'aisdk' を選択します。const result = await agent.stream(messages, {format: 'aisdk', // or 'mastra' (default)}) -
system- カスタム System Message(instructions とは別)。const result = await agent.stream(messages, {system: 'You are a helpful assistant',}) -
structuredOutput- モデルの上書きとカスタムオプションに対応した、拡張された構造化出力。-
jsonPromptInjection- モデルへ response_format を渡すデフォルト動作を上書きします。モデルに構造化出力を返させるため、Prompt にコンテキストを注入します。 -
model- モデルを追加すると、メイン Agent のレスポンスを構造化する Subagent が作成されます。メイン Agent は Tool を呼び出してテキストを返し、Subagent は指定したスキーマに準拠するオブジェクトを返します。experimental_outputの代替機能です。 -
errorStrategy- 出力がスキーマと一致しない場合の動作を指定します。- 'warn' - 警告をログに記録
- 'error' - エラーをスロー
- 'fallback' - 指定したフォールバック値を返す
const result = await agent.generate(messages, {structuredOutput: {schema: z.object({name: z.string(),age: z.number(),}),model: 'openai/gpt-5.6-sol', // Optional model override for structuringerrorStrategy: 'fallback',fallbackValue: { name: 'unknown', age: 0 },instructions: 'Extract user information', // Override default structuring instructions},})
-
-
stopWhen- 柔軟な停止条件(Step 数、Token 上限など)。const result = await agent.stream(messages, {stopWhen: ({ steps, totalTokens }) => steps >= 5 || totalTokens >= 10000,}) -
providerOptions- Provider 固有のオプション(OpenAI 固有の設定など)const result = await agent.stream(messages, {providerOptions: {openai: {store: true,metadata: { userId: '123' },},},}) -
onChunk- 各 Streaming Chunk の Callback。const result = await agent.stream(messages, {onChunk: chunk => {console.log('Received chunk:', chunk)},}) -
onError- Error Callback。const result = await agent.stream(messages, {onError: error => {console.error('Stream error:', error)},}) -
onAbort- Abort Callback。const result = await agent.stream(messages, {onAbort: () => {console.log('Stream aborted')},}) -
activeTools- この実行で有効にする Tool を指定します。const result = await agent.stream(messages, {activeTools: ['search', 'calculator'], // Only these tools will be available}) -
abortSignal- キャンセル用の AbortSignal。const controller = new AbortController()const result = await agent.stream(messages, {abortSignal: controller.signal,})// Later: controller.abort(); -
prepareStep- 複数 Step の実行で、各 Step の前に呼び出す Callback。const result = await agent.stream(messages, {prepareStep: ({ step, state }) => {console.log('About to execute step:', step)return {/* modified state */}},}) -
requireToolApproval- すべての Tool 呼び出しで承認を必須にします。const result = await agent.stream(messages, {requireToolApproval: true,})
移動したレガシーオプション移動したレガシーオプションへの直接リンク
-
temperatureとその他のmodelSettings。modelSettingsに統合されました。const result = await agent.stream(messages, {modelSettings: {temperature: 0.7,maxTokens: 1000,topP: 0.9,},}) -
resourceIdとthreadId。Memory オブジェクトに移動しました。
const result = await agent.stream(messages, {memory: {resource: 'user-123',thread: 'thread-456',},})
非推奨または削除されたオプション非推奨または削除されたオプションへの直接リンク
-
experimental_outputTool 呼び出しとオブジェクトの戻り値に対応するには、代わりに
structuredOutputを使用します。const result = await agent.generate(messages, {structuredOutput: {schema: z.object({summary: z.string(),}),model: 'openai/gpt-5.6-sol',},}) -
outputoutputプロパティはstructuredOutputを優先して非推奨になりました。同じ結果を得るには、モデルを省略してstructuredOutput.schemaのみを渡します。モデルがresponse_formatをネイティブにサポートしていない場合は、任意でjsonPromptInjection: trueを追加してください。const result = await agent.generate(messages, {structuredOutput: {schema: z.object({name: z.string(),}),},}) -
memoryOptions代わりに
memoryを使用します。const result = await agent.generate(messages, {memory: {},})
型の変更型の変更への直接リンク
レガシー API
CoreMessage[]
詳しくは、以下の API リファレンスを参照してください。
標準 API
-
ModelMessage[]toolChoiceは AI SDK v5 のToolChoice型を使用します。type ToolChoice<TOOLS extends Record<string, unknown>> =| 'auto'| 'none'| 'required'| {type: 'tool'toolName: Extract<keyof TOOLS, string>}
詳しくは、以下の API リファレンスを参照してください。