公司动态

  • Home
  • 在单一界面中使用不同的 LLM 构建对话聊天机器人

在单一界面中使用不同的 LLM 构建对话聊天机器人

2026-01-27 13:39:51 340

在单一界面中构建对话式聊天机器人第一部分

作者:Anand Mandilwar 和 NagaBharathi Challa日期:2024年6月27日栏目:高级(300) Amazon Bedrock 人工智能 生成性AI

关键要点

随着生成性人工智能的快速发展,基础模型可以有效生成内容,处理多种数据格式。Amazon Bedrock 是一项全面管理的服务,能简易构建和扩展生成性AI应用。本文展示了如何使用Amazon Bedrock构建一个可以让用户选择不同大型语言模型LLMs和推断参数的对话式聊天机器人。

随着生成性人工智能AI的兴起,基础模型FMs能够生成内容,例如回答问题、总结文本和提炼文档的要点。然而,选择模型时,来自如亚马逊、Anthropic、AI21 Labs、Cohere和Meta等不同模型提供商,及PDF、Word、文本、CSV、图像或音频等多种现实世界数据格式可供选择。

Amazon Bedrock 是一项全面管理的服务,使得构建和扩展生成性AI应用变得尤为简单。它提供了来自领先AI公司的高效FMs的选择,包括AI21 Labs、Anthropic、Cohere、Meta、Stability AI和Amazon,通过简单的API实现。用户可根据自己的数据,使用微调、提示工程和增强检索生成RAG等技术私有定制FMs,并构建能够通过企业系统和数据源执行任务的智能体,同时遵循安全和隐私要求。

在本文中,我们展示了一种解决方案,建立一个单一接口对话式聊天机器人,允许最终用户在不同的大型语言模型LLMs和各种输入数据格式之间进行选择。该解决方案利用Amazon Bedrock提供选择和灵活性,以改善用户体验并比较不同选项的模型输出。

完整的代码库可以在GitHub上找到,还有一个AWS CloudFormation模板。

什么是RAG

增强检索生成RAG可以通过利用检索的优势来增强生成过程,使自然语言生成模型生成更有信息量和更适合语境的响应。通过将检索中的相关信息纳入生成过程,RAG旨在提高生成内容的准确性、一致性和信息性。

有效实施RAG系统需要几个关键组件协调工作:

基础模型 RAG架构的基础是一个经过预训练的语言模型,负责文本生成。Amazon Bedrock集成了来自AI21 Labs、Anthropic、Cohere、Meta、Mistral AI和Amazon等领先AI公司的模型,这些模型具备较强的语言理解和综合能力,能进行对话交流。向量存储 检索功能的核心是一个向量存储数据库,保持文档嵌入的相似性搜索。这使得迅速识别相关的上下文信息成为可能。AWS为您的向量数据库需求提供多项服务:Amazon OpenSearch ServiceAmazon Aurora PostgreSQL兼容版 和 Amazon关系数据库服务(Amazon RDS) for PostgreSQLAmazon DocumentDB (与MongoDB兼容)Amazon Neptune MLAmazon MemoryDB for Redis 的向量搜索检索器 检索模块利用向量存储有效查找相关文档和段落以增强提示。嵌入器 嵌入模型将源文档编码为检索器可用的向量表示,从而填充向量存储。像Amazon Titan Embeddings G1 Text v12这样的模型非常适合此类文本到向量的抽象。文档摄取 强大的管道摄取、预处理和标记源文档,将其分块为可管理的段落以进行嵌入和高效查找。对于本解决方案,我们使用了LangChain框架进行文档预处理。通过使用LangChain协调这些核心组件,RAG系统使语言模型能够访问广泛的知识,实现有根据的生成。

我们为端到端的RAG工作流提供了完整的管理支持,使用Amazon Bedrock知识库。使用Amazon Bedrock知识库,您可以为FMs和智能体提供来自贵公司私有数据源的上下文信息,使RAG能够提供更相关、准确和定制化的响应。

为了让FMs具备最新的专有信息,组织使用RAG从公司数据源获取数据并丰富提示,从而提供更相关和准确的响应。Amazon Bedrock知识库是一项全面管理的能力,帮助您实施整个RAG工作流,从摄取到检索和提示增强,而无需构建自定义集成以连接数据源和管理数据流。会话上下文管理是内建的,因此您的应用可以轻松支持多轮对话。

解决方案概述

本聊天机器人基于RAG构建,赋予其多样化的对话能力。以下图表示例UI,展示了使用Streamlit的问答接口及其工作流程。

本文提供了一个单一UI,具有多种选择的以下功能:

通过Amazon Bedrock可用的领先FMs每种模型的推断参数RAG的数据输入格式:文本PDF、CSV、Word网站链接音频扫描图像PowerPoint使用LLM、推断参数和源的RAG操作:问答摘要:总结、获取要点、提取文本

