Amazon Bedrock は、大手 AI 企業の高性能基盤モデルの選択肢と、生成 AI アプリケーションを構築するための一連の機能を提供するフルマネージド サービスです。
このサンプル リポジトリでは、複数のツールを使用して、Anthropic Claude 3 Sonnet で Converse API を使用した関数呼び出しを使用する例を提供します。このリポジトリはサンプルのみのコードであり、プレーンな関数コードを使用して結果をフェッチするためにモデルが使用するツールとして関数呼び出しを使用する方法を示します。
Converse
API は、メッセージをサポートするすべてのモデルで動作する一貫したインターフェイスを提供します。これにより、コードを一度作成すれば、それをさまざまなモデルで使用できます。モデルに固有の推論パラメーターがある場合は、それらの一意のパラメーターをモデルに渡すこともできます。
関数呼び出し (ツールとも呼ばれる) は、ユーザー入力に応答するためにモデルが使用できる関数の説明的なガイダンスをモデルに提供する方法です。
このサンプルでは、Claude 3 に株式ティッカー値とは何か、そしてデフォルトのティッカー通貨をユーザー入力で指定された任意の通貨に変換するオプションを付けて答えてもらいます。
モデルで使用できるツールは 2 つあります。
モデルは各ターンで指定されたプロンプトを確認し、ユーザー入力で提供された質問に適切に回答できるかどうかを、Bedrock end_turn
またはtool_use
からの応答に従って各ターンで判断します。 end_turn
、最終的な答えが提供されたことを意味し、 tool_use
、ツール関数の実行に使用されるツールの説明に従って適切なデータを解析し、モデルに適切な結果を構築します。
このサンプル コードは、python 3.12 で pyenv を使用してテストされ、.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 ティッカーが AMZN であることを認識し、ツールを使用してティッカー値を取得し、株価のソース通貨を宛先通貨に変換します。
LLM のステートレスな性質により、推論の各反復で、 tool_use
が返されると、返されたメッセージが追加されて、モデルの場合と同様の会話が構築されます。
クロード 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.
注:株価と為替レートは非常に不安定で、急速に変化する可能性があります。この README に示されている出力例は、現在の市場価値を反映していない可能性があります。コードを実行すると、提供された例とは異なる可能性があるリアルタイム データが取得されます。
詳細については、「貢献」を参照してください。
詳細については、「貢献」を参照してください。
このプロジェクトは、Apache-2.0 ライセンスに基づいてライセンスされています。