作者: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 模型。该模型以输入提示生成输出。以下图示展示了解决方案架构。
在调用 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。请按照以下步骤进行脚本编写:
python import boto3 import json
python # 设置 Amazon Bedrock 客户端 bedrock_client = boto3.client( service_name="bedrock-runtime", region_name="us-east-1" )
python # 定义模型 ID model_id = "anthropic.claude-3-sonnet-20240229-v1:0"
python # 准备输入提示 prompt = "你好,你好吗?"
通过 可以提高模型的性能,并增强结果。
在调用 Amazon Bedrock 模型之前,我们需要定义一个 ,它充当一组指导模型生成过程的指令和信息。该有效负载的结构因选择的模型而异。在本例中,我们使用的是 Anthropic 的 Claude 3Sonnet。可以将此有效负载视作模型的蓝图,为其提供必要的上下文和参数,以便根据您的特定提示生成所需的文本。以下是此有效负载中的关键元素:
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 } ] } ] }
python # 调用 Amazon Bedrock 模型 response = bedrock_client.invoke_model( modelId=model_id, body=json.dumps(payload) )
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