以下图展示了解决方案架构。

前提条件

实施此解决方案需要以下前提条件:

拥有AWS账户,并具备使用AWS CloudFormation启动堆栈所需的权限。托管应用的Amazon Elastic Compute CloudAmazon EC2需具备互联网访问能力,以下载所有必要的操作系统补丁和相关应用Python库。对Amazon Bedrock和FMs有基本理解。本解决方案使用Amazon Titan Text Embedding模型。请确保该模型在Amazon Bedrock中启用。在Amazon Bedrock控制台,选择导航窗格中的模型访问。如果Amazon Titan Text Embeddings已启用,访问状态将显示“访问已授权”。如果模型不可用,通过选择管理模型访问,选择Titan Multimodal Embeddings G1,再选择请求模型访问来启用模型。该模型将立即启用。

部署解决方案

CloudFormation模板将部署一个Amazon Elastic Compute CloudAmazon EC2实例,以托管Streamlit应用程序,以及其他关联资源,如AWS身份和访问管理 (IAM) 角色和Amazon简单存储服务 (Amazon S3) 桶。有关Amazon Bedrock和IAM的更多信息,请参阅Amazon Bedrock如何与IAM协作。

在本文中,我们在VPC内的EC2实例上部署Streamlit应用程序,但您也可以通过Amazon Fargate将其部署为容器化应用程序。我们将在第二部分中对此进行更详细的讨论。

按照以下步骤使用AWS CloudFormation部署解决方案资源:

从GitHub repo下载CloudFormation模板StreamlitAppServerCfnyml。在AWS CloudFormation中,创建一个新的堆栈。对于准备模板,选择模板已准备好。在指定模板部分,提供以下信息:对于模板来源,选择上传模板文件。选择文件并上传您下载的模板。选择下一步。

在单一界面中使用不同的 LLM 构建对话聊天机器人 在堆栈名称中,输入名称本文中使用StreamlitAppServer。在参数部分,提供以下信息:对于指定VPC ID,输入您希望应用服务器部署的VPC ID。对于VPCCidr,输入您使用的VPC的CIDR。对于SubnetID,输入来自同一VPC的子网ID。对于MYIPCidr,输入计算机或工作站的IP地址,以便您可以在本地浏览器中打开Streamlit应用程序。

您可以在本地终端运行命令curl lthttps//apiipifyorggt获取IP地址。

继续保留其余参数为默认值。选择下一步。在能力部分,选中确认复选框。选择提交。

请耐心等待,直到堆栈状态显示为CREATECOMPLETE。

苹果免费加速器下载选择堆栈的资源标签以查看您作为堆栈部署的一部分启动的资源。

选择S3Bucket的链接以跳转到Amazon S3控制台。注意S3桶的名称,以便稍后更新部署脚本。选择创建文件夹以创建一个新文件夹。对于文件夹名称,输入名称在本文中为genaiqa。

确保遵循AWS安全最佳实践以保护Amazon S3中的数据。有关更多详细信息,请参见保护Amazon S3中的数据的十个安全最佳实践。

返回堆栈资源标签,选择链接以访问StreamlitAppServer跳转到Amazon EC2控制台。选择StreamlitAppServer并选择连接。

这将打开一个新页面,其中包含多种连接到EC2实例的方法。

对于此解决方案,选择使用EC2实例连接进行连接,然后选择连接。

这将在您的浏览器中打开Amazon EC2会话。

使用以下命令监控作为用户数据安装的所有与Python相关的库的进度:

bashtail f /tmp/userDatalog

当您看到消息Finished running user data时,可以通过按Ctrl C退出会话。

完成此过程大约需要15分钟。

使用以下命令启动应用程序:

bashcd HOME/bedrockqnachatbotbucketname=(aws cloudformation describestacks stackname StreamlitAppServer query Stacks[0]Outputs[startswith(OutputKey BucketName)]OutputValue output text)TOKEN=(curl s X PUT http//169254169254/latest/api/token H Xawsec2metadatatokenttlseconds 21600)awsregionname=(curl s http//169254169254/latest/metadata/placement/region H Xawsec2metadatatoken TOKEN)sed i s/ltS3BucketNamegt/{bucketname}/g HOME/bedrockqnachatbot/src/utilspysed i s/ltAWSRegiongt/{awsregionname}/g HOME/bedrockqnachatbot/src/utilspyexport AWSDEFAULTREGION={awsregionname}streamlit run src/1Homepy

注意您在上一步中复制的外部URL值。如果意外退出会话或应用停止,您可以通过运行与步骤#18中相同的命令来重新启动应用程序。

使用聊天机器人

使用您在上一步中复制的外部URL访问应用程序。

您可以上传您的文件,开始使用聊天机器人进行问答。

![Upload Document](https//d2908q01vomqb2cloudfrontnet

发表评论