Skip to main content

概觀

revolution/laravel-amazon-bedrock 是可讓 Laravel AI SDK 使用 Amazon Bedrock 的驅動。可透過 Laravel AI SDK 的統一 API 使用 Bedrock 上的多種模型。
表中的 ⚠️ 表示的不是「功能本身不支援」,而是「僅使用 Bedrock API 金鑰無法使用」。
Laravel AI SDK v0.6.3 新增了使用 Bedrock API 金鑰的 Text、Image、Embeddings 的官方支援。由於本套件也支援官方整合尚未涵蓋的功能(如透過 Amazon Polly 的語音(TTS)與重新排序),因此仍持續公開。
主要特色如下。
  • 認證:可從 Bedrock API 金鑰、AWS IAM 認證(SigV4)、預設 AWS 認證鏈(IAM 角色、instance profile 等)中選擇。
  • Failover:支援 AI SDK 的多提供者 failover。速率限制(429)、過載(503、529)、額度相關錯誤會對應為可 failover 的例外。
  • 快取控制:對 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。

選項 1:Bedrock API 金鑰

Bedrock API 金鑰可從 AWS 管理主控台取得。
Bedrock API 金鑰僅適用於 Bedrock Runtime API。使用 bedrock-agent-runtime 的重新排序,或 Amazon Polly(TTS)皆無法使用。請改用 SigV4 或預設 AWS 認證鏈。

選項 2:AWS IAM 認證(SigV4)

使用以 Signature Version 4 簽章的 AWS access key 與 secret key。
AWS_SESSION_TOKEN 僅在使用臨時認證(STS)時設定。

選項 3:預設 AWS 認證鏈(IAM 角色)

在 EC2、ECS、Lambda 等具備 IAM 角色的環境中,可省略 keysecret,使用 預設的 AWS 認證提供者鏈
預設認證鏈會從環境變數、共用認證檔(~/.aws/credentials)、ECS task role、EC2 instance profile 等自動解析。

選用的設定鍵

文字生成

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() 中回傳過去的對話訊息,SDK 會自動包含在每次提示中。

使用 RemembersConversations 自動儲存

若不想自行實作 messages(),可利用 RemembersConversations trait 進行完全自動的對話儲存。需要 AI SDK 的資料庫資料表,請先執行 php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider" && php artisan migrate
開始新對話。
繼續既有對話。
Bedrock 驅動會自動將對話歷史加入 Bedrock Converse API 請求中,因此所有支援的模型都能運用多輪對話的上下文。

結構化輸出

實作 HasStructuredOutput 介面便可取得有型別的回應。
Anonymous Agent 也可使用結構化輸出。
在內部會建立一個依 schema 回傳值的合成工具(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 會將所有輸入整合為一次請求,因此在處理多段文字時效率更好。
Cohere Embed 模型不會回傳 token 數,因此 $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() 進行 mock,結構化輸出版本則可用 StructuredAnonymousAgent::fake()
最新資訊請參考 GitHub 儲存庫
最後修改於 2026年8月2日