【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
目录
关闭