Skip to main content

概要

revolution/laravel-amazon-bedrock は、Laravel AI SDK で Amazon Bedrock を使うためのドライバーです。Bedrock の複数モデルを Laravel AI SDK の統一 API で扱えます。
表の ⚠️ は「機能自体が未対応」ではなく「Bedrock API キーのみでは利用できない」ことを示します。
Laravel AI SDK v0.6.3 で Bedrock API キーを使った Text・Image・Embeddings の公式対応が追加されました。このパッケージは Amazon Polly を利用した音声(TTS)やリランキングなど公式統合では利用できない機能もサポートしているため、引き続き公開を継続しています。
主な特徴は次のとおりです。
  • 認証: Bedrock API キー、AWS IAM クレデンシャル(SigV4)、デフォルト AWS クレデンシャルチェーン(IAM ロール、インスタンスプロファイル等)から選べます。
  • フェイルオーバー: AI SDK のマルチプロバイダーフェイルオーバーに対応。レート制限(429)、過負荷(503、529)、クレジット系エラーはフェイルオーバー可能な例外にマッピングされます。
  • キャッシュ制御: Bedrock Converse API のシステムプロンプトに ephemeral キャッシュを常時有効化。
  • 統一 API: Anthropic Claude、Amazon Nova、Meta Llama、Mistral など全モデルを Bedrock Converse API 経由で統一インターフェースで扱えます。

必要要件

  • PHP >= 8.3
  • Laravel >= 12.x

インストール

1

パッケージをインストールする

2

AI SDK の設定を公開する

設定

config/ai.phpamazon-bedrock プロバイダーを追加します。必要に応じて既定プロバイダーも Bedrock に切り替えます。

Option 1: Bedrock API キー

Bedrock API キーは AWS マネジメントコンソールから取得します。
Bedrock API キーは Bedrock Runtime API 専用です。bedrock-agent-runtime を使うリランキングや Amazon Polly(TTS)では使えません。これらは SigV4 またはデフォルト AWS クレデンシャルチェーンを使ってください。

Option 2: AWS IAM クレデンシャル(SigV4)

Signature Version 4 で署名する AWS アクセスキーとシークレットキーを使います。
AWS_SESSION_TOKEN は一時クレデンシャル(STS)を使う場合のみ設定します。

Option 3: デフォルト AWS クレデンシャルチェーン(IAM ロール)

EC2 / ECS / Lambda など IAM ロールがある環境では、keysecret を省略して デフォルトの AWS クレデンシャルプロバイダーチェーン を使えます。
デフォルトのクレデンシャルチェーンは、環境変数、共有クレデンシャルファイル(~/.aws/credentials)、ECS タスクロール、EC2 インスタンスプロファイルなどから自動で解決します。

任意の設定キー

テキスト生成

Agent クラス

Artisan コマンドで Agent クラスを作成します。

Anonymous Agent

クラスを作らずに手早く使う場合は agent() ヘルパーを利用します。

ストリーミング

イベントを手動で扱うこともできます。

ツール使用(Function Calling)

生成中に呼び出されるツールを定義します。
Agent から利用します。
Anonymous Agent でも使えます。
ストリーミングでもツール呼び出しは動作します。SDK が自動でツールを実行し、最終的なテキスト応答が出るまで会話を継続します。

ファイル添付

attachments パラメーターで画像、ドキュメント、音声、動画ファイルをプロンプトに添付できます。Bedrock Converse API が添付ブロックを処理しますが、実際にどの形式が使えるかはモデルに依存します(例: Anthropic Claude は画像とドキュメントのみ対応)。
サポートされている添付タイプは Laravel\Ai\Files\*ImageDocumentAudio です。動画は Illuminate\Http\UploadedFile 経由で添付できます。
サーバー側のファイルアップロード(Document::fromPath()->put())や ID 経由の再利用(Document::fromId())は Bedrock では未対応です。

会話履歴

複数ターンの会話を維持するには Agent クラスで Conversational インターフェースを実装します。messages() で過去の会話メッセージを返すと、各プロンプトに自動で含まれます。

RemembersConversations で自動保存

