API 版本控制策略的 4 个最佳实践
使用 Amazon Bedrock 构建强大的 AI 应用程序:增强型聊天机器人和图像生成用例
2024-08-29
生成式人工智能 ( GenAI )领域正在迅速改变企业的运营方式。Amazon Bedrock 使开发人员能够利用各种基础模型 ( FM ) 的强大功能来实现广泛的应用。本文深入探讨了两个引人注目的用例 —增强型客户服务聊天机器人 和 图像生成— 探索它们当前的挑战、使用 Bedrock 的 AWS 解决方案以及潜在的优势。
我们还将提供使用Amazon Bedrock端到端解决方案进行图像生成的真实场景和详细步骤。
用例 1:增强型客户服务聊天机器人
当前的挑战
- 背景和理解有限:传统的聊天机器人通常难以回答开放式问题或无法掌握自然语言的细微差别,从而导致令人沮丧的用户体验。
- 不准确或通用的响应:依赖预先编程的响应可能会导致不准确的答案或不能满足特定用户需求的通用消息。
AWS Bedrock 解决方案
通过将检索增强生成 ( RAG ) 管道与 Bedrock 集成,我们可以显著增强聊天机器人的功能:
- 上下文检索: RAG 管道使用 Amazon Kendra 根据用户的查询从知识库(例如产品手册、常见问题解答)中检索相关信息。
- 增强理解:检索到的上下文为 LLM 提供了关键信息,以理解用户的意图和特定需求。
- 重点生成: LLM 利用提供的上下文来生成针对用户问题定制的、人性化、信息丰富的答案。
好处
- 提高客户满意度:更准确、更有帮助的回应可以提高客户满意度并减少挫败感。
- 减少对人工代理的依赖:聊天机器人可以处理常规查询,从而让人工代理释放更多精力来处理复杂问题。
- 全天候可用性:聊天机器人提供全天候客户支持,增强可访问性。
真实场景
- 电子商务聊天机器人:客户询问特定产品功能。RAG 管道从知识库中检索产品描述,允许 LLM 生成针对客户问题的详细解释。
- 银行聊天机器人:客户询问贷款产品的资格。RAG 管道检索相关贷款信息和资格标准,使 LLM 能够提供准确的指导并将他们引导至适当的资源。
用例 2:图像生成
当前的挑战
- 创造力和控制力有限:现有的图像生成工具通常缺乏生成具有特定风格的图像或结合详细提示的能力。
- 技术复杂性:利用强大的图像生成模型通常需要大量的技术专长和基础设施管理。
AWS Bedrock 解决方案
Amazon Bedrock 提供与领先图像生成 FM 的无缝访问,使企业能够释放创意图像生成的潜力:
- 提示工程:制作一个定义明确的文本提示,准确描述所需的图像。具体说明风格、对象、构图等。
- FM 选择:根据您的需求(例如,照片写实主义、艺术风格)从 Bedrock 的市场中选择合适的 LLM。
- 图像生成: Bedrock 促进与所选 LLM 的交互,生成根据您的提示定制的独特图像。
好处
- 增强营销材料:为社交媒体、产品模型或广告活动生成引人注目的视觉效果。
- 产品原型:创建逼真的产品图像,用于快速原型设计和营销目的。
- 个性化的客户体验:根据用户偏好或设计理念生成自定义视觉效果。
真实场景
- 时尚品牌:使用有关特定款式、颜色和面料的详细提示,为即将推出的服装系列开发创意产品模型。
- 海报设计:提交提示并收到针对每个目标受众的几张独特海报设计。然后,团队可以选择和完善最符合其营销目标的图像。
动手解决方案: 使用 AWS Lambda、Amazon Bedrock、Stability AI 和 S3 Bucket 存储分步生成图像
本演练将指导您使用 AWS Lambda、带有 Stability AI 模型的 Amazon Bedrock 构建用于图像生成的无服务器解决方案,并将生成的图像存储在 S3 存储桶中。
框架
先决条件
- 具有必要权限的 AWS 账户,Amazon Bedrock Model Access
- 对 AWS Lambda、Amazon S3 和 Python 有基本的了解
- 熟悉 Amazon Bedrock API 概念(可选)
步骤
- 创建 S3 存储桶
- 转到 AWS 管理控制台中的 S3 服务控制台
- 单击“创建存储桶”并为您的存储桶指定一个描述性名称
- 为您的存储桶选择合适的区域
- 在“权限”下,确保存储桶具有适当的访问权限,以便您的 Lambda 函数存储图像(例如,PutObject 权限)
- 点击“创建存储桶”
- 为 Lambda 创建 IAM 角色
- 进入 IAM 服务控制台
- 点击“角色”,然后点击“创建角色”
- 选择“AWS 服务”下的“Lambda”,然后单击“下一步:权限”
- 搜索“AmazonS3FullAccess”策略并选择它以授予 Lambda 函数对 S3 存储桶的完全访问权限
- 或者,您可以创建具有 S3 特定权限的更细粒度的策略(例如,仅针对特定存储桶的 PutObject)
- 点击“下一步:标签”(可选)和“下一步:审核”
- 为您的角色指定一个描述性名称,然后单击“创建角色”
- 创建 Lambda 函数
- 转到 Lambda 服务控制台
- 单击“创建函数”,然后选择“从头开始创作”
- 为函数指定一个描述性名称,并选择“Python 3.9”作为运行时
- 点击“创建函数”
- 配置 Lambda 函数
- 在“函数代码”部分中,将默认代码替换为以下内容:
- Python 代码:
import json
import boto3
def lambda_handler(event, context):
# Extract image prompt from the event
prompt = event["prompt"]
# Initialize S3 client
s3_client = boto3.client('s3')
# Configure Bedrock client (replace with your credentials)
bedrock_client = boto3.client('bedrock',
endpoint_url="<Bedrock_Endpoint_URL>",
aws_access_key_id="<Your_Access_Key_ID>",
aws_secret_access_key="<Your_Secret_Access_Key>")
# Generate image using Stability Diffusion model
response = bedrock_client.invoke_model(
model_id="stability-diffusion", # Replace with specific model ID if needed
prompt=prompt
)
# Extract image data from response
image_data = base64.b64decode(response["image"])
# Generate image filename based on timestamp
filename = f"image_{round(time.time())}.jpg"
# Upload image to S3 bucket
s3_client.put_object(Body=image_data, Bucket="<Your_Bucket_Name>", Key=filename)
# Return success message with image location
return {
"statusCode": 200,
"body": json.dumps(f"Image generated and stored in S3: s3://<Your_Bucket_Name>/{filename}")
}
import json
import boto3
def lambda_handler(event, context):
# Extract image prompt from the event
prompt = event["prompt"]
# Initialize S3 client
s3_client = boto3.client('s3')
# Configure Bedrock client (replace with your credentials)
bedrock_client = boto3.client('bedrock',
endpoint_url="<Bedrock_Endpoint_URL>",
aws_access_key_id="<Your_Access_Key_ID>",
aws_secret_access_key="<Your_Secret_Access_Key>")
# Generate image using Stability Diffusion model
response = bedrock_client.invoke_model(
model_id="stability-diffusion", # Replace with specific model ID if needed
prompt=prompt
)
# Extract image data from response
image_data = base64.b64decode(response["image"])
# Generate image filename based on timestamp
filename = f"image_{round(time.time())}.jpg"
# Upload image to S3 bucket
s3_client.put_object(Body=image_data, Bucket="<Your_Bucket_Name>", Key=filename)
# Return success message with image location
return {
"statusCode": 200,
"body": json.dumps(f"Image generated and stored in S3: s3://<Your_Bucket_Name>/{filename}")
}
- 替换代码中的以下占位符:
<Bedrock_Endpoint_URL>
:替换为您所在地区特定的 Bedrock 端点 URL。<Your_Access_Key_ID>
:替换为您的 AWS 访问密钥 ID。<Your_Secret_Access_Key>
:用您的 AWS 秘密访问密钥替换(安全存储)。<Your_Bucket_Name>
:替换为您的 S3 存储桶的名称。
- 配置功能设置
- 在“运行时设置”下,将“超时”设置为足以生成图像的值(例如 30 秒)
- 在“环境变量”部分中,如果您不想将 Bedrock 身份验证详细信息直接存储在代码中,则可以选择添加这些环境变量
- 在“IAM 角色”部分中,选择您之前创建的具有 S3 访问权限的角色
- 点击“保存”
- 测试 Lambda 函数
- 在“测试”部分中,点击“新建测试事件”
- 在事件编辑器中,添加一个带有“提示”的 JSON 对象
原文链接:https://dzone.com/articles/building-powerful-ai-applications-with-amazon
同话题下的热门内容
内容关键字