メインコンテンツへスキップ

AWS Bedrock

@aigne/bedrock パッケージは、AIGNE フレームワークと Amazon Web Services (AWS) Bedrock との間の直接的で堅牢な統合を提供します。これにより、開発者は AWS のスケーラブルで安全なインフラストラクチャを活用しつつ、一貫したインターフェースを維持しながら、AIGNE アプリケーション内で AWS Bedrock を通じて利用可能な多様な基盤モデルを活用できます。

このガイドでは、BedrockChatModel のインストール、設定、および使用方法の体系的な概要を説明します。その他のモデルの詳細については、メインの モデル概要 を参照してください。

インストール

まず、お好みのパッケージマネージャーを使用して必要なパッケージをインストールします。@aigne/core パッケージは必須のピア依存関係です。

Terminal

bash
# npm を使用する場合
npm install @aigne/bedrock @aigne/core

# yarn を使用する場合
yarn add @aigne/bedrock @aigne/core

# pnpm を使用する場合
pnpm add @aigne/bedrock @aigne/core

設定

適切な設定には、AWS 認証情報の設定と、希望するパラメータでの BedrockChatModel のインスタンス化が含まれます。

AWS 認証情報

AWS SDK は、リクエストを認証するために認証情報を必要とします。認証情報は次の 2 つの方法のいずれかで提供できます。

  1. 環境変数(推奨): 開発環境またはデプロイ環境で以下の環境変数を設定します。SDK はこれらを自動的に検出して使用します。
  • AWS_ACCESS_KEY_ID: AWS アクセスキー ID。
  • AWS_SECRET_ACCESS_KEY: AWS シークレットアクセスキー。
  • AWS_REGION: Bedrock サービスが有効になっている AWS リージョン(例: us-east-1)。
  1. 直接インスタンス化: 認証情報を BedrockChatModel コンストラクタに直接渡します。この方法は特定のユースケースには適していますが、一般的に環境変数を使用するよりも安全性が低くなります。

BedrockChatModel オプション

BedrockChatModel は、AWS Bedrock と対話するための主要なクラスです。そのコンストラクタは、動作を設定するためのオプションオブジェクトを受け入れます。

  • accessKeyId string — AWS アクセスキー ID。提供されない場合、SDK は AWS_ACCESS_KEY_ID 環境変数から読み取ろうとします。
  • secretAccessKey string — AWS シークレットアクセスキー。提供されない場合、SDK は AWS_SECRET_ACCESS_KEY 環境変数から読み取ろうとします。
  • region string — Bedrock サービスの AWS リージョン。提供されない場合、SDK は AWS_REGION 環境変数から読み取ろうとします。
  • model string (default: us.amazon.nova-lite-v1:0) — 使用する基盤モデルの ID(例: anthropic.claude-3-sonnet-20240229-v1, meta.llama3-8b-instruct-v1)。
  • modelOptions object — モデルの推論動作を制御するための追加オプション。
    • temperature number — 生成におけるランダム性を制御します。値が高いほど、より創造的な応答になります。
    • topP number — ニュークリアスサンプリングを制御します。モデルは、上位 P の確率質量を持つトークンのみを考慮します。
  • clientOptions object — AWS SDK の基盤となる BedrockRuntimeClient に直接渡される高度な設定オプション。

使用例

以下の例では、標準的な呼び出しとストリーミング呼び出しの両方で BedrockChatModel を使用する方法を示します。

基本的な使用方法

この例では、モデルをインスタンス化し、それを呼び出して単一の完全な応答を取得する方法を示します。

Basic Invocation

typescript
import { BedrockChatModel } from "@aigne/bedrock";

// 認証情報とモデル ID でモデルをインスタンス化
const model = new BedrockChatModel({
  accessKeyId: "YOUR_ACCESS_KEY_ID", // または環境変数を使用
  secretAccessKey: "YOUR_SECRET_ACCESS_KEY", // または環境変数を使用
  region: "us-east-1", // AWS リージョンを指定
  model: "anthropic.claude-3-haiku-20240307-v1:0",
  modelOptions: {
    temperature: 0.7,
  },
});

// 入力メッセージを定義
const result = await model.invoke({
  messages: [{ role: "user", content: "Hello, what is AWS Bedrock?" }],
});

console.log(result.text);

出力は、モデルの応答を含む文字列になります。result オブジェクトには使用状況のメトリクスも含まれています。

ストリーミング応答

リアルタイムのフィードバックが必要なアプリケーションでは、生成される応答をストリーミングできます。これは、チャットボットやその他のインタラクティブな体験に役立ちます。

Streaming Invocation

typescript
import { BedrockChatModel } from "@aigne/bedrock";
import { isAgentResponseDelta } from "@aigne/core";

const model = new BedrockChatModel({
  accessKeyId: "YOUR_ACCESS_KEY_ID",
  secretAccessKey: "YOUR_SECRET_ACCESS_KEY",
  region: "us-east-1",
  model: "anthropic.claude-3-haiku-20240307-v1:0",
  modelOptions: {
    temperature: 0.7,
  },
});

const stream = await model.invoke(
  {
    messages: [{ role: "user", content: "Hello, what is AWS Bedrock?" }],
  },
  { streaming: true },
);

let fullText = "";

for await (const chunk of stream) {
  // タイプガードを使用してチャンクがデルタであるかを確認
  if (isAgentResponseDelta(chunk)) {
    const text = chunk.delta.text?.text;
    if (text) {
      fullText += text;
      process.stdout.write(text); // 応答の各部分が届くたびに表示
    }
  }
}

console.log("\n--- Full Response ---");
console.log(fullText);

このコードは AgentResponseChunk オブジェクトのストリームを処理します。各チャンクには応答の差分が含まれており、これを蓄積して完全なテキストを形成します。

サポートされているモデル

AWS Bedrock は、Anthropic、Cohere、Meta、Stability AI、Amazon などの主要な AI 企業が提供する多種多様な基盤モデルへのアクセスを提供します。一意の modelId を使用して、目的のモデルを指定できます。

一般的に使用されるモデルファミリーには、以下のようなものがあります。

  • Anthropic Claude: anthropic.claude-3-sonnet-20240229-v1:0, anthropic.claude-3-haiku-20240307-v1:0
  • Meta Llama: meta.llama3-8b-instruct-v1:0
  • Amazon Titan: amazon.titan-text-express-v1

利用可能なモデルとその対応する ID の完全かつ最新のリストについては、AWS Bedrock の公式ドキュメント を参照してください。

まとめ

@aigne/bedrock パッケージは、AWS Bedrock の強力な基盤モデルを AIGNE アプリケーションに統合するための合理化された方法を提供します。このガイドで概説されている設定手順と使用パターンに従うことで、AI 駆動の機能を効率的に構築し、デプロイできます。

ツールの使用や構造化出力などのより高度なトピックについては、AI Agent のドキュメントを参照してください。