AI SDK は、画像モデルを使用して指定されたプロンプトに基づいて画像を生成する generateImage 関数を提供しています。
Vercel AI SDK 6 : AI SDK Core – 画像生成
作成 : Masashi Okumura (@classcat.com)
作成日時 : 02/02/2026
バージョン : ai@6.0.67
* 本記事は ai-sdk.dev/docs の以下のページを参考にしています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP

Vercel AI SDK 6.x : AI SDK Core – 画像生成
AI SDK は、画像モデルを使用して指定されたプロンプトに基づいて画像を生成する generateImage 関数を提供しています。
import { generateImage } from 'ai';
import { openai } from '@ai-sdk/openai';
const { image } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'Santa Claus driving a Cadillac',
});
base64 または uint8Array プロパティを使用して画像データにアクセスできます :
const base64 = image.base64; // base64 image data
const uint8Array = image.uint8Array; // Uint8Array image data
設定
サイズとアスペクト比
モデルに依存して、サイズまたはアスペクト比を指定できます。
サイズ
サイズは、形式 {width}x{height} で文字列として指定されます。モデルは限られたサイズのみサポートし、サポートされるサイズは各モデルとプロバイダーで異なります。
import { generateImage } from 'ai';
import { openai } from '@ai-sdk/openai';
const { image } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'Santa Claus driving a Cadillac',
size: '1024x1024',
});
アスペクト比
アスペクト比は、形式 {width}:{height} で文字列として指定されます。モデルは限られたアスペクト比のみサポートし、サポートされるアスペクト比は各モデルとプロバイダーで異なります。
import { generateImage } from 'ai';
import { vertex } from '@ai-sdk/google-vertex';
const { image } = await generateImage({
model: vertex.image('imagen-4.0-generate-001'),
prompt: 'Santa Claus driving a Cadillac',
aspectRatio: '16:9',
});
複数画像の生成
generateImage はまた複数の画像を一度に生成することもサポートしています :
import { generateImage } from 'ai';
import { openai } from '@ai-sdk/openai';
const { images } = await generateImage({
model: openai.image('dall-e-2'),
prompt: 'Santa Claus driving a Cadillac',
n: 4, // number of images to generate
});
各画像モデルは単一の API 呼び出しで生成できる画像の数に内部的な制限があります。AI SDK は、n パラメータを使用して複数の画像をリクエストする場合、リクエストを適切にバッチ処理することでこれを自動的に管理します。デフォルトでは、SDK はプロバイダーが規定した制限を使用します(例えば、DALL-E 3 は 1 回の呼び出し毎に 1 画像だけを生成できますが、DALL-E 2 は 10 までサポートしていました)。
必要に応じて、画像生成時に maxImagesPerCall 設定を使用してこの動作をオーバーライドできます。これは、デフォルトのバッチサイズが最適ではないかもしれない、新しいモデルやカスタムモデルを使用する際に特に有用です :
const { images } = await generateImage({
model: openai.image('dall-e-2'),
prompt: 'Santa Claus driving a Cadillac',
maxImagesPerCall: 5, // Override the default batch size
n: 10, // Will make 2 calls of 5 images each
});
シードの提供
シードを generateImage 関数に提供して、画像生成の出力を制御できます。モデルによりサポートされる場合、同じシードは常に同じ画像を生成します。
import { generateImage } from 'ai';
import { openai } from '@ai-sdk/openai';
const { image } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'Santa Claus driving a Cadillac',
seed: 1234567890,
});
プロバイダー固有の設定
画像モデルは、プロバイダー固有の設定、更にはモデル固有の設定を持つことが良くあります。providerOptions パラメータを使用して、そのような設定を generateImage 関数に渡すことができます。プロバイダー (以下の例では openai) へのオプションはリクエストボディのプロパティになります。
import { generateImage } from 'ai';
import { openai } from '@ai-sdk/openai';
const { image } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'Santa Claus driving a Cadillac',
size: '1024x1024',
providerOptions: {
openai: { style: 'vivid', quality: 'hd' },
},
});
中止 (Abort) シグナルとタイムアウト
generateImage は AbortSignal 型の (オプションの) abortSignal パラメータを受け取ります、これは画像生成プロセスを中止したりタイムアウトを設定するために使用できます。
import { openai } from '@ai-sdk/openai';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'Santa Claus driving a Cadillac',
abortSignal: AbortSignal.timeout(1000), // Abort after 1 second
});
カスタムヘッダ
generateImage は、オプションで Record<string, string> 型の headers パラメータを受け取ります、これは画像生成リクエストにカスタムヘッダを追加するために使用できます。
import { openai } from '@ai-sdk/openai';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'Santa Claus driving a Cadillac',
headers: { 'X-Custom-Header': 'custom-value' },
});
警告
モデルが例えばサポートされないパラメータのような警告を返す場合、レスポンスの warnings プロパティで利用可能になります。
const { image, warnings } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'Santa Claus driving a Cadillac',
});
エラー処理
generateImage が有効な画像を生成できない場合、AI_NoImageGeneratedError が投げられます。
これは、AI プロバイダーが画像の生成に失敗した場合に発生します。以下の理由で発生する可能性があります :
- モデルがレスポンスの生成に失敗した。
- モデルが解析できないレスポンスを生成した。
エラーは問題のログ記録に役立つように以下の情報を保全します :
- responses: タイムスタンプ、モデルとヘッダを含む、画像モデルのレスポンスに関するメタデータ。
- cause: エラーの原因。より詳細なエラー処理のためにこれを使用できます。
import { generateImage, NoImageGeneratedError } from 'ai';
try {
await generateImage({ model, prompt });
} catch (error) {
if (NoImageGeneratedError.isInstance(error)) {
console.log('NoImageGeneratedError');
console.log('Cause:', error.cause);
console.log('Responses:', error.responses);
}
}
以上
