许多开发者在管理和集成多种云端的数据源时经常面对各种各样的困难,所以希望能够构建一个聊天机器人来协调这些数据源,针对业务问题并提供全面的答案。本文介绍了一种解决方案,帮助大家开发一个能够从文档和数据库中回答查询的聊天机器人,并且问大家介绍简单的部署流程。
亚马逊云科技Bedrock是一项全托管服务,通过单一API提供来自AI21 Labs、Anthropic、Cohere、Meta、Stability AI和亚马逊云科技等领先AI公司的高性能基础模型(FMs),并配备一整套构建生成式AI应用所需的安全、隐私和负责任AI能力。在文档检索方面,检索增强生成(Retrieval Augmented Generation,RAG)是一项关键技术,它允许大家从基础模型之外的数据源中检索信息,通过集成上下文相关的数据来增强提示词的回复。大家可以利用提示词工程防止AI模型幻觉现象,并确保答案基于源文档。对于数据库数据的检索,大家可以使用亚马逊云科技Bedrock提供的基础模型,将文本转换为符合约束条件的SQL查询,从而实现从Amazon Athena表中提取数据的能力,满足数据查询需求。
对于更复杂的查询,获取全面而准确的答案需要同时从文档和数据库中检索信息。亚马逊云科技Bedrock Agents是一款生成式AI工具,它使得生成式AI应用能够在企业系统和数据源之间执行多步骤任务。该集成方案能够综合多个信息来源,从而提供更详细、完整的答案。本文介绍了如何使用亚马逊云科技Bedrock,包括Bedrock Agents和Bedrock Knowledge Bases,构建一个自动化聊天机器人。该方案的代码可在亚马逊云科技官方GitHub仓库中获取。
解决方案概述
本文使用公开可用的数据,包括非结构化数据和结构化数据,以展示一个完全自动化的聊天机器人系统。我们的非结构化数据来自Amazon EC2 Linux实例用户指南和Amazon EC2实例类型文档,而结构化数据为EC2实例服务器定价信息。下图展示了解决方案的架构。
该架构展示了一个基于亚马逊云科技的云端完整部署解决方案,结合多个云服务。聊天机器人的主界面是一个基于Streamlit的应用程序,托管在Amazon Elastic Container Service(Amazon ECS)集群上,访问权限由应用程序负载均衡器(Application Load Balancer)管理。用户通过该界面提交查询后,会触发AWS Lambda调用函数,该函数与一个智能代理交互。智能代理会根据用户的查询,调用知识库获取信息,或者触发Agent Executor Lambda函数来执行相关任务。该函数根据预定义的API架构调用一组与代理关联的操作。知识库使用Amazon OpenSearch Service的无服务器索引作为其向量数据库基础。此外,Agent Executor函数会生成SQL查询,并在AWS Glue数据库中通过Athena执行,以返回相关数据。
使用AWS CDK部署解决方案
亚马逊云科技Cloud Development Kit(AWS CDK)是一个开源软件开发框架,可用于以代码方式定义云基础设施,并通过CloudFormation进行部署。我们的AWS CDK堆栈将部署以下亚马逊云科技服务的资源:
- AWS Key Management Service(AWS KMS)
- Application Load Balancer
- Amazon Bedrock
- Amazon Elastic Container Registry(Amazon ECR)
- Amazon Elastic Container Service(Amazon ECS)
- AWS Fargate
- AWS Glue数据目录(用于AWS Glue数据库组件)
- AWS Identity and Access Management(IAM)
- AWS Lambda
- Amazon OpenSearch Service
- Amazon Simple Storage Service(Amazon S3)
- Amazon Virtual Private Cloud(Amazon VPC)
请参考README.md文件中的部署指南,按照步骤使用AWS CDK部署该解决方案。完成所有必要的设置后,可以使用以下命令部署堆栈:
cdk deploy
亚马逊云科技Bedrock特性
亚马逊云科技Bedrock是一项全托管服务,通过单一API提供来自AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI和亚马逊云科技等领先AI公司的高性能基础模型(FMs),并配备构建生成式AI应用所需的一整套安全、隐私和负责任AI能力。
本节将介绍本解决方案中使用的一些关键亚马逊云科技Bedrock特性和资源。
亚马逊云科技Bedrock Agents
亚马逊云科技Bedrock Agents允许大家在应用程序中构建和配置自主代理。代理可以根据组织数据和用户输入帮助终端用户完成任务。代理可以协调基础模型、数据源、软件应用程序和用户对话之间的交互。
例如,大家可以向聊天机器人提出如下问题:“哪个EC2实例适用于机器学习模型推理,它的成本是多少?” 代理会将复杂任务拆解成以下步骤:
1. 查询EC2实例类型,检索适用于机器学习推理的实例类型。
Call the GET::ChatBotBedrockAgentActionGroup::getUc2Response function to get the latest EC2 instance type and pricing details for machine learning inference.
2. 查询文档,获取关于该实例的技术详情。
Call the GET::x_amz_knowledgebase_WSGY5QH4ZD::Search function to get recommendations on which EC2 instance type is best for machine learning inference.
3. 查询数据库,获取该实例的当前定价信息。
Return the recommended EC2 instance type and the pricing details to the user.
I have checked that I have access to the GET::ChatBotBedrockAgentActionGroup::getUc2Response and GET::x_amz_knowledgebase_WSGY5QH4ZD::Search functions.”
然后,代理会通过这三个步骤收集信息,并将其整合成最终答案:
“The AWS Inferentia and Trainium instances are well-suited for machine learning model inference workloads. The Inf1 and Trn1 instances deliver high performance inference using dedicated ML chips like Inferentia and Trainium at lower costs compared to GPU-based instances.According to the latest information, AWS Inferentia and Trainium instance prices range from $0.228 per hour for an inf1.xlarge instance to $24.78 per hour for a trn1n.32xlarge instance. The cheapest Inferentia instance is the inf1.xlarge at $0.228 per hour, while the most expensive is the inf2.48xlarge at $12.9813 per hour. The cheapest Trainium instance is the trn1.2xlarge at $1.3438 per hour, while the most expensive is the trn1n.32xlarge at $24.78 per hour.”
在创建代理之前,大家需要设置要添加到代理中的操作组(Action Groups)和知识库(Knowledge Bases):
- 操作组:定义大家希望代理帮助客户执行的任务。
- 知识库:为代理提供一个可查询的信息存储库,以回答客户查询并优化生成的回复。更多信息请参考亚马逊云科技Bedrock Knowledge Bases。
完成AWS CDK部署后,大家可以通过以下步骤验证代理、知识库和操作组是否正确创建:
- 打开亚马逊云科技Bedrock控制台,在导航面板中选择Agents。
- 选择已创建的代理名称。
- 选择工作草稿(Working Draft)。
- 在工作草稿中查看已配置的操作组(Action Groups)和知识库(Knowledge Bases)。
亚马逊云科技Bedrock Knowledge Bases
亚马逊云科技Bedrock Knowledge Bases是一项完全托管的功能,能够帮助大家实现完整的RAG(检索增强生成)工作流,包括从数据摄取到检索和提示增强(prompt augmentation),无需自行构建数据源集成或管理数据流。本文的示例中,我们使用AWS CDK创建了一个亚马逊云科技Bedrock Knowledge Base,该知识库基于存储在S3桶中的EC2实例文档数据库。
以上就是利用AI智能体创建云端文档知识库并集成第三方数据源的上篇内容。本篇文章详细介绍了如何使用亚马逊云科技Bedrock Agents和Knowledge Bases,结合检索增强生成(RAG)方法,开发一个可以查询文档和数据库的聊天机器人。该解决方案可自动部署,并且能够结合知识库和操作组来执行复杂查询任务,从而提供精准、上下文相关的回答。欢迎大家继续关注小李哥的生成式AI应用安全系列,了解国际前沿的亚马逊云科技解决方案,关注我不要错过未来更多的干货内容!