messages() を自分で実装したくない場合は RemembersConversations トレイトで完全自動の会話保存を利用できます。AI SDK のデータベーステーブルが必要なので、先に php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider" && php artisan migrate を実行してください。
新しい会話を開始します。
既存の会話を継続します。
Bedrock ドライバーは Bedrock Converse API リクエストに会話履歴を自動で含めるため、対応する全モデルでマルチターン会話のコンテキストを利用できます。

構造化出力

HasStructuredOutput インターフェースを実装すると、型付きの応答を取得できます。
Anonymous Agent でも構造化出力が使えます。
内部的にはスキーマに沿った値を返させる合成ツール(output_structured_data)を作成しています。この方式は Converse API 経由で Bedrock 上の全モデルと互換性があります。

Converse API(全モデル)

すべてのテキスト生成とストリーミングは Bedrock Converse API 経由で実行されます。Anthropic Claude も含めて統一されており、Amazon Nova、Meta Llama、Mistral、Cohere、DeepSeek など、Bedrock 上の各種モデルを同じインターフェースで利用できます。
ストリーミング、ツール使用、構造化出力、ファイル添付は、それらをサポートしているモデルで動作します。詳細は Bedrock 対応モデル一覧 を参照してください。

Provider Options

anthropic_version などの Bedrock 固有オプションを渡すには HasProviderOptions を実装します。
サポートされる Provider Options:

Agent の設定属性

PHP 属性でテキスト生成のオプションを設定できます。

画像生成

Stability AI モデル(既定)または Amazon Nova Canvas を使って画像を生成します。
利用できる Stability AI モデル(すべて us-west-2 リージョンが必要):
Stability AI の画像モデルは us-west-2 でのみ利用可能です。これらのモデルを使うときは AWS_DEFAULT_REGION=us-west-2 を設定してください。

Stability AI による画像編集

Stability AI Image Services の編集系モデルも attachments() メソッドで利用できます。入力画像を渡し、編集モデルで変換します。
利用できる Stability AI 編集モデル(すべて us-east-1us-east-2us-west-2 で利用可能): Amazon Nova Canvas もサポートしていますが、AWS により非推奨化が進んでいます。

音声(TTS)

Amazon Polly を使ってテキストから音声を生成します。
男声 / 女声を指定できます。
特定の Polly ボイス を指定します。
生成された音声を保存します。
エンジン(モデル)を指定することもできます。
既定ボイス: default-female → Ruth、default-male → Matthew(どちらも generative エンジンに対応)。
Amazon Polly は Bedrock とは別の AWS サービスです。Bedrock API キー(bearer token)は Polly では使えません。AWS IAM クレデンシャル(SigV4)またはデフォルト AWS クレデンシャルチェーンを使ってください。

埋め込み

Amazon Titan Embeddings V2 を使ってベクトル埋め込みを生成します。
次元数を指定できます(Titan Embeddings V2 は 256、512、1024)。
カスタムモデルを指定する例。

Cohere Embed モデル

Cohere Embed モデルは自動検出され、バッチ API を使用します。Titan が入力ごとに HTTP リクエストを送るのに対し、Cohere は全入力を 1 リクエストにまとめるため、複数テキストを処理する場合に効率的です。
Cohere Embed モデルはトークン数を返さないため、$response->tokens は常に 0 です。

リランキング

Cohere Rerank 3.5 や Amazon Rerank 1.0 を使い、クエリとの関連度でドキュメントを並べ替えます。
カスタムモデルを指定する例。
リランキング API は bedrock-agent-runtime エンドポイントを使います(bedrock-runtime ではありません)。Amazon Rerank 1.0 は us-east-1 で利用できないため、そのリージョンでは Cohere Rerank 3.5 を使ってください。

テスト

AI SDK の標準的なテスト機能をそのまま利用できます。 公式ドキュメントには記載がありませんが、agent() ヘルパーで作った Anonymous Agent は AnonymousAgent::fake()、構造化出力版は StructuredAnonymousAgent::fake() でモックできます。
最新情報は GitHub リポジトリ を参照してください。
最終更新日 2026年7月26日