构建包含人类参与的生成式 AI 提示链工作流程 机器学习博客

构建生成性 AI 提示链工作流与人工审核

关键要点1 生成性 AI 可以创建新内容,适用于各种任务,尤其是文本、图像和视频生成。2 提示链技术通过将复杂任务细分为多个小任务来提高模型的准确性和效率。3 在涉及复杂高风险决策时,整合人工审核有助于确保输出的可靠性。4 事件驱动架构使系统的扩展和维护变得更加简单。

在这篇文章中,您将学习到生成性 AI 的提示链技术,如何将复杂任务分解为多个任务,并且如何通过人工审核提高生成模型的响应质量。

生成性 AIGenerative AI是一种人工智能AI,可以用来创建新内容,包括对话、故事、图像、视频和音乐。生成性 AI 的运作依赖于机器学习模型,特别是经过大量数据预训练的基础模型Foundation Models,FMs。这些模型在广泛的非标记数据集上进行训练,能够根据输入的提示准确执行多种任务。大语言模型Large Language Models,LLMs是 FMs 的一种特定类型,专注于语言相关任务,如摘要、文本生成、分类、开放式对话和信息提取。

尽管 FMs 和 LLMs 已经预训练,但在推理过程中它们仍然可以通过数据输入或提示进行学习。这意味着您可以通过精心设计的提示来开发出全面的输出。提示是指您传递给 LLM 的信息,目的是引导其做出响应。这包括任务上下文、传递给模型的数据、对话和操作历史、指令,甚至示例。为了从这些模型中获取特定响应,设计和优化提示的过程被称为提示工程Prompt Engineering。

虽然 LLMs 在遵循提示中的指令方面表现良好,但在任务复杂的情况下,它们可能会遗漏任务或未能达到预期的准确性。当您将复杂的任务分解为较小的子任务时,LLMs 更容易处理这些挑战。将复杂任务拆解为子任务的技术被称为 提示链。通过提示链,您创建一组较小的子任务作为单独的提示。这些子任务共同组成了整体复杂任务。为完成最终任务,您的应用程序按照预定义顺序或规定的规则,将每个子任务提示输入到 LLM 中。

虽然生成性 AI 能够创建高度逼真的内容,包括文本、图像和视频,但它也可能生成看似合理但实际不准确的输出。在复杂和高风险的决策场景中,引入人类判断是至关重要的,这一过程涉及到建立一个以人为中心的循环,允许人类与 AI 系统共同参与决策。

示例概述

以一家零售公司为例,该公司允许顾客在其网站上发布产品评论。通过及时回复这些评论,公司展示了其对顾客的承诺,从而加强了客户关系。

在这篇文章中,示例应用程序自动化了对客户评论的回复。对于大多数评论,系统使用 LLM 自动生成回复。然而,如果评论或 LLM 生成的回复在毒性或语气方面存在不确定性,则系统会标记该内容,待人类审核。人类审核员评估标记的内容,以决定其毒性或语气。

该应用程序采用事件驱动架构EventDriven Architecture,EDA,一种强大的软件设计模式,可以通过事件构建解耦系统。一旦创建产品评论,评论接收系统使用 Amazon EventBridge 发送事件,标识发布的产品评论及其内容。该事件会启动一个 AWS Step Functions 工作流,该工作流依次执行多个步骤,包括使用 LLM 生成内容并引入人为决策。

生成评论回应的过程包括评估评论内容的毒性、识别情感、生成回复,并涉及人类审核。由于这是一个包含多个顺序步骤的单一过程,并且需要在步骤间管理状态,因此该示例使用 Step Functions 进行工作流编排。以下是评论回应工作流中的步骤:

白鲸加速器使用 Amazon Comprehend DetectToxicContent API 检测评论内容是否有有害信息。该 API 返回一个毒性分数,表示检测结果的整体置信度,分数在 0 到 1 之间,越接近 1 表示毒性越高。如果评论的毒性在 04 到 06 之间,发送评论给人类审核员决定。如果评论的毒性大于 06 或审核员发现评论有害,发布 HARMFULCONTENTDETECTED 消息。如果评论的毒性小于 04 或审核员批准评论,先找出评论的情感,然后生成对评论的回复。两项任务均使用生成 AI 模型完成。通过 Comprehend API 对 LLM 生成的回复进行毒性检测。如果 LLM 生成的回复毒性在 04 到 06 之间,将其发送给人类审核员。如果 LLM 生成的回复被发现是无毒的,发布 NEWREVIEWRESPONSECREATED 事件。如果 LLM 生成的回复被发现是有毒的,发布 RESPONSEGENERATIONFAILED 事件。

开始使用

按照 GitHub 仓库 中的说明部署和运行应用程序。

提示链

提示链通过将单一、详细和整体式任务划分为较小、易于管理的任务,从而简化了 LLM 的问题。并非所有的 LLM 都擅长在单个提示中遵循所有指令,因此这一简化过程帮助您为 LLM 编写更集中的提示,从而导致更一致和准确的响应。以下是一个示例,无效的单一提示。

阅读以下客户评论,过滤有害内容并提供您对整体情感的看法,格式为 JSON。然后根据您确定的情感撰写电子邮件回复,并将电子邮件以 JSON 格式附上。根据情感,撰写一份关于如何改进产品的报告。

要使其更有效,您可以将提示拆分成多个子任务:

过滤有害内容理解情感生成电子邮件回复撰写报告

您甚至可以并行运行其中的某些任务。通过将任务拆分为集中的提示,您获得以下好处:

