1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mastra の実験的機能「Agent.streamVNext()/generateVNext()」を Node.js で試す: V2モデル(AI SDK v5)対応の機能

1
Last updated at Posted at 2025-09-02

はじめに

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_2025-09-02_09-43-33.jpg

どうやら、「Mastra のネイティブなフォーマット」と「AI SDK v5 のフォーマット」を両方選べたり、なんて機能もあるようです。

2025-09-02_12-11-10.jpg

上記の詳細が気になって、実際に「Agent.streamVNext()/generateVNext()」を試してみることにしました。

実際に試してみる

実際に試していきます。

公式リファレンス

Mantra の実験的機能「Agent.streamVNext()/generateVNext()」について、公式のリファレンスを見てみます。軽く検索してみると、以下の「Agent.streamVNext()」のページが出てきました。

●リファレンス: Agent.streamVNext()(実験的) | Agents | Mastra Docs
 https://mastra.ai/ja/reference/agents/streamVNext

2025-09-02_03-08-41.jpg

冒頭を見ると、「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 のコードの違いが示されています。

2025-09-02_12-18-03.jpg

「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");
})();

上記を実行したところ、以下の出力が得られました(※ 出力はストリーミングのものになります)。

2025-09-02_12-33-05.jpg

コードと実行結果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); // メタデータ
})();

出力結果は以下のとおりで、問題なくレスポンスを得られました。

2025-09-03_00-30-20.jpg

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?