ai-sdk-core について
ai-sdk-core は、Vercel AI SDK v5 でバックエンド AI 機能を構築するためのスキルです。テキストや構造化データの生成、ストリーミング、ツール呼び出し、複数ステップのエージェント、プロバイダー設定を扱います。
主な機能
- 01テキストと構造化データの生成
- 02ストリーミング生成への対応
- 03複数モデルプロバイダーの設定
- 04ツール呼び出しとエージェントの実装
- 05v4 から v5 への移行案内
活用シーン
- 01サーバー側のテキスト生成の構築
- 02スキーマを使った構造化データの抽出
- 03ツールを使う複数ステップのエージェント作成
- 04AI SDK v4 プロジェクトの v5 への移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ secondsky/ claude-skills --skill ai-sdk-coreインストール後、Claude Code で/ai-sdk-coreを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/core-functions.mderror-catalog.mdlinks-to-official-docs.mdproduction-guide.mdproduction-patterns.mdprovider-setup.mdproviders-quickstart.mdtools-and-agents.mdtop-errors.mdv4-to-v5-migration.mdv5-breaking-changes.mdscripts/check-versions.shtemplates/agent-with-tools.tsanthropic-setup.tscloudflare-worker-integration.tsgenerate-object-zod.tsgenerate-text-basic.tsgoogle-setup.tsmulti-step-execution.tsnextjs-server-action.tsopenai-setup.tspackage.jsonstream-object-zod.tsstream-text-chat.tstools-basic.ts詳細
AI SDK コア
Vercel AI SDK v5 による、本番環境向けのバックエンド AI です。
最終更新日:2025-11-21
目次
- クイックスタート
- コア関数
- プロバイダーのセットアップと構成
- ツール呼び出しとエージェント
- v4 から v5 への重要な移行
- よくあるエラー 12 件と解決策
- 本番環境向けのベストプラクティス
- リファレンスを読み込むタイミング
- このスキルを使うタイミング
- 依存関係とバージョン
- 公式ドキュメントへのリンク
- テンプレートとリファレンス
クイックスタート(5 分)
インストール
bun add ai @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google workers-ai-provider zod # preferred
# or: npm install ai @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google workers-ai-provider zod
環境変数
# .env
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_GENERATIVE_AI_API_KEY=...
最初の例:テキストを生成する
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
const result = await generateText({
model: openai('gpt-4-turbo'),
prompt: 'What is TypeScript?',
});
console.log(result.text);
最初の例:ストリーミングチャット
import { streamText } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
const stream = streamText({
model: anthropic('claude-sonnet-4-5-20250929'),
messages: [
{ role: 'user', content: 'Tell me a story' },
],
});
for await (const chunk of stream.textStream) {
process.stdout.write(chunk);
}
最初の例:構造化出力
import { generateObject } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
const result = await generateObject({
model: openai('gpt-4'),
schema: z.object({
name: z.string(),
age: z.number(),
skills: z.array(z.string()),
}),
prompt: 'Generate a person profile for a software engineer',
});
console.log(result.object);
// { name: "Alice", age: 28, skills: ["TypeScript", "React"] }
安全なインストール
この操作では、6 つ以上の AI プロバイダーパッケージを同時にインストールします。監査対象となる依存関係が広範囲に及びます。インストールする前に、サプライチェーンセキュリティのベストプラクティスに従ってください。
- インストール後スクリプトをブロックする —
npm config set ignore-scripts true(または Bun:デフォルトで無効) - クールダウン期間を設ける — 新しいパッケージバージョンがコミュニティによって検証されるまで、7 日間待ちます
- インストール前に監査する —
socket package score npm <pkg>を実行するか、socket npm install <pkg>を使用してパッケージを確認します
Socket CLI との統合、クールダウンの設定、ロックファイルの検証、CI での適用など、セキュリティ構成の全容については、dependency-upgrade スキルを読み込んでください。
コア関数
4 つのコア関数すべての完全な API リファレンスについては、references/core-functions.md を読み込んでください。
概要
AI SDK v5 には、4 つのコア関数があります。
| 関数 | 出力 | ストリーミング | 用途 |
|---|---|---|---|
generateText() | テキスト | いいえ | バッチ処理、単純な補完 |
streamText() | テキスト | はい | チャット UI、長い応答 |
generateObject() | 構造化データ | いいえ | データ抽出、JSON 生成 |
streamObject() | 構造化データ | はい | リアルタイムフォーム、段階的な UI |
基本的な例
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
const result = await generateText({
model: openai('gpt-4-turbo'),
prompt: 'Explain quantum computing',
});
console.log(result.text);
→ 次の内容については、references/core-functions.md を読み込んでください: 完全なシグネチャ、ツールの使用パターン、エラー処理、ストリーミングの例、比較表
プロバイダーのセットアップと構成
すべてのプロバイダーの完全なセットアップ手順については、references/provider-setup.md を読み込んでください。
概要
AI SDK v5 は、主要な 4 つのプロバイダーに対応しています。
| プロバイダー | 環境変数 | 最新モデル |
|---|---|---|
| OpenAI | OPENAI_API_KEY | GPT-5、GPT-4 Turbo |
| Anthropic | ANTHROPIC_API_KEY | Claude Sonnet 4.5、Opus 4 |
GOOGLE_GENERATIVE_AI_API_KEY | Gemini 2.5 Pro/Flash | |
| Cloudflare | Workers AI バインディング | Llama 3.1、Qwen 2.5 |
基本的なセットアップ
import { openai } from '@ai-sdk/openai';
import { generateText } from 'ai';
// API key from environment
const result = await generateText({
model: openai('gpt-4-turbo'),
prompt: 'Hello',
});
→ 次の内容については、references/provider-setup.md を読み込んでください: API 構成の全容、レート制限、エラー処理、Cloudflare Workers の最適化、モデル選択ガイド
ツール呼び出しとエージェント
ツールとエージェントの詳細なドキュメントについては、references/tools-and-agents.md を読み込んでください。
概要
ツールを使うと、モデルから外部関数を呼び出せます。エージェントは複数段階のワークフローを管理します。
v5 でのツールの変更点:
parameters→inputSchema(Zod スキーマ)- ツールのプロパティ:
args→input、result→output maxSteps→stopWhen(stepCountIs(n))
基本的なツールの例
import { generateText, tool } from 'ai';
import { z } from 'zod';
const result = await generateText({
model: openai('gpt-4'),
tools: {
weather: tool({
description: 'Get weather for a location',
inputSchema: z.object({ location: z.string() }),
execute: async ({ location }) => {
return { temperature: 72, condition: 'sunny' };
},
}),
},
prompt: 'What is the weather in Tokyo?',
});
→ 次の内容については、references/tools-and-agents.md を読み込んでください: Agent クラスの使用方法、複数段階の実行、動的なツール、停止条件
v4 から v5 への重要な移行
移行ガイドの全容については、references/v4-to-v5-migration.md を読み込んでください。
重大な破壊的変更
AI SDK v5 には、9 つの重大な破壊的変更があります。
maxTokens→maxOutputTokensparameters→inputSchema(Zod)maxSteps→stopWhen(stepCountIs(n))CoreMessage→ModelMessage- パッケージの再編成(
ai/rsc→@ai-sdk/rsc)
自動移行
bunx ai migrate # Auto-migrates most changes
→ 次の内容については、references/v4-to-v5-migration.md を読み込んでください: 破壊的変更の完全なリスト、移行例、チェックリスト、公式移行ガイドへのリンク
よくあるエラーと解決方法 12 選
1. AI_APICallError
原因: API リクエストに失敗しました(ネットワーク、認証、レート制限)。
解決方法:
import { AI_APICallError } from 'ai';
try {
const result = await generateText({
model: openai('gpt-4'),
prompt: 'Hello',
});
} catch (error) {
if (error instanceof AI_APICallError) {
console.error('API call failed:', error.message);
console.error('Status code:', error.statusCode);
console.error('Response:', error.responseBody);
// Check common causes
if (error.statusCode === 401) {
// Invalid API key
} else if (error.statusCode === 429) {
// Rate limit - implement backoff
} else if (error.statusCode >= 500) {
// Provider issue - retry
}
}
}
予防策:
- 起動時に API キーを検証する
- 指数バックオフによる再試行ロジックを実装する
- レート制限を監視する
- ネットワークエラーを適切に処理する
2. AI_NoObjectGeneratedError
原因: モデルがスキーマに一致する有効なオブジェクトを生成しませんでした。
解決方法:
import { AI_NoObjectGeneratedError } from 'ai';
try {
const result = await generateObject({
model: openai('gpt-4'),
schema: z.object({ /* complex schema */ }),
prompt: 'Generate data',
});
} catch (error) {
if (error instanceof AI_NoObjectGeneratedError) {
console.error('No valid object generated');
// Solutions:
// 1. Simplify schema
// 2. Add more context to prompt
// 3. Provide examples in prompt
// 4. Try different model (gpt-4 better than gpt-3.5 for complex objects)
}
}
予防策:
- シンプルなスキーマから始め、段階的に複雑さを加える
- プロンプトに例を含める:「次のような人物を生成してください:{ name: 'Alice', age: 30 }」
- 複雑な構造化出力には GPT-4 を使用する
- まずサンプルデータでスキーマをテストする
3. Worker の起動時間制限(270ms 以上)
原因: AI SDK v5 と Zod の初期化オーバーヘッドにより、Cloudflare Workers の起動時間制限を超えます。
解決方法:
// BAD: Top-level imports cause startup overhead
import { createWorkersAI } from 'workers-ai-provider';
import { complexSchema } from './schemas';
const workersai = createWorkersAI({ binding: env.AI });
// GOOD: Lazy initialization inside handler
export default {
async fetch(request, env) {
const { createWorkersAI } = await import('workers-ai-provider');
const workersai = createWorkersAI({ binding: env.AI });
// Use workersai here
}
}
予防策:
- AI SDK のインポートをルートハンドラー内に移動する
- トップレベルの Zod スキーマを最小限にする
- Worker の起動時間を監視する(400ms 未満である必要があります)
- Wrangler の起動時間レポートを使用する
GitHub Issue: Vercel AI SDK の Issue で「Workers startup limit」を検索してください。
→ エラー #4〜#12 の完全な解決方法については、references/error-catalog.md を読み込んでください。
残りの 9 つのエラー: 4. streamText が無言で失敗する(v4.1.22 で解決済み) 5. AI_LoadAPIKeyError 6. AI_InvalidArgumentError 7. AI_NoContentGeneratedError 8. AI_TypeValidationError 9. AI_RetryError 10. レート制限エラー 11. Zod 使用時の TypeScript のパフォーマンス 12. 無効な JSON レスポンス(プロバイダー固有)
エラーカタログの全項目: https://ai-sdk.dev/docs/reference/ai-sdk-errors のエラーリファレンス全体を参照してください。
本番環境でのベストプラクティス
本番環境へのデプロイガイド全体については、references/production-guide.md を読み込んでください。
主なカテゴリー
- パフォーマンス:ストリーミングのパターン、トークン制限、プロバイダーのキャッシュ、Zod の最適化
- エラー処理:try-catch のパターン、再試行ロジック、適切なログ記録
- コストの最適化:モデルの選択、トークン制限、レスポンスのキャッシュ
- Cloudflare Workers:遅延インポート、起動の監視、ストリーミングレスポンス
- Next.js/Vercel:Server Actions、Server Components、読み込み状態
簡単な例
// Use streaming for user-facing responses
const stream = streamText({
model: openai('gpt-4'),
prompt: 'Long essay',
maxOutputTokens: 500,
maxRetries: 3,
});
return stream.toDataStreamResponse();
→ プラットフォーム固有のパターン、デプロイのチェックリスト、最適化戦略については、references/production-guide.md を読み込んでください。
リファレンスを読み込むタイミング
次の場合は references/core-functions.md を読み込みます:
- generateText、streamText、generateObject、streamObject の完全な API ドキュメントが必要な場合
- 関数のシグネチャ、パラメーター、戻り値の型について質問がある場合
- 詳細なツールの使用パターンやストリーミングの例が必要な場合
- 関数固有のエラーをトラブルシューティングする場合
次の場合は references/provider-setup.md を読み込みます:
- OpenAI、Anthropic、Google、Cloudflare Workers AI をセットアップする場合
- API キーや環境変数を設定する場合
- プロバイダー固有のエラー(レート制限、認証)をトラブルシューティングする場合
- 各プロバイダーでのモデル選択やベストプラクティスについて質問がある場合
- Cloudflare Workers の起動を最適化する必要がある場合
次の場合は references/tools-and-agents.md を読み込みます:
- ツール呼び出しやエージェントのワークフローを実装する場合
- Agent クラスと生の generateText の違いについて質問がある場合
- stopWhen を使った複数ステップの実行をセットアップする場合
- 動的なツールや複雑なエージェントのパターンを扱う場合
次の場合は references/v4-to-v5-migration.md を読み込みます:
- 既存の v4 コードベースを v5 に移行する場合
- 破壊的変更について質問がある場合
- 移行の例や自動移行ツールが必要な場合
- 移行に関するエラーをトラブルシューティングする場合
次の場合は references/error-catalog.md を読み込みます:
- ユーザーが、インラインで示されている上位 3 件以外の、よくある 12 件のエラーに遭遇した場合
- コード例付きの完全なエラー解決方法が必要な場合
- 本番環境のエラーをトラブルシューティングする場合
- エラーを防ぐ方法について質問がある場合
次の場合は references/production-guide.md を読み込みます:
- 本番環境にデプロイする場合(プラットフォームを問いません)
- パフォーマンスの最適化が必要な場合
- コストの最適化について質問がある場合
- プラットフォーム固有のパターン(Cloudflare Workers、Next.js/Vercel)を扱う場合
- エラー処理やロギングの戦略が必要な場合
このスキルを使用するタイミング
次の場合は ai-sdk-core を使用します:
- バックエンドの AI 機能(サーバー側のテキスト生成)を構築する場合
- サーバー側のテキスト生成(Node.js、Workers、Next.js)を実装する場合
- 構造化された AI の出力(JSON、フォーム、データ抽出)を作成する場合
- ツールを使う AI エージェント(複数ステップのワークフロー)を構築する場合
- 複数の AI プロバイダー(OpenAI、Anthropic、Google、Cloudflare)を統合する場合
- AI SDK v4 から v5 に移行する場合
- AI SDK のエラー(AI_APICallError、AI_NoObjectGeneratedError など)が発生した場合
- Cloudflare Workers で AI を使用する場合(workers-ai-provider を使用)
- Next.js Server Components/Actions で AI を使用する場合
- 異なる LLM プロバイダー間で一貫した API が必要な場合
次の場合はこのスキルを使用しないでください:
- React のチャット UI を構築する場合(代わりに ai-sdk-ui スキルを使用してください)
- useChat などのフロントエンドフックが必要な場合(代わりに ai-sdk-ui スキルを使用してください)
- 埋め込みや画像生成などの高度なトピックが必要な場合(公式ドキュメントを確認してください)
- 複数プロバイダーを使わずに Cloudflare Workers AI のネイティブアプリを構築する場合(代わりに cloudflare-workers-ai スキルを使用してください)
- Generative UI / RSC が必要な場合(https://ai-sdk.dev/docs/ai-sdk-rsc を参照してください)
依存関係とバージョン
{
"dependencies": {
"ai": "^5.0.116",
"@ai-sdk/openai": "^2.0.88",
"@ai-sdk/anthropic": "^2.0.56",
"@ai-sdk/google": "^2.0.51",
"workers-ai-provider": "^2.0.0",
"zod": "^3.23.8"
},
"devDependencies": {
"@types/node": "^24.10.1",
"typescript": "^5.9.3"
}
}
バージョンに関する注意:
- AI SDK v5.0.116 以降(安定版、2025 年 12 月時点の最新)
- v6 はベータ版のため、このスキルでは扱いません
- Zod の互換性:このスキルでは Zod 3.x を使用しますが、AI SDK 5 は Zod 3.x と Zod 4.x(最新は 4.1.12)の両方を公式にサポートしています
- 新規プロジェクトには Zod 4 を推奨します(2025 年 8 月リリース)
- Zod 4 には破壊的変更があります:エラー API、
.default()の動作、ZodError.errorsの削除 - Zod 4 を使用すると、
zod-to-json-schemaで一部のピア依存関係に関する警告が発生することがあります - 移行ガイドは https://zod.dev/v4/changelog を参照してください
- v5 との互換性には、プロバイダーパッケージ 2.0 以降が必要です
最新バージョンを確認:
npm view ai version
npm view @ai-sdk/openai version
npm view @ai-sdk/anthropic version
npm view @ai-sdk/google version
npm view workers-ai-provider version
npm view zod version # Check for Zod 4.x updates
公式ドキュメントへのリンク
コアドキュメント
- AI SDK の概要: https://ai-sdk.dev/docs/introduction
- AI SDK Core の概要: https://ai-sdk.dev/docs/ai-sdk-core/overview
- テキストの生成: https://ai-sdk.dev/docs/ai-sdk-core/generating-text
- 構造化データの生成: https://ai-sdk.dev/docs/ai-sdk-core/generating-structured-data
- ツールとツール呼び出し: https://ai-sdk.dev/docs/ai-sdk-core/tools-and-tool-calling
- エージェントの概要: https://ai-sdk.dev/docs/agents/overview
- 基礎: https://ai-sdk.dev/docs/foundations/overview
高度なトピック(このスキルには含まれていません)
- 埋め込み: https://ai-sdk.dev/docs/ai-sdk-core/embeddings
- 画像生成: https://ai-sdk.dev/docs/ai-sdk-core/generating-images
- 文字起こし: https://ai-sdk.dev/docs/ai-sdk-core/generating-transcriptions
- 音声: https://ai-sdk.dev/docs/ai-sdk-core/generating-speech
- MCP ツール: https://ai-sdk.dev/docs/ai-sdk-core/mcp-tools
- テレメトリー: https://ai-sdk.dev/docs/ai-sdk-core/telemetry
- 生成 UI: https://ai-sdk.dev/docs/ai-sdk-rsc
移行とトラブルシューティング
- v4→v5 移行ガイド: https://ai-sdk.dev/docs/migration-guides/migration-guide-5-0
- すべてのエラータイプ(全 28 種類): https://ai-sdk.dev/docs/reference/ai-sdk-errors
- トラブルシューティングガイド: https://ai-sdk.dev/docs/troubleshooting
プロバイダーのドキュメント
- OpenAI プロバイダー: https://ai-sdk.dev/providers/ai-sdk-providers/openai
- Anthropic プロバイダー: https://ai-sdk.dev/providers/ai-sdk-providers/anthropic
- Google プロバイダー: https://ai-sdk.dev/providers/ai-sdk-providers/google
- すべてのプロバイダー(25 以上): https://ai-sdk.dev/providers/overview
- コミュニティプロバイダー: https://ai-sdk.dev/providers/community-providers
Cloudflare との統合
- Workers AI プロバイダー(コミュニティ): https://ai-sdk.dev/providers/community-providers/cloudflare-workers-ai
- Cloudflare Workers AI のドキュメント: https://developers.cloudflare.com/workers-ai/
- workers-ai-provider の GitHub: https://github.com/cloudflare/ai/tree/main/packages/workers-ai-provider
- Cloudflare AI SDK の設定: https://developers.cloudflare.com/workers-ai/configuration/ai-sdk/
Vercel / Next.js との統合
- Vercel AI SDK 5.0 ブログ: https://vercel.com/blog/ai-sdk-5
- Next.js App Router との統合: https://ai-sdk.dev/docs/getting-started/nextjs-app-router
- Next.js Pages Router との統合: https://ai-sdk.dev/docs/getting-started/nextjs-pages-router
- Vercel Functions: https://vercel.com/docs/functions
- Vercel Streaming: https://vercel.com/docs/functions/streaming
GitHub とコミュニティ
- GitHub リポジトリ: https://github.com/vercel/ai
- GitHub の Issue: https://github.com/vercel/ai/issues
- Discord コミュニティ: https://discord.gg/vercel
テンプレートとリファレンス
このスキルには以下が含まれています。
- 13 個のテンプレート:
templates/にすぐに使えるコード例を収録 - 5 個のリファレンスドキュメント:
references/に詳細なガイドを収録 - 1 個のスクリプト:
scripts/にバージョンチェッカーを収録
すべてのファイルは、プロジェクトにコピーして貼り付けられるよう最適化されています。
最終更新日: 2025-12-22 スキルのバージョン: 1.1.0 AI SDK のバージョン: 5.0.116+