【Claude3】利用 Python 中完成对 Bedrock 上的 Claude 的 API 调用

Amazon Identity and Access Management(IAM)
Amazon Bedrock
技领云博主
0
0
> 文章作者:云矩阵 ![image.png](https://dev-media.amazoncloud.cn/a54a37f7776f4eabb62fe56642581cba_image.png "image.png") ### 1. 前期准备工作 - 提前注册准备好一个亚马逊云科技海外账号; - 设置好一个 IAM 用户,并赋予相应的访问亚马逊云科技资源的权限; - 为该 IAM 用户配置一个访问密钥; ### 2. 安装和配置 Amazon CLI v2 安装或更新Amazon CLI v2。Amaozn CLI 版本 2 是 Amazon CLI 的最新主版本,支持所有最新功能。 ``` # windows系统下,打开CMD命令符提示窗口,输入此串命令,回车,开始安装更新 Amazon CLI。 msiexec.exe /i https://awscli.amazonamazon.com/AmazonCLIV2.msi C:\\Users\\xyb>msiexec.exe /i https://amazoncli.amazonamazon.com/AmazonCLIV2.msi C:\\Users\\xyb>amazon --version amazon-cli/2.15.27 Python/3.11.8 Windows/10 exe/AMD64 prompt/off ``` > 开始按照指示点击安装即可。 ![image.png](https://dev-media.amazoncloud.cn/5e918a94e3c246a7afadbaf9637a7e72_image.png "image.png") > 单击 “Next”。 ![image.png](https://dev-media.amazoncloud.cn/ef2aca2935774f6686e26fbf18dbb729_image.png "image.png") > 因此前已经安装更新过 Amazon CLI v2,所以显示如下界面,提示`改变存储位置`、`修复`、`移除`等选项。 ![image.png](https://dev-media.amazoncloud.cn/0cefa299c7f540ef871606b6a198d125_image.png "image.png") > 此时,完成 Amazon 命令行接口 v2 安装向导。 ![image.png](https://dev-media.amazoncloud.cn/7ff7b9881f9244a893ee3941552ef386_image.png "image.png") 最后,执行命令验证 Amazon CLI V2 是否成功安装。 ``` C:\\Users\\xyb>amazon --version amazon-cli/2.15.27 Python/3.11.8 Windows/10 exe/AMD64 prompt/off ``` ### 3. 使用 Amazon configure命令配置亚马逊云科技凭据 > 在该 IAM 用户下创建访问密钥。 ![image.png](https://dev-media.amazoncloud.cn/b7063531444d41dfbb65cb8d9d87e33f_image.png "image.png") > 使用 Amazon configure 命令配置亚马逊云科技凭据。 ``` C:\\Users\\xyb>aws configure Amazon Access Key ID [****************WROS]:<xxx> Amazon Secret Access Key [****************IR6n]:<xxxxxx> Default region name [us-west-2]:<Amazon 区域> Default output format [None]:<json> ``` > 验证配置好的亚马逊云科技凭据是否有效。 ``` amazon sts get-caller-identity ``` ``` C:\\Users\\xyb>amazon sts get-caller-identity { "UserId": "AIDAxxxxxx5E4A", "Account": "540xxxxxxxx92", "Arn": "arn:amazon:iam::540xxxxxxxx92:user/xxxxxxxx" } ``` <!--StartFragment--> ### 4. 安装访问 Bedrock 的 SDK Anthropic 的客户端 SDK 支持 Bedrock。也可以直接使用 Amazon SDK,如 boto3。 ``` pip install boto3>=1.28.59 ``` ![image.png](https://dev-media.amazoncloud.cn/2d31b16977384953979e27b8b68d0f32_image.png "image.png") <!--StartFragment--> ### 5. 访问 Amazon Bedrock UI > 输入 https://aws.amazon.com/cn/?trk=cndc-detail, 登陆到亚马逊云科技管理控制台。在下方搜索栏中输入`Bedrock`。导航进入 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)。 ![image.png](https://dev-media.amazoncloud.cn/3cba7860ce16496dbd1b5a587078cb9e_image.png "image.png") 此时,来到 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 界面。可以开始开启 Claude 模型访问权限。 ![image.png](https://dev-media.amazoncloud.cn/029d9ee676c743ae9cc084921a53f00b_image.png "image.png") ### 6. 订阅 Bedrock 上的 Claude 模型 > 先点击`1️⃣模型访问权限`,再点击`2️⃣管理模型访问权限`。 ![image.png](https://dev-media.amazoncloud.cn/6ee0d58e1cf44528b040be1b323b11a5_image.png "image.png") 勾选要使用的 Claude 模型。 ![image.png](https://dev-media.amazoncloud.cn/20df9d5ddb6e4ea7a0547aea2964cf10_image.png "image.png") `提示:您现在可以访问此模型。只有在 Bedrock 中使用此模型时,才会向您收费。` > 接着,点击下方的`保存更改`的按钮。 ![image.png](https://dev-media.amazoncloud.cn/3e7cb2b695ea405197deecdb76fd5935_image.png "image.png") > 此刻,Claude 3 Sonnet 模型访问请求已提交。访问状态为`正在运行`。需要等待几分钟的时间。 ![image.png](https://dev-media.amazoncloud.cn/9e0293e581a6471dbcd751d1ca43126f_image.png "image.png") > 稍等片刻之后,点击`刷新`按钮,可以看到该模型的访问状态,已经变成`已授予访问权限`,可以使用该模型了。 ![image.png](https://dev-media.amazoncloud.cn/cdfccf4ba9f2420fac781865c51235a3_image.png "image.png") **⚠️注意事项⚠️** 若在请求访问该模型出现如下报错信息时,可能是因为该亚马逊云科技账号注册的联系地址信息不支持。需要进行更改,账户信息地址均需要切换成海外地址。 ![image.png](https://dev-media.amazoncloud.cn/2170627a9cc745c6b366193d396567f2_image.png "image.png") 修改地方①:账户的联系地址。依次按照图示,点击操作修改即可。 ![image.png](https://dev-media.amazoncloud.cn/d8cbf20ea46d4bb486ac41fe570d5043_image.png "image.png") 修改地方①:账户的账单地址。依次按照图示,点击操作修改即可。 ![image.png](https://dev-media.amazoncloud.cn/82f9b08c80b34758b8d36e1d57dd93d2_image.png "image.png") ### 7. 通过 CLI 命令列出所有可用的 Claude 模型 ``` amazon bedrock list-foundation-models --region=us-west-2 --by-provider anthropic --query "modelSummaries[*].modelId" ``` ``` C:\\Users\\xyb>amazon bedrock list-foundation-models --region=us-west-2 --by-provider anthropic --query "modelSummaries[*].modelId" [ "anthropic.claude-instant-v1:2:100k", "anthropic.claude-instant-v1", "anthropic.claude-v2:0:18k", "anthropic.claude-v2:0:100k", "anthropic.claude-v2:1:18k", "anthropic.claude-v2:1:200k", "anthropic.claude-v2:1", "anthropic.claude-v2", "anthropic.claude-3-sonnet-20240229-v1:0" ] ``` **温馨提示**:使用 CLI 命令列出亚马逊云科技上所有可用的 Claude 模型,需要将 Amazon CLI 更新成最新的版本,旧版本会访问失败。 ### 8. 向 Claude 3 Sonnet on Bedrock 生成文本 ``` import boto3 import json bedrock = boto3.client(service_name="bedrock-runtime") body = json.dumps({ "max_tokens": 256, "messages": [{"role": "user", "content": "Hello, world"}], "anthropic_version": "bedrock-2023-05-31" }) response = bedrock.invoke_model(body=body, modelId="anthropic.claude-3-sonnet-20240229-v1:0") response_body = json.loads(response.get("body").read()) print(response_body.get("content")) ``` 使用 Claude 模型分析这串代码,效果不错。 > 这段代码是使用 Python 和 Amazon Boto3 库来调用 Anthropic 的 Claude AI 模型,生成相应的响应内容。让我们逐行解释一下: > > 1. import boto3 和 import json 分别导入了 boto3 和 json 库。boto3 是亚马逊云科技提供的 Python SDK,用于与亚马逊云科技服务进行交互。json 库则用于处理 JSON 数据格式。 > > 1. bedrock = boto3.client(service_name="bedrock-runtime") 创建了一个名为 bedrock 的 Boto3 客户端,用于与 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Runtime 服务进行交互。Bedrock Runtime 是一个托管的服务,用于部署和运行[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)模型。 > > 1. body = json.dumps({...}) 创建了一个 JSON 字符串作为请求体。这个请求体包含了调用 Claude AI 模型所需的参数,如最大令牌数 (max_tokens)、对话历史(messages)和模型版本(anthropic_version)。 > > 1. response = bedrock.invoke_model(body=body, modelId="anthropic.claude-3-sonnet-20240229-v1:0") 调用了 Bedrock Runtime 服务的 invoke_model 方法,传入请求体和要调用的模型 ID。模型 ID 指定了要使用的 Claude AI 模型的版本。 > > 1. response_body = json.loads(response.get("body").read())从 Bedrock Runtime 服务的响应中提取出响应体,并将其从 JSON 字符串解析为 Python 字典对象。 > > 1. print(response_body.get("content"))打印出响应体中的 content 字段,该字段包含了 Claude AI 模型生成的响应内容。 > > 总的来说,这段代码首先构建了一个包含对话历史和参数的请求体,然后使用 Boto3 客户端调用了 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Runtime 服务中部署的 Claude AI 模型。最后,它从服务的响应中提取出模型生成的响应内容并将其打印出来。 ![image.png](https://dev-media.amazoncloud.cn/d501ccdeab4b4c6eacc769c6b4ac199d_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/7600031797e24290b07a48b1325e56a1_image.png "image.png") ### 9. 参考链接 [1] https://docs.anthropic.com/claude/reference/claude-on-amazon-bedrock?trk=cndc-detail [2] https://xybdiy.blog.csdn.net/article/details/134488239?trk=cndc-detail [3] https://console.anthropic.com/settings/keys?trk=cndc-detail [4] https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html?trk=cndc-detail **温馨提示:Claude 3 模型在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 限时体验活动即将于3月11日零点正式结束。还没体验的小伙伴们抓紧体验啦~** [![1.png](https://dev-media.amazoncloud.cn/db8c6b486bb1431ea197681e59b06179_1.png "1.png")](https://summit.amazoncloud.cn/2024/register.html?source=DSJAVfG2GS7gEk2Osm6kYXAa+8HnSEVdbCVjkuit7lE= )
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