0
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?

【Node.js】 Vercel AI SDK 5 でのモデル指定関連の機能を試す: グローバルプロバイダーのカスタマイズ

Last updated at Posted at 2025-08-03

はじめに

この記事は、公式が以下のポストでアナウンスしていた Vercel の AI SDK 5 について、その新機能の 1つである「グローバルプロバイダーのカスタマイズ」を試してみた話です。

上記でポストされている公式ブログ記事の URL は、以下になります。この記事を見ていて、個人的に気になった内容を試してみた、というのが今回の内容です。

●AI SDK 5 - Vercel
 https://vercel.com/blog/ai-sdk-5

image.png

今回の内容

今回試す内容は、上記の公式ブログでも書かれている Vercel AI SDK 5 の「グローバルプロバイダー」のカスタマイズです。

具体的には、公式ブログの記事の以下の部分です。

image.png

image.png

globalThis.AI_SDK_DEFAULT_PROVIDER = openai という指定をした後、利用するモデルの記載を model: 'gpt-4o' としている例が掲載されています。

過去に Vercel AI SDK を自分が試してきた中では model: openai("【モデル名】") という書き方をしていたものです。

グローバルプロバイダーを指定すると、モデル名をシンプルな文字列で書くことができるようです。

今回試すプロバイダー

今回、グローバルプロバイダーのカスタマイズを試す対象として、AI SDK のプロバイダーの中から以下 2つを使ってみます。

●AI SDK Providers: OpenAI
 https://v5.ai-sdk.dev/providers/ai-sdk-providers/openai

●AI SDK Providers: Google Generative AI
 https://v5.ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai

さっそく試す

さっそく試してみます。

下準備

今回試す内容が進められるよう、以下のパッケージをインストールします。

npm i ai @ai-sdk/openai @ai-sdk/google

また、以下の環境変数の設定を行っておきます。

  • APIキーを設定する環境変数の名前
    • OpenAI用: OPENAI_API_KEY
    • Gemini用: GOOGLE_GENERATIVE_AI_API_KEY

試したコード1

上記の下準備が終わったら、以下のコードを実行してみます。

import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";

globalThis.AI_SDK_DEFAULT_PROVIDER = openai;

async function main() {
  const response1 = await generateText({
    model: "gpt-4.1-mini",
    prompt: "あなたは誰?",
  });

  const response2 = await generateText({
    model: "o4-mini",
    prompt: "あなたは誰?",
  });

  console.log("レスポンス1: ", response1.text);
  console.log("レスポンス2: ", response2.text);

  const model1 = response1.steps.at(-1)?.response?.modelId ?? "情報なし";
  const model2 = response2.steps.at(-1)?.response?.modelId ?? "情報なし";
  console.log("\n--- 呼び出したモデル ---");
  console.log("レスポンス1: ", model1);
  console.log("レスポンス2: ", model2);
}

main().catch(console.error);

globalThis.AI_SDK_DEFAULT_PROVIDER = openai という指定を行い、その後にモデル名の部分で model: "gpt-4.1-mini""o4-mini" を指定しています。

実行結果

上記のコードの実行結果は、以下のとおりです。

image.png

出力の内容は、レスポンスの内容と、呼び出したモデルの情報(レスポンスとして得られた情報の中から取り出したもの)です。以下のモデルが使われたという情報が得られていました。

  • レスポンス1: gpt-4.1-mini-2025-04-14
  • レスポンス2: o4-mini-2025-04-16

コード内で指定したモデルが使われているのが確認できました。

試したコード2

次に実行してみたコードは、以下のとおりです。

import { generateText } from "ai";
import { google } from "@ai-sdk/google";

globalThis.AI_SDK_DEFAULT_PROVIDER = google;

async function main() {
  const response1 = await generateText({
    model: "gemini-2.5-flash",
    prompt: "あなたは誰?",
  });

  const response2 = await generateText({
    model: "gemini-2.5-flash-lite",
    prompt: "あなたは誰?",
  });

  console.log("レスポンス1: ", response1.text);
  console.log("レスポンス2: ", response2.text);

  const model1 = response1.steps.at(-1)?.response?.modelId ?? "情報なし";
  const model2 = response2.steps.at(-1)?.response?.modelId ?? "情報なし";
  console.log("\n--- 呼び出したモデル ---");
  console.log("レスポンス1: ", model1);
  console.log("レスポンス2: ", model2);
}

main().catch(console.error);

実行結果

実行結果は以下のとおりです。

image.png

レスポンスの内容とともに得られた、呼び出したモデルの情報は以下でした。

  • レスポンス1: gemini-2.5-flash
  • レスポンス2: gemini-2.5-flash-lite

こちらも、コード内で指定していたモデルです。

おわりに

今回、Vercel の AI SDK 5 の「グローバルプロバイダーのカスタマイズ」を試しました。それにより、モデルの指定の部分を、シンプルな文字列で書くことができるようになりました。

今回の例は簡単な内容のため、メリットが感じられないものでしたが、もう少し情報を見て活用方法を示せればと思います。

Vercel AI Gateway

また今回の内容を見ている中で目にした、以下も気になったので詳細を確認できればと思いました。

●Introducing the AI Gateway - Vercel
 https://vercel.com/blog/ai-gateway

●AI Gateway
 https://vercel.com/docs/ai-gateway

その他の情報

公式情報としては、AI SDK 4.0 から 5.0 へのマイグレーションのためのガイドも出ています。

●Migration Guides: Migrate AI SDK 4.0 to 5.0
 https://v5.ai-sdk.dev/docs/migration-guides/migration-guide-5-0

0
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
0
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?