概要
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.php に amazon-bedrock プロバイダーを追加します。必要に応じて既定プロバイダーも Bedrock に切り替えます。
Option 1: Bedrock API キー
Option 2: AWS IAM クレデンシャル(SigV4)
Signature Version 4 で署名する AWS アクセスキーとシークレットキーを使います。AWS_SESSION_TOKEN は一時クレデンシャル(STS)を使う場合のみ設定します。Option 3: デフォルト AWS クレデンシャルチェーン(IAM ロール)
EC2 / ECS / Lambda など IAM ロールがある環境では、key と secret を省略して デフォルトの AWS クレデンシャルプロバイダーチェーン を使えます。
~/.aws/credentials)、ECS タスクロール、EC2 インスタンスプロファイルなどから自動で解決します。
任意の設定キー
テキスト生成
Agent クラス
Artisan コマンドで Agent クラスを作成します。Anonymous Agent
クラスを作らずに手早く使う場合はagent() ヘルパーを利用します。
ストリーミング
ツール使用(Function Calling)
生成中に呼び出されるツールを定義します。ファイル添付
attachments パラメーターで画像、ドキュメント、音声、動画ファイルをプロンプトに添付できます。Bedrock Converse API が添付ブロックを処理しますが、実際にどの形式が使えるかはモデルに依存します(例: Anthropic Claude は画像とドキュメントのみ対応)。
Laravel\Ai\Files\* の Image、Document、Audio です。動画は 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 を実行してください。
構造化出力
HasStructuredOutput インターフェースを実装すると、型付きの応答を取得できます。
output_structured_data)を作成しています。この方式は Converse API 経由で Bedrock 上の全モデルと互換性があります。
Converse API(全モデル)
すべてのテキスト生成とストリーミングは Bedrock Converse API 経由で実行されます。Anthropic Claude も含めて統一されており、Amazon Nova、Meta Llama、Mistral、Cohere、DeepSeek など、Bedrock 上の各種モデルを同じインターフェースで利用できます。Provider Options
anthropic_version などの Bedrock 固有オプションを渡すには HasProviderOptions を実装します。
Agent の設定属性
PHP 属性でテキスト生成のオプションを設定できます。画像生成
Stability AI モデル(既定)または Amazon Nova Canvas を使って画像を生成します。us-west-2 リージョンが必要):
Stability AI の画像モデルは
us-west-2 でのみ利用可能です。これらのモデルを使うときは AWS_DEFAULT_REGION=us-west-2 を設定してください。Stability AI による画像編集
Stability AI Image Services の編集系モデルもattachments() メソッドで利用できます。入力画像を渡し、編集モデルで変換します。
us-east-1、us-east-2、us-west-2 で利用可能):
Amazon Nova Canvas もサポートしていますが、AWS により非推奨化が進んでいます。
音声(TTS)
Amazon Polly を使ってテキストから音声を生成します。default-female → Ruth、default-male → Matthew(どちらも generative エンジンに対応)。
埋め込み
Amazon Titan Embeddings V2 を使ってベクトル埋め込みを生成します。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 リポジトリ を参照してください。