在 Amazon Bedrock 上使用 AWS SDK for PythonBoto3构建生成

使用 AWS SDK for Python (Boto3) 在 Amazon Bedrock 上构建生成式 AI 应用

作者:Merlin Naidoo,2024年11月22日
在 , , ,

关键要点

在这篇文章中,我们将介绍如何使用 AWS SDK for Python(Boto3)与 Amazon Bedrock 配合,构建生成式 AI应用。通过这些技术,您将能够利用顶级基础模型(FMs),安全地集成生成式 AI 功能,提升您应用的智能能力。

是一项完全托管的服务,提供来自 AI 公司(如 AI21Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon)的高性能基础模型(FMs),可以通过单一 API 访问,同时具备构建生成式 AI 应用所需的广泛功能,包括安全性、隐私及负责任的 AI。您可以在 Amazon Bedrock中实验、评估并私密地根据您的数据定制这些模型,使用细调和检索增强生成(RAG)等技术,构建能够利用企业系统和数据源执行任务的智能代理。由于 AmazonBedrock 是无服务器的,您无需管理任何基础设施,可以轻松安全地将 功能集成到您已有的 AWS 服务中。

在本篇文章中,我们将演示如何使用 [AWS SDK for Python (Boto3)](https://aws.amazon.com/sdk-for- python/) 通过编程方式接入 FMs。

解决方案概述

下面的解决方案使用一段 AWS SDK for Python 脚本,调用 Amazon Bedrock 上的 Anthropic 的 Claude 3Sonnet 模型。该模型以输入提示生成输出。以下图示展示了解决方案架构。

![](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/11/11/ML-16927-arch- 删除)

前提条件

在调用 Amazon Bedrock API 之前,请确保您具备以下条件:

项目描述
AWS 账户必须提供对 AWS 服务的访问,包括 Amazon Bedrock
AWS CLI必须
IAM 用户必须为 Amazon Bedrock API ,并为 IAM 用户添加适当权限
访问密钥必须有 IAM 用户的访问密钥和秘密密钥以 AWS CLI
模型访问必须 Amazon Bedrock 的基础模型访问权限
Boto3 库必须安装最新版
Python 版本最低要求为 Python 3.8

部署解决方案

完成前提条件后,您可以开始使用 Amazon Bedrock。请按照以下步骤进行脚本编写:

  1. 导入所需的库:

python import boto3 import json

  1. 设置 Boto3 客户端,以使用 ,并指定 AWS 区域:

python # 设置 Amazon Bedrock 客户端 bedrock_client = boto3.client( service_name="bedrock-runtime", region_name="us-east-1" )

  1. 定义要调用的模型及其 。在本例中,我们使用 Amazon Bedrock 上的 Anthropic Claude 3 Sonnet:

python # 定义模型 ID model_id = "anthropic.claude-3-sonnet-20240229-v1:0"

  1. 分配一个提示,即您将在调用模型时使用的消息:

python # 准备输入提示 prompt = "你好,你好吗?"

通过 可以提高模型的性能,并增强结果。

在调用 Amazon Bedrock 模型之前,我们需要定义一个 ,它充当一组指导模型生成过程的指令和信息。该有效负载的结构因选择的模型而异。在本例中,我们使用的是 Anthropic 的 Claude 3Sonnet。可以将此有效负载视作模型的蓝图,为其提供必要的上下文和参数,以便根据您的特定提示生成所需的文本。以下是此有效负载中的关键元素:

  • anthropic_version – 指定您正在使用的 Amazon Bedrock 的确切版本。
  • max_tokens – 限制模型在响应中可以生成的总令牌数量。令牌是大型语言模型(LLMs)处理和生成的文本的最小有意义单元(单词、标点、子词)。
  • temperature – 控制生成文本的随机性。较高的值会产生更具创意和可能不可预期的输出,而较低的值则会产生更保守和一致的结果。
  • top_k – 定义在生成过程中每一步考虑的最有可能的候选词数量。
  • top_p – 影响选择下一个单词的抽样概率分布。较高的值倾向于选择常见词,而较低的值则允许选择多样且可能出乎意料的词。
  • messages – 包含供模型处理的单条消息的数组。
  • role – 定义消息中的发送者角色(用户提供的提示)。
  • content – 该数组包含实际的提示文本,表示为“文本”类型对象。
  • 按如下方式定义有效负载:

python payload = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 2048, "temperature": 0.9, "top_k": 250, "top_p": 1, "messages": [ { "role": "user", "content": [ { "type": "text", "text": prompt } ] } ] }

  1. 设置好要交互的参数和模型后,您可以发送请求到 Amazon Bedrock,提供要交互的模型和之前定义的有效负载:

python # 调用 Amazon Bedrock 模型 response = bedrock_client.invoke_model( modelId=model_id, body=json.dumps(payload) )

  1. 请求处理完成后,您可以显示从 Amazon Bedrock 生成的文本结果:

python # 处理响应 result = json.loads(response["body"].read()) generated_text = "".join([output["text"] for output in result["content"]]) print(f"响应: {generated_text}")

让我们看看完整的脚本:


# 设置 Amazon Bedrock 客户端

bedrock_client = boto3.client( service_name="bedrock-runtime",
region_name="us-east-1" )

# 定义模型 ID

model_id = "anthropic.claude-3-sonnet-20240229-v1:0"

# 准备输入提示

prompt = "你好,你好吗?"

# 创建请求有效负载

payload = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 2048,
"temperature": 0.9, "top_k": 250, "top_p": 1, "messages": [ { "role": "user",
"content": [ { "type": "text", "text": prompt } ] } ] }

# 调用 Amazon Bedrock 模型

response = bedrock_client.invoke_model( modelId=model_id,
body=json.dumps(payload) )

# 处理响应

result = json.loads(response["body"].read()) generated_text =
"".join([output["text"] for output in result["content"]]) print(f"响应:
{generated_text}") ```

## 清理

当您完成使用 Amazon Bedrock 后,请清理临时资源,如 IAM 用户和 
日志,以避免不必要的费用。费用考虑取决于使用频率、选择模型的定价以及脚本运行时的资源利用情况。有关价格细节和成本优化策略,请参阅 ,例如选择合适的模型、优化提示和监控使用情况。

## 结论

在这篇文章中,我们演示了如何通过编程方式与 Amazon Bedrock 的 FMs 交互。我们探讨了调用特定 FM并处理生成文本的过程,展现了开发人员如何利用这些模型在多种用例中应用,如:

  * **文本生成** – 生成创意内容,如诗歌、剧本、音乐作品,或不同的编程语言
  * **代码补全** – 通过建议与现有代码或提示相关的代码片段,提高开发人员的生产力
  * **数据摘要** – 从大型数据集中提取关键见解并生成简明摘要
  * **对话式 AI** – 开发能够进行自然语言对话的聊天机器人和虚拟助手

**保持好奇** ,探索生成式 AI 如何改变各种行业。探索不同的模型和
API,比较每个模型的输出。找到适合您用例的模型,并使用此脚本作为基础,在您的解决方案中创建代理和集成。

* * *

### 关于作者

删除)

**Merlin Naidoo** 是 AWS 的高级技术客户经理,拥有超过 15年的数字化转型与创新技术解决方案经验。他热衷于与各种背景的人交流,并利用技术创造有意义的机会,赋能每个人。当他不置身于科技世界时,您可以发现他在参加各种激烈运动。

**标签** : ,

Leave a Reply

Required fields are marked *