在数字化转型的浪潮中,客户互动的方式正在发生革命性的变化。本文将指导如何利用Amazon Bedrock知识库和AWS技术,构建一个无服务器聊天机器人。将从设置安全、可扩展的S3存储桶开始,逐步深入到Amazon Bedrock知识库的构建,直至完成REST API的部署。
设置数据源
创建Amazon S3存储桶是许多AWS项目的基础步骤,它为各种类型的数据提供了安全、可扩展的存储选项。以下是通过AWS管理控制台创建S3存储桶的详细指南,以及设置权限以确保存储数据安全的的最佳实践。
首先,在控制台顶部找到“服务”菜单。点击“服务”并找到“S3”存储类别下的“S3”,或使用搜索栏找到S3,然后点击“S3”打开S3仪表板。点击“创建存储桶”按钮。为存储桶输入一个唯一的名称,选择偏好的AWS区域,并保持其他选项为默认设置以简化操作,然后点击“创建存储桶”。
存储桶创建完成后,点击S3仪表板中存储桶的名称打开它,然后点击“上传”按钮。可以将文件拖放到上传区域,或选择“添加文件”从计算机中选择文件,然后点击“上传”完成过程。记住,所有上传的文件将继承存储桶的权限,确保数据在默认设置下保持安全,这些默认设置阻止所有公共访问,除非为特定需求进行配置。
创建Amazon Bedrock知识库
建立Amazon Bedrock知识库的第一步是理解其目前仅在特定区域可用。要开始这个过程,首先需要创建一个IAM(身份和访问管理)用户。值得注意的是,知识库的创建仅限于根用户。因此,以下步骤概述了如何创建一个IAM用户。
导航到AWS管理控制台中的IAM控制台。从仪表板菜单中选择“用户”。点击“添加用户”开始创建过程。为新的IAM用户指定一个用户名。创建用户后,通过从列表中选择用户并点击“管理控制台访问”来继续。点击“管理控制台访问”后,继续点击“应用”。这个操作会提示系统生成一个包含必要凭据的CSV文件。下载此文件。
接下来,使用提供的“控制台登录URL”访问AWS管理控制台。这个URL将引导到登录页面,可以输入从下载的CSV文件中获取的凭据以获得访问权限。
创建AWSLambda函数
导航到AWS管理控制台中的AWS Lambda控制台。点击“创建函数”开始创建过程。为函数选择适当的运行时环境。Lambda支持多种编程语言,包括Python、Node.js和Java。在本文中,将选择Python作为运行时编程语言(但在SS中是Node)。
在创建Lambda函数并设置默认设置后,下一步涉及调整超时持续时间以适应可能更长的执行时间。通过增加超时持续时间,可以为Lambda函数提供更多时间来完成其执行,防止过早终止,并确保任务的不间断处理。
在Lambda函数的配置部分,导航到“角色名称”并选择它。然后,继续添加“AmazonBedrockFullAccess”策略以授予必要的权限。有了这些权限,Lambda函数现在能够访问在Bedrock中的知识库。
import json
import boto3
client_bedrock_knowledgebase = boto3.client('bedrock-agent-runtime')
def lambda_handler(event, context):
print(event['prompt'])
user_prompt=event['prompt']
client_knowledgebase = client_bedrock_knowledgebase.retrieve_and_generate(
input={
'text': user_prompt
},
retrieveAndGenerateConfiguration={
'type': 'KNOWLEDGE_BASE',
'knowledgeBaseConfiguration': {
'knowledgeBaseId': 'Your-ID',
'modelArn': 'arn:aws:bedrock:Your-Region::foundation-model/anthropic.claude-instant-v1'
}
})
response_kbase_final=client_knowledgebase['output']['text']
return {
'statusCode': 200,
'body': response_kbase_final
}
在构建Lambda函数时参考了此文档,也可以进一步咨询它。
导航到Amazon API Gateway:转到AWS管理控制台并选择Amazon API Gateway。点击“创建API”开始构建新API。点击“创建API”,由于已经拥有资源,将不会干扰它。将点击“创建方法”,然后选择创建的Lambda函数。
在选择适当的Lambda函数后,继续配置URL查询字符串参数。指定‘prompt’作为参数名称,然后继续点击“创建方法”。方法创建后,继续编辑集成请求。点击“编辑”选项,然后导航到映射模板部分。在这里,指定GET请求所需的格式。
REST API配置完成后,现在可以通过选择“部署API”选项来部署它。选择“新阶段”选项并为阶段分配一个名称。如图所示,例如,可以将prompt参数设置为‘如何从头开始训练LLM’。
现在是时候查看结果了——
显然,已经从知识库中获得了有关从头开始训练大型语言模型(LLM)的结果。