Amazon Bedrock 是一項完全託管的服務,提供來自領先 AI 公司的高效能基礎模型選擇以及一系列構建生成 AI 應用程式的功能。
此範例儲存庫提供了一個使用 Converse API 和 Anthropic Claude 3 Sonnet 進行函數呼叫並使用多種工具的範例。此儲存庫僅是範例程式碼,示範如何使用函數呼叫作為模型的工具,以使用純函數程式碼取得結果。
Converse
API 提供了一個一致的接口,適用於所有支援訊息的模型。這允許您編寫一次程式碼並將其用於不同的模型。如果模型具有唯一的推理參數,您也可以將這些唯一的參數傳遞給模型。
函數呼叫(也稱為工具)是一種提供模型的方法,並對模型可用於回答使用者輸入的函數提供描述性指導。
在此範例中,我們將要求 Claude 3 回答什麼是股票代碼值,並可選擇將預設代碼貨幣轉換為使用者輸入中提供的任何貨幣。
有 2 個工具可供模型使用:
模型每回合都會檢查給出的提示,並根據 Bedrock end_turn
或tool_use
的回應決定是否可以正確回答使用者輸入中提供的問題。 end_turn
意味著提供了最終答案, tool_use
將根據工具描述解析適當的數據,這些數據將用於執行工具函數,並將正確的結果建構回模型。
此範例程式碼使用 pyenv 和 python 3.12 進行測試,並在 .python-version 中設置
AWS配置:
us-west-2
,並在ask.py中配置基岩訪問:
anthropic.claude-3-sonnet-20240229-v1:0
IAM 權限:
確保執行此專案的 IAM 使用者俱有呼叫 Claude 3 模型的權限。對於此範例,您可以使用:
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " LeastPrivilege4BRClient " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel "
],
"Resource" : " arn:aws:bedrock:us-west-2::foundation-model/* "
}]
}
使用特定模型 ID 的最小權限可以對此進行更多限制。
若要執行此範例程式碼,請按照下列步驟操作:
pip install -r requirements.txt
python main.py
--input "new input here"
來覆寫預設的使用者輸入文字。預設提示:「亞馬遜股票目前的股價是多少英鎊?
例如,Anthropic Claude 3 Sonnet 會知道 Amazon Ticker 是 AMZN,將使用該工具取得程式碼值,然後將股票價格的來源貨幣轉換為目標貨幣。
每次推理迭代,當傳回tool_use
時,由於 LLM 的無狀態性質,傳回的訊息將被附加以建立類似模型的對話。
在 Claude 3 給出最終答案之前的最終提示將類似於以下內容:
[
{
"role" : " user " ,
"content" : [
{
"text" : " What is the current stock price of amazon stock in pounds? "
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " Okay, let me get the current Amazon (AMZN) stock price and convert it to British pounds for you: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"name" : " get_stock_price " ,
"input" : {
"ticker" : " AMZN "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"content" : [
{
"json" : {
"ticker" : " AMZN " ,
"price" : 200 ,
"currency" : " USD "
}
}
]
}
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " The current Amazon stock price is $200.00 USD. To convert that to British pounds: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"name" : " convert_currency " ,
"input" : {
"amount" : 200 ,
"source_currency" : " USD " ,
"target_currency" : " GBP "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"content" : [
{
"json" : {
"converted_currency" : 158.0185237159697
}
}
]
}
}
]
}
]
最終答案應該與此類似: So the current Amazon (AMZN) stock price of $200.00 USD converts to £158.02 GBP.
注意:股票價格和貨幣匯率波動很大,變化很快。本自述文件中顯示的範例輸出可能無法反映當前的市場價值。運行程式碼時,您將獲得可能與提供的範例不同的即時數據。
請參閱貢獻以獲取更多資訊。
請參閱貢獻以獲取更多資訊。
該專案根據 Apache-2.0 許可證獲得許可。