加快整个过程。您可以并行处理任务,针对不同任务使用不同模型,并向用户发送响应,而不必等待模型处理更大提示所需的更长时间。更好的提示提供更好的输出。通过使用集中的提示,您可以通过添加额外的相关上下文来优化提示,进而提高输出的整体可靠性。减少开发时间。提示工程是一个迭代过程。调试针对详细提示的 LLM 调用和优化较大提示以实现准确性都需耗费大量时间和精力。较小任务使您能够通过连续迭代进行实验和优化。

Step Functions 是构建提示链的自然选择,因为它提供了多种方法来连接提示:顺序、并行和通过将状态数据从一个状态传递到另一个状态的迭代方式。假设您已经构建了产品评论回应的提示链工作流,现在希望使用评估测试套件评估不同 LLM 的响应以寻找最佳选择。评估测试套件由数百个测评产品评论、与评论相对应的参考响应和用于评估 LLM 响应与参考响应的规则组成。您可以使用 Step Functions 工作流自动化评估活动。工作流中的第一个任务要求 LLM 为产品评论生成回复。然后,第二个任务要求 LLM 将生成的回复与参考回复进行比对,并根据规则生成评估分数。基于每个评论的评估分数,您可以决定 LLM 是否通过评估标准。您可以使用 map state 在 Step Functions 中并行处理评估测试套件中的每个评论。有关更多提示链的示例,请查看这个 仓库。

人工审核的环节

在示例中引入人工决策可以提高系统的准确性,尤其是在内容毒性无法明确判定时。您可以使用 等待回调与任务令牌 集成在 Step Functions 工作流中实现人工审核。当您使用此集成与任何支持的 AWS SDK API 时,工作流任务会生成一个唯一令牌,并在令牌返回之前暂停。您可以利用这一集成来包括人类决策、调用遗留的本地系统、等待长时间运行的任务完成等。

jsonWait for human approval for product review { Type Task Resource arnawsstateslambdainvokewaitForTaskToken Parameters { FunctionName arnawslambda{region}{account}functionhumanapprovalhelperproductreviewresponseautomationstage Payload { reviewtext ExecutionInputreviewtext token TaskToken apiurl https//{apiID}executeapi{region}amazonawscom/dev } }}

在示例应用程序中,待审核的邮件发送任务包括等待回调令牌。它调用一个 AWS Lambda 函数并等待该令牌。Lambda 函数构建包含指向 Amazon API Gateway URL 的链接的电子邮件信息。然后,Lambda 使用 Amazon Simple Notification Service (Amazon SNS) 向人类审核员发送电子邮件。审核员审核内容,并通过电子邮件中的相应链接选择接受或拒绝该消息。该行为会触发 Step Functions 的 SendTaskSuccess API。该 API 返回任务令牌和是否接受或拒绝审查的状态信息。Step Functions 接收令牌,恢复待审核的邮件发送任务,然后将控制权传递给选择状态。选择状态根据状态消息决定是否接受或拒绝审核。

事件驱动架构EDA

事件驱动架构EDA使构建可扩展架构成为可能。您可以随时通过订阅事件添加消费者。例如,考虑到除了文本内容外,还需要审核附加于产品评论的图像和视频。您还需要编写代码以在发现有害内容时删除图像和视频。您可以在不对现有事件消费者或生产者进行任何代码更改的情况下,向 NEWREVIEWPOSTED 事件添加消费者,即图像审核系统。当图像审核工作流发现有毒内容时,会发布 HARMFULCONTENTDETECTED 事件。该事件可以被评论响应系统处理,决定如何处理该事件。通过事件解耦系统,您获得了许多优势,包括提高开发速度、变更可扩展性和容错能力。

清理

按照 GitHub 仓库中的说明删除示例应用程序。

结论

在这篇博客文章中,您了解了如何构建具有提示链和人类审核流程的生成性 AI 应用程序。这两种技术均可以提高生成性 AI 应用程序的准确性和安全性。您还学习了如何通过工作流将事件驱动架构与生成性 AI 应用程序集成。

访问 Serverless Land 获取更多 Step Functions 工作流的资源。

关于作者

Veda Raman 是 AWS 生成性 AI 和机器学习高级专职解决方案架构师,负责协助客户设计高效、安全和可扩展的机器学习应用程序。Veda 专注于生成 AI 服务,如 Amazon Bedrock 和 Amazon Sagemaker。

Uma Ramadoss 是亚马逊网络服务公司的首席解决方案架构师,专注于无服务器和集成服务。负责帮助客户设计和运营基于事件的云原生应用程序,使用 Lambda、API Gateway、EventBridge、Step Functions 和 SQS 等服务。Uma 在领导企业级无服务器交付项目方面具有实践经验,并对事件驱动、微服务和云架构有深入了解。

构建包含人类参与的生成式 AI 提示链工作流程 机器学习博客

我们全新的 AWS 英雄团队已于2024年6月到来  AWS 新闻博客
我们全新的 AWS 英雄团队已于2024年6月到来 AWS 新闻博客

新一届 AWS Heroes 成员已到来 2024年6月作者:泰勒雅各布森,发布时间:2024年6月5日 在AWS公告、AWS Heroes和新闻中查看永久链接评论 分享关键要点最新一届 AWS Heroes 的介绍这些勇士们在全球社区中的影响力与贡献每位 Hero 的专业领域与成就活跃的 AWS ...

通过在云运营健康管理中使用人工智能提升生产力 机器学习博客
通过在云运营健康管理中使用人工智能提升生产力 机器学习博客

利用人工智能提升云操作健康管理的生产力关键要点现代组织越来越依赖强大的云基础设施,以确保业务连续性和操作效率。通过应用人工智能,企业可以更有效地管理云操作事件,减少不必要的人工干预,并提高整体运营效率。组织在管理云操作事件时面临重大挑战,尤其是在复杂的组织结构中,日常发生的大量事件使得手动管理成为不...