对话式人工智能 (AI) 助手旨在通过将查询智能路由到最合适的 AI 功能来提供精确、实时的响应。借助 AWS 生成式 AI 服务,例如 亚马逊基岩,开发人员可以创建能够熟练管理和响应用户请求的系统。 Amazon Bedrock 是一项完全托管的服务,使用单个 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的高性能基础模型 (FM) 的选择,以及广泛的构建具有安全性、隐私性和负责任的人工智能的生成式人工智能应用程序所需的功能。
这篇文章评估了开发人工智能助手的两种主要方法:使用托管服务,例如 亚马逊基岩代理,并采用开源技术,例如 浪链。我们探讨每种方法的优势和挑战,以便您可以选择最适合您需求的路径。
什么是AI助手?
AI 助手是一种智能系统,可以理解自然语言查询并与各种工具、数据源和 API 交互,以代表用户执行任务或检索信息。有效的人工智能助手具备以下关键能力:
- 自然语言处理 (NLP) 和会话流
- 知识库集成和语义搜索,以根据对话上下文的细微差别理解和检索相关信息
- 运行任务,例如数据库查询和自定义 AWS Lambda 功能
- 处理专门的对话和用户请求
我们以物联网 (IoT) 设备管理为例展示人工智能助手的优势。在这个用例中,人工智能可以帮助技术人员通过获取数据或自动化任务的命令有效地管理机械,从而简化制造过程中的操作。
Amazon Bedrock 方法的代理
亚马逊基岩代理 允许您构建生成式 AI 应用程序,该应用程序可以跨公司的系统和数据源运行多步骤任务。它提供以下关键功能:
- 根据指令、API 详细信息和数据源信息自动创建提示,节省数周的提示工程工作量
- 检索增强生成 (RAG) 可将代理安全地连接到公司的数据源并提供相关响应
- 通过将请求分解为逻辑序列并调用必要的 API 来编排和运行多步骤任务
- 通过思想链 (CoT) 跟踪了解代理的推理,从而可以排除故障并指导模型行为
- 提示工程能力修改自动生成的提示模板,增强对座席的控制
您可以使用 Amazon Bedrock 代理和 Amazon Bedrock 知识库 为复杂的路由用例构建和部署人工智能助手。它们通过简化基础设施管理、增强可扩展性、提高安全性和减少无差别的繁重工作,为开发人员和组织提供战略优势。它们还允许更简单的应用程序层代码,因为路由逻辑、矢量化和内存是完全管理的。
解决方案概述
该解决方案引入了一个对话式 AI 助手,专为在 Amazon Bedrock 上使用 Anthropic 的 Claude v2.1 时的 IoT 设备管理和操作而定制。人工智能助手的核心功能由一套全面的指令控制,称为 系统提示,它描述了其能力和专业领域。该指南确保人工智能助手可以处理广泛的任务,从管理设备信息到运行操作命令。
配备了这些功能(如系统提示中详述),人工智能助手遵循结构化工作流程来解决用户问题。下图提供了此工作流程的直观表示,说明了从初始用户交互到最终响应的每个步骤。
工作流程由以下步骤组成:
- 当用户请求助手执行任务时,该过程就开始了;例如,询问特定物联网设备的最大数据点
device_xxx
。该文本输入被捕获并发送给人工智能助手。 - 人工智能助手解释用户的文本输入。它使用提供的对话历史记录、操作组和知识库来了解上下文并确定必要的任务。
- 解析并理解用户意图后,AI助手定义任务。这是基于助理根据系统提示和用户输入解释的指令。
- 然后通过一系列 API 调用来运行这些任务。这是使用完成的 应对 提示,它将任务分解为一系列按顺序处理的步骤:
- 对于设备指标检查,我们使用
check-device-metrics
操作组,涉及对 Lambda 函数的 API 调用,然后进行查询 亚马逊雅典娜 对于所请求的数据。 - 对于启动、停止或重新启动等直接设备操作,我们使用
action-on-device
操作组,它调用 Lambda 函数。此函数启动一个向 IoT 设备发送命令的进程。对于本文,Lambda 函数使用以下方式发送通知 亚马逊简单电子邮件服务 (亚马逊 SES)。 - 我们使用 Amazon Bedrock 的知识库从存储为嵌入的历史数据中获取 亚马逊开放搜索服务 矢量数据库。
- 对于设备指标检查,我们使用
- 任务完成后,最终响应由 Amazon Bedrock FM 生成并传送回用户。
- Amazon Bedrock 代理使用有状态会话自动存储信息以维持相同的对话。在可配置的空闲超时过后,状态将被删除。
技术概述
下图说明了使用 Agents for Amazon Bedrock 部署 AI 助手的架构。
它由以下关键组件组成:
- 对话式界面 – 对话界面使用 Streamlit,这是一个开源 Python 库,可简化用于机器学习 (ML) 和数据科学的自定义、视觉上吸引人的 Web 应用程序的创建。它托管于 亚马逊弹性容器服务 (Amazon ECS) 与 AWS 法门,并且使用应用程序负载均衡器对其进行访问。您可以将 Fargate 与 Amazon ECS 结合使用来运行 集装箱 无需管理服务器、集群或虚拟机。
- 亚马逊基岩代理 – Amazon Bedrock 的代理通过一系列推理步骤和基于以下内容的相应操作来完成用户查询 反应提示:
- Amazon Bedrock 知识库 – Amazon Bedrock 知识库提供完全托管 鲁尔 为人工智能助手提供访问您的数据的权限。在我们的用例中,我们将设备规格上传到 亚马逊简单存储服务 (亚马逊 S3)存储桶。它充当知识库的数据源。
- 行动小组 – 这些是定义的 API 架构,可调用特定的 Lambda 函数来与 IoT 设备和其他 AWS 服务进行交互。
- Amazon Bedrock 上的 Anthropic Claude v2.1 – 该模型解释用户查询并编排任务流。
- 亚马逊泰坦嵌入 – 该模型用作文本嵌入模型,将自然语言文本(从单个单词到复杂文档)转换为数值向量。这实现了矢量搜索功能,使系统能够在语义上将用户查询与最相关的知识库条目进行匹配,以实现有效搜索。
该解决方案与 AWS 服务集成,例如用于运行代码以响应 API 调用的 Lambda、用于查询数据集的 Athena、用于搜索知识库的 OpenSearch Service 以及用于存储的 Amazon S3。这些服务协同工作,通过自然语言命令为物联网设备操作管理提供无缝体验。
认证的益处
该解决方案具有以下优点:
- 实现复杂度:
- 所需的代码行数更少,因为 Agents for Amazon Bedrock 抽象了大部分底层复杂性,从而减少了开发工作量
- 由于 Amazon Bedrock 的知识库可处理矢量化和存储,因此简化了 OpenSearch Service 等矢量数据库的管理
- 通过预定义的操作组可以更加简化与各种 AWS 服务的集成
- 开发者经验:
- Amazon Bedrock 控制台提供用户友好的界面,用于快速开发、测试和根本原因分析 (RCA),从而增强整体开发人员体验
- 敏捷性和灵活性:
- Amazon Bedrock 代理允许在较新的 FM(例如 Claude 3.0)可用时无缝升级到它们,以便您的解决方案保持最新的进展
- 服务配额和限制由 AWS 管理,减少了监控和扩展基础设施的开销
- 安全性:
- Amazon Bedrock 是一项完全托管的服务,遵守 AWS 严格的安全性和合规性标准,可以简化组织安全审查
尽管 Agents for Amazon Bedrock 提供了用于构建对话式 AI 应用程序的简化且托管的解决方案,但一些组织可能更喜欢开源方法。在这种情况下,您可以使用像 LangChain 这样的框架,我们将在下一节中讨论。
LangChain动态路由方法
LangChain 是一个开源框架,通过允许集成大型语言模型 (LLM) 和动态路由功能来简化对话式 AI 的构建。通过LangChain表达式语言(LCEL),开发者可以定义 路由,它允许您创建非确定性链,其中上一步的输出定义下一步。路由有助于提供与法学硕士交互的结构和一致性。
在这篇文章中,我们使用与 IoT 设备管理的 AI 助手相同的示例。然而,主要的区别在于我们需要单独处理系统提示,并将每个链视为一个单独的实体。路由链根据用户的输入决定目的地链。该决定是在LLM的支持下通过传递系统提示、聊天记录和用户问题来做出的。
解决方案概述
下图说明了动态路由解决方案的工作流程。
工作流程包括以下步骤:
- 用户向人工智能助手提出问题。例如,“设备 1009 的最大指标是多少?”
- 法学硕士评估每个问题以及同一会话中的聊天历史记录,以确定其性质及其所属的主题领域(例如 SQL、操作、搜索或 SME)。 LLM 对输入进行分类,LCEL 路由链接受该输入。
- 路由器链根据输入选择目标链,LLM 提供以下系统提示:
法学硕士评估用户的问题以及聊天历史记录,以确定查询的性质及其所属的主题领域。然后,LLM 对输入进行分类,并按以下格式输出 JSON 响应:
路由器链使用此 JSON 响应来调用相应的目标链。有四个特定于主题的目标链,每个都有自己的系统提示:
- SQL相关的查询被发送到SQL目标链以进行数据库交互。您可以使用 LCEL 来构建 SQL 链。
- 面向操作的问题调用自定义 Lambda 目标链来运行操作。使用 LCEL,您可以定义自己的 自定义功能;在我们的例子中,它是一个运行预定义 Lambda 函数来发送带有解析的设备 ID 的电子邮件的函数。用户输入示例可能是“关闭设备 1009”。
- 以搜索为中心的查询继续进行 鲁尔 信息检索的目标链。
- 与中小企业相关的问题将转到中小企业/专家目的地链以获得专业见解。
- 每个目标链接受输入并运行必要的模型或函数:
- SQL 链使用 Athena 来运行查询。
- RAG链使用OpenSearch Service进行语义搜索。
- 自定义 Lambda 链运行 Lambda 函数来执行操作。
- 中小企业/专家链使用 Amazon Bedrock 模型提供见解。
- 来自每个目的地链的回应均由法学硕士制定为连贯的见解。然后将这些见解传递给用户,完成查询周期。
- 用户输入和响应存储在 Amazon DynamoDB 为法学硕士提供当前课程和过去互动的背景信息。 DynamoDB 中持久信息的持续时间由应用程序控制。
技术概述
下图展示了LangChain动态路由解决方案的架构。
该 Web 应用程序基于 Streamlit 构建,该 Streamlit 通过 Fargate 托管在 Amazon ECS 上,并使用应用程序负载均衡器对其进行访问。我们使用 Amazon Bedrock 上的 Anthropic 的 Claude v2.1 作为我们的法学硕士。 Web 应用程序使用 LangChain 库与模型进行交互。它还与各种其他 AWS 服务(例如 OpenSearch Service、Athena 和 DynamoDB)交互,以满足最终用户的需求。
认证的益处
该解决方案具有以下优点:
- 实现复杂度:
- 尽管需要更多的代码和定制开发,但 LangChain 提供了更大的灵活性和对路由逻辑的控制以及与各种组件的集成。
- 管理 OpenSearch 服务等矢量数据库需要额外的设置和配置工作。矢量化过程是用代码实现的。
- 与 AWS 服务集成可能涉及更多自定义代码和配置。
- 开发者经验:
- LangChain 基于 Python 的方法和丰富的文档对已经熟悉 Python 和开源工具的开发人员很有吸引力。
- 与使用 Amazon Bedrock 控制台相比,快速开发和调试可能需要更多的手动工作。
- 敏捷性和灵活性:
- LangChain支持广泛的法学硕士,允许您在不同的模型或提供商之间切换,从而提高灵活性。
- LangChain的开源特性使得社区驱动的改进和定制成为可能。
- 安全性:
- 作为一个开源框架,LangChain 可能需要组织内部更严格的安全审查和审查,这可能会增加开销。
结论
对话式人工智能助手是简化操作和增强用户体验的变革性工具。本文探讨了使用 AWS 服务的两种强大方法:Amazon Bedrock 的托管代理和灵活的开源 LangChain 动态路由。这些方法之间的选择取决于您组织的要求、开发偏好和所需的定制级别。无论采取何种方式,AWS 都可以让您创建智能 AI 助手,彻底改变业务和客户交互
在我们的中查找解决方案代码和部署资产 GitHub存储库,您可以在其中遵循每种对话式 AI 方法的详细步骤。
作者简介
阿米尔·哈克梅 是位于宾夕法尼亚州的 AWS 解决方案架构师。他与东北地区的独立软件供应商 (ISV) 合作,协助他们在 AWS 云上设计和构建可扩展的现代化平台。 Ameer 是人工智能/机器学习和生成式人工智能领域的专家,帮助客户释放这些尖端技术的潜力。闲暇时,他喜欢骑摩托车,与家人共度美好时光。
李 是位于波士顿的 Amazon Web Services 的 AI/ML 解决方案架构师,热衷于在 AWS 上设计和构建生成式 AI 应用程序。她与客户合作,利用 AWS AI/ML 服务来实现创新解决方案。
考萨尔·卡迈勒 是 Amazon Web Services 的高级解决方案架构师,在基础设施自动化和安全领域拥有超过 15 年的经验。他帮助客户在云中设计和构建可扩展的 DevSecOps 和 AI/ML 解决方案。