はじめに
8月はじめに以下の記事で扱っていた、Mastra と Vercel AI SDK v5 に関わる話です。
●【Node.js】 Mastra で Vercel AI SDK 5 を使う場合の情報を調べて軽いお試しもやってみた(現状ベータ版) - Qiita
https://qiita.com/youtoy/items/e6a0f5cbbb8caa2247fd
Mastra で Vercel AI SDK v5 を扱う話ではあるのですが、上記の記事で書いた内容とは異なるアプローチの話です。
Agent.streamVNext()/generateVNext() について
もう少し書くと、タイトルに書いている「Agent.streamVNext()/generateVNext()」についての記事になります。
8月下旬に公式が出した以下の記事の中で、「AI SDK v5 Support
」という項目があり、そこに「our new streamVNext and generateVNext APIs are able to output v5 streams.」という記載があります。
●Mastra Changelog 2025-08-21
https://mastra.ai/blog/changelog-2025-08-21
どうやら、「Mastra のネイティブなフォーマット」と「AI SDK v5 のフォーマット」を両方選べたり、なんて機能もあるようです。
上記の詳細が気になって、実際に「Agent.streamVNext()/generateVNext()」を試してみることにしました。
実際に試してみる
実際に試していきます。
公式リファレンス
Mantra の実験的機能「Agent.streamVNext()/generateVNext()」について、公式のリファレンスを見てみます。軽く検索してみると、以下の「Agent.streamVNext()」のページが出てきました。
●リファレンス: Agent.streamVNext()(実験的) | Agents | Mastra Docs
https://mastra.ai/ja/reference/agents/streamVNext
冒頭を見ると、「Experimental Feature」という項目のところで将来的に stream() と置き換えられる予定、という話も書いてあります(現状は、この移行に向けたテスト段階のようです)。
その下には、以下の使用例も出てきています。
// Mastra のデフォルト形式
const mastraStream = await agent.streamVNext("message for agent");
// AI SDK v5 互換形式
const aiSdkStream = await agent.streamVNext("message for agent", {
format: 'aisdk'
});
公式記事
その他に検索などをしてみると、以下の公式記事でも「Agent.streamVNext()/generateVNext()」の話が出てきています。
●Announcing Mastra's improved agent orchestration with AI SDK v5 support
https://mastra.ai/blog/announcing-mastra-improved-agent-orchestration-ai-sdk-v5-support
例えば、以下では v4 と v5 のコードの違いが示されています。
「AI SDK v5」として示されているコードの一例は、以下のとおりです。
const stream = await agent.streamVNext("Hello", { format: "aisdk" });
// Stream in AI SDK v5 format
for await (const chunk of stream.fullStream) {
if (chunk.type === "text-delta") {
console.log(chunk.text);
}
}
// Use with frontend frameworks
return stream.toUIMessageStreamResponse();
自分の環境で試す
自分の環境で試していきます。
下準備
今回、@mastra/core のパッケージを使ったやり方にします。以下のコマンドで、AI SDK の OpenAI provider(@ai-sdk/openai) と合わせてインストールします。
npm i @mastra/core @ai-sdk/openai
また、OpenAI の API を使うので、環境変数 OPENAI_API_KEY に OpenAI の APIキーをセットします。
コードと実行結果
@mastra/core/agent を使った、基本のコードに Agent.streamVNext() を追加したようなコードでお試しをしてみます。
コードは以下のとおりです。
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
const agent = new Agent({
name: "demo",
instructions: "シンプルな回答をして",
model: openai("gpt-4o-mini"),
});
(async () => {
const stream = await agent.streamVNext("あなたは誰?", { format: "aisdk" });
for await (const part of stream.fullStream) {
if (part.type === "text-delta") process.stdout.write(part.text);
}
process.stdout.write("\n");
})();
上記を実行したところ、以下の出力が得られました(※ 出力はストリーミングのものになります)。
コードと実行結果2
次は、Agent.generateVNext() を使った内容で試してみます。
コードは以下としました(※ メタデータの出力も行っています)。
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
const agent = new Agent({
name: "demo",
instructions: "シンプルな回答をして",
model: openai("gpt-4o-mini"),
});
(async () => {
const result = await agent.generateVNext("あなたは誰?", { format: "aisdk" });
console.log(result.text);
console.log(result.usage); // メタデータ
})();
出力結果は以下のとおりで、問題なくレスポンスを得られました。





