blog top

AI SDK から Bedrock を呼び出す

みなさんはVercelのAI SDKを使ったことがありますか?

TypeScriptのみのSDKですが、これを使うと様々な生成AIのモデルを統一的に呼び出すことができます。

とくにAIエージェントの開発などにおいては、複数のプロバイダーが出しているたくさんのモデルを切り替えて試してみたいなぁとなるのですが、そんなときに重宝します。

そして、Amazon Bedrock Providerというのが存在しており、これを使うとAI SDKをBedrockに対応させることができます。

今回のサンプルコードはGitHubのリポジトリで公開しています。

実際に使ってみる

Denoで試してみます。以下のようにmain.tsを作成しました。

// main.ts (Deno)

import { generateText } from "npm:ai@5.0.71";
import { createAmazonBedrock } from "npm:@ai-sdk/amazon-bedrock@3.0.38";

const bedrock = createAmazonBedrock({
  region: "ap-northeast-1",
});

const model = bedrock("amazon.nova-lite-v1:0");

const { text } = await generateText({
  model,
  prompt: "こんにちは",
});

console.log(text);

AWSの認証情報をセットした後、deno run --allow-env --allow-net main.tsで呼び出します。

Bedrockからの応答。「こんにちは!今日はどんなことをお手伝いできますか?質問があれば、遠慮なく聞いてくださいね。元気に過ごせていますか?」

すごくねぎらってくれていますね。

クロスリージョン推論

Nova Proを同様に使ってみると、以下のエラーが出ます。

error: Uncaught (in promise) AI_APICallError: Invocation of model ID amazon.nova-pro-v1:0 with on-demand throughput isn’t supported. Retry your request with the ID or ARN of an inference profile that contains this model.

Nova Proの他に、Claude Sonnet 4なども同様の応答が返ってきます。

これらのモデルはクロスリージョン推論にのみ対応しており、モデル名に接頭辞を付ける必要があります。

ap-northeast-1で使っている場合は、apacとなります。

const model = bedrock("apac.amazon.nova-pro-v1:0");

私は最初、ここではまりました。詳しくは公式ドキュメントのクロスリージョン推論プロファイルの項目を参照してください。

全体は以下のようになります。

// main.ts (Deno)

import { generateText } from "npm:ai@5.0.71";
import { createAmazonBedrock } from "npm:@ai-sdk/amazon-bedrock@3.0.38";

const bedrock = createAmazonBedrock({
  region: "ap-northeast-1",
});

const model = bedrock("apac.amazon.nova-pro-v1:0");

const { text } = await generateText({
  model,
  prompt: "こんにちは",
});

console.log(text);

他のモデルは?

感想

いろんなモデルと簡単におしゃべりできていいですね。

Nova LiteとDeepSeek-V3.1でほっこりしました。

これからも生成AIまわりの記事はぼちぼち書いていこうと思います。