はじめに
この記事は、公式が以下のポストでアナウンスしていた Vercel の AI SDK 5 について、その新機能の 1つである「グローバルプロバイダーのカスタマイズ」を試してみた話です。
上記でポストされている公式ブログ記事の URL は、以下になります。この記事を見ていて、個人的に気になった内容を試してみた、というのが今回の内容です。
●AI SDK 5 - Vercel
https://vercel.com/blog/ai-sdk-5
今回の内容
今回試す内容は、上記の公式ブログでも書かれている Vercel AI SDK 5 の「グローバルプロバイダー」のカスタマイズです。
具体的には、公式ブログの記事の以下の部分です。
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" を指定しています。
実行結果
上記のコードの実行結果は、以下のとおりです。
出力の内容は、レスポンスの内容と、呼び出したモデルの情報(レスポンスとして得られた情報の中から取り出したもの)です。以下のモデルが使われたという情報が得られていました。
- レスポンス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);
実行結果
実行結果は以下のとおりです。
レスポンスの内容とともに得られた、呼び出したモデルの情報は以下でした。
- レスポンス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




