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 许可证获得许可。