Amazon Bedrock 是一項完全託管的服務,透過單一 API 提供來自 AI21 Labs、Anthropic、Cohere、Stability AI 和 Amazon 等領先 AI 公司的高效能基礎模型 (FM) 選擇。從維運的角度來看,擁有一個統一的 API 可以提高開發和部署速度,因為安全性、可擴展性和監控等方面都是標準化的。
然而,在編寫與 FM 互動的程式碼時,開發人員必須手動處理每個 FM 的 API 特性。發生這種情況是因為每個 FM 的架構都是唯一的,並且要執行 API 請求,必須提供正確的正文有效負載。
➡️ 例如,請考慮以下提示: When Christmas is celebrated?
使用AI21Labs Jurassic-2 Mid
FM 向 Amazon Bedrock 詢問此問題需要以下 API 請求:
{
"modelId" : " ai21.j2-mid-v1 " ,
"contentType" : " application/json " ,
"accept" : " */* " ,
"body" : " { " prompt " : " When Christmas is celebrated? " , " maxTokens " :200, " temperature " :0.7, " topP " :1, " stopSequences " :[], " countPenalty " :{ " scale " :0}, " presencePenalty " :{ " scale " :0}, " frequencyPenalty " :{ " scale " :0}} "
}
使用Anthropic Claude V2
FM 向 Amazon Bedrock 詢問完全相同的問題需要不同的 API 請求:
{
"modelId" : " anthropic.claude-v2 " ,
"contentType" : " application/json " ,
"accept" : " */* " ,
"body" : " { " prompt " : " Human: \ n \ nHuman: When Christmas is celebrated? \ n \ nAssistant: " , " max_tokens_to_sample " :300, " temperature " :1, " top_k " :250, " top_p " :0.999, " stop_sequences " :[ "\ n \ nHuman: " ], " anthropic_version " : " bedrock-2023-05-31 " } "
}
為了減少噪音,該專案引入了一個簡單但功能強大的實作來從每個 FM 中抽像出每個模式。這是可能的,因為使用了 Builder 設計模式,它將複雜物件的構造與其表示分離。在本例中,複雜物件是必須傳送到 Amazon Bedrock 的請求主體。為了允許使用不同的 FM,也使用了指令設計模式。每個FM都有自己的指令執行方式。這樣,每個 FM 都可以以自己的方式處理其獨特的參數。
如果您想透過實作教學了解如何使用此程式碼,可以觀看下面的 YouTube 影片。
要使用 BedrockRequestBody 實現,只需從類別中呼叫builder()
靜態方法並開始提供所需的參數,分別是modeId
和prompt
。考慮提示When Christmas is celebrated?
這就是您使用AI21Labs Jurassic-2 Mid
方式:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "ai21.j2-mid-v1" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
同樣,如果您想使用Anthropic Claude V2
FM,您的工作方式如下:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "anthropic.claude-v2" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
簡單多了,對吧? ?
請參閱貢獻以獲取更多資訊。
該專案根據 MIT-0 許可證獲得許可。請參閱許可證文件。