将离线和在线人机工作流程整合到您在 AWS 上的生成性 AI 应用中 机器学习博客

在AWS中集成在线和离线人机工作流程到生成式AI应用

关键要点

本文探讨如何在AWS上集成离线和在线的人机工作流程,以提升生成式AI应用的效果和响应能力。采用人类反馈强化学习RLHF技术,结合近乎实时的人类介入以改进模型输出。使用Amazon SageMaker和Amazon Bedrock进行实践示例,展示如何提高生成模型的质量和可靠性。

最近,人工智能的快速发展促使出现了生成式AI技术,可以生成与人类相似的图像、文本和音频等内容。这些模型通过大规模数据集进行预训练,有时还需要通过更小且更具任务针对性的数据集进行微调。开发有效的生成式AI应用的重要方面是人类反馈强化学习RLHF。RLHF是一种结合奖励和比较的人类反馈技术,用于预训练或微调机器学习模型。通过对输出进行评估和批评,生成模型可以不断优化和改进其性能。生成式AI与人类输入之间的相互作用为更准确和负责任的应用奠定了基础。您可以在Amazon SageMaker中学习如何使用RLHF改进您的大语言模型LLM,详细信息可参见在Amazon SageMaker中改进您的LLM。

离线人机反馈与在线人机介入

虽然RLHF是纳入人类参与的主要技术,但并不是唯一的人机环节技术。RLHF是一种离线、异步的技术,人类根据输入提示对生成的输出提供反馈。人们还可以通过干预生成式AI与用户之间的现有沟通来增加价值。例如,根据人工智能的决定或用户的需求,人类可以插入现有对话并接手讨论。

在本文中,我们推出了一种集成近乎实时人机工作流程的解决方案,其中生成式AI系统会在出现情况或问题时提示人类采取行动。这也可以是基于规则的方法,确定您的专门团队在何时何地以及如何参与生成式AI与用户的对话。该用例的整个对话过程从生成式AI开始,然后引入接管的人工代理,所有交互记录都将被存档以用作知识库的一部分。结合RLHF,近乎实时的人机工作法使开发负责任且高效的生成AI应用成为可能。

本文将RLHF作为一种离线人机环节方法,并将近乎实时的人类干预视为在线方法。我们展示了一个解决方案,并通过模拟一个案例来提供示例,在该案例中,一级AWS专家会接受通知以帮助使用聊天机器人进行客户服务。我们在Amazon Bedrock上使用Amazon Titan模型,通过问答机器人了解客户情绪,并及时通知人类采取适当的措施。我们还有另一组专家利用Amazon SageMaker Ground Truth提供评估反馈,进行基于RLHF的训练完成质量评估。我们利用这些反馈对部署在Amazon Bedrock上的模型进行了微调,为聊天机器人提供动力。文章中提供了LangChain和AWS SDK的代码片段、架构及讨论,以指导您掌握这一重要主题。

SageMaker Ground Truth

SageMaker Ground Truth提供了最全面的人机工作环节能力,使您能够利用人类反馈的力量,提高模型的准确性和相关性。您可以使用SageMaker Ground Truth完成多种人机工作环节任务,从数据生成和注释到模型审查、定制和评估,可以通过自助服务或AWS托管提供。

Amazon Bedrock

Amazon Bedrock是一项完全托管的服务,提供来自AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI和Amazon等领先AI公司的高性能基础模型FMs,并通过单一API提供构建生成式AI应用所需的一系列功能,确保安全性、隐私和负责任的AI。通过Amazon Bedrock,您可以轻松实验并评估适合您用例的顶级FMs,利用微调和检索增强生成RAG等技术私下自定义它们,并构建利用您企业系统和数据源执行任务的代理。由于Amazon Bedrock是无服务器的,您无需管理基础设施,可以安全地将生成式AI能力集成并部署到您已熟悉的AWS服务中。

示例用例

在本示例中,我们将处理一个生成式AI支持的问答机器人,该机器人回答与SageMaker相关的问题。我们构建了如以下GitHub仓库所详述的RAG解决方案,并将SageMaker文档作为知识库。您可以按照相同的过程构建类似的聊天机器人。问答界面如下截图所示。您可以查看Amazon SageMaker示例,并以此作为知识基础。最终,问答的界面如图1所示。

蜜蜂加速器特色

图1 用户界面和聊天机器人示例应用,用于测试人机工作流程场景。

在此场景中,我们结合了两个人工工作流程以提高客户满意度。第一个是将交互发送给人类专家进行评估和评分。这是RLHF的一部分离线过程。第二个实时人工作流程由LLM决定启动。我们在本文中使用了一个简单的通知工作流程,但您可以使用任何实时人工作流程来接管AI人之间的对话。

解决方案概述

该解决方案由三个主要模块组成:

近乎实时的人类参与工作流程离线人类反馈工作流程进行RLHFRLHF的微调和部署

RLHF和实时人类参与工作流程是独立的。因此,您可以根据需要使用其中任意一个或两个。在这两种情况下,微调是将这些学习纳入LLMs的共同最终步骤。在接下来的章节中,我们将详细介绍逐一集成这些步骤,并将解决方案划分为相关部分,以供您选择和部署。

以下图解展示了解决方案架构和工作流程。

图2 人机工作流程模块的解决方案架构

实施

前提条件

我们的解决方案是对现有生成式AI应用的附加功能。在我们的示例中,我们使用了之前提到的SageMaker问答聊天机器人。然而,您也可以使用自己的应用。博文假定您有专家团队或工作力量进行审查或参与工作流程。

构建近乎实时的人类参与工作流程

该部分介绍LLM是如何调用人类工作流程进行预定义活动的。我们使用AWS Step Functions,这是一个无服务器工作流编排服务,可以用于人机工作流程。在我们的案例中,我们实时调用人类专家,但您可以根据AWS官方教程构建任何工作流程。

触发实时人类参与的决策工作流程

在此场景中,客户与问答机器人互动见上图的步骤1,如果互动显示强烈的负面情绪,将调用预先存在的人类工作流程见图2的步骤2。在我们的案例中,这是一个简单的电子邮件通知见图2的步骤3,但您可以扩展此交互,例如将专家直接召入聊天区域,以接管对话等见图2的步骤4。

在深入了解解决方案之前,重要的是讨论工作流程逻辑。以下图形显示决策工作流程的细节。交互从客户沟通开始。在这里,在LLM向客户请求提供答案之前,提示链会先向LLM发出内部提示,要求其查看客户响应并寻找明确的负面情绪。此提示及内部情感分析对客户并不可见。这是在进入响应的下一步骤之前的内部环节,根据您选择的偏好,之后的响应可能会反馈给客户。如果情绪为负,则下一步是触发预建立的人类参与工作流程,同时聊天机器人会通知客户正在提供额外帮助。否则,如果情绪为中性或积极,将提供标准回复。

此工作流程是一个示例,您可以随意添加或修改。例如,您可以进行任何其他决策检查,而不仅限于情感分析。您也可以准备在适当的提示链中直接回复客户反馈,以实现您设计的客户体验。在此,我们简单示例演示了如何轻松构建这样的提示链并引入外部现有工作流程,在我们的案例中是通过Amazon Bedrock使用人机工作流。我们优秀地利用相同的LLM对该内部情感提示检查进行响应以简化处理。然而,您可以包括不同的LLM,它们可能经过专门任务微调,例如情绪分析,以便您依赖另一种LLM来改善问答聊天体验。添加更多串联步骤到提示链会延长延迟,因为客户查询或请求处理会进行多次。

图3 由LLM触发的实时在线人类工作流程。

使用Amazon Bedrock实施决策工作流程

为实现决策工作流程,我们利用了Amazon Bedrock及其LangChain集成。提示链通过SequentialChain在LangChain中运行。由于我们的人类工作流程是由Step Functions编排的,因此我们还使用了LangChain的Step Function库。

首先,定义LLM和提示模板:

pythonprompt = PromptTemplate( inputvariables=[text] template={text})llm = Bedrock(modelid=amazontitantg1large)llmchaintoxic = LLMChain(llm=llm prompt=prompt outputkey=response)

然后,将第一个LLM的响应传递给下一个LLM,生成链的第二个指令是寻找响应的情感。我们还指示LLM提供0代表正面,1代表负面响应。

pythontemplateResponseSentiment = Find the sentiment of below sentence respond 0 if positive and respond 1 if negative{response}

promptsentiment = PromptTemplate(inputvariables=[response] template=templateResponseSentiment)llmchainsentiment = LLMChain(llm=llm prompt=promptsentiment outputkey=sentiment)

运行序列链以找到情感:

pythonresponse = overallchain({ text Can you code for me for SageMaker })print(response payload str(response))print(n response sentiment response[sentiment])

如果情感为负模型不会将响应提供给客户,而是调用将通知人类的工作流程:

pythonif 1 in responsesentiment[sentiment] # 1代表负面情感 print(triggered workflow check email of the human on notification and add to workflow anything else you may want) lambdaclient = boto3client(lambda) lambdapayload1 = {response response[text] responsesentiment 1} lambdaclientinvoke(FunctionName=triggerWorkflow InvocationType=Event Payload=lambdapayload1)

如果您选择让人类专家与用户一起加入聊天,您可以将这些交互纳入知识库。这样,当相同或类似问题再次出现时,聊天机器人可以在回答时利用这些交互。在本文中,我们没有展示这种方法,但您可以在Amazon Bedrock中创建知识库,以便将这些人机交互用于未来的对话。

构建离线人类反馈工作流程

在此场景中,我们假设聊天记录存储在一个Amazon简单存储服务Amazon S3桶中,以JSON格式存储,提供给人类专家进行标注和标签化每个LLM响应。聊天记录将发送给使用Amazon SageMaker Ground Truth的标签任务由标签工作队执行。然而,在某些情况下,由于资源限制,无法标注所有聊天记录。在这些情况下,您可能希望随机抽样记录或根据您的业务案例将模式发送给标注工作队。

预标注Lambda函数该流程起始于AWS Lambda函数。预标注Lambda函数根据日常作业、事件或按需调用。在此,我们使用按需选项。SageMaker Ground Truth向Lambda函数发送JSON格式的请求,以提供有关标注任务和数据对象的详细信息。更多信息请查阅此链接。以下是预处理Lambda函数的代码片段:

pythonimport jsondef lambdahandler(event context) return { taskInput event[dataObject] }

JSON格式请求

{ version 20181016 labelingJobArn dataObject { sourceref }}

SageMaker Ground Truth的自定义流程其余部分的送达示例、用户界面和结果存储由SageMaker Ground Truth完成,并通过预标注Lambda函数调用。我们在SageMaker Ground Truth中使用带自定义模板选项的标注任务。这一工作流程允许标注人员从15评分回答的相关性,5分为最高相关性。这里,我们假设了一种传统的RLHF工作流,其中标注工作队根据对LLM的期望提供分数。以下代码展示了一个示例:

html

{{ taskinputsource }}

将离线和在线人机工作流程整合到您在 AWS 上的生成性 AI 应用中 机器学习博客

How relevant is the below answer to the given question

How relevant is the below answer to the question {{ taskinputsource }}

在我们的场景中,我们为标注工作者提供了以下用户界面,以评分聊天机器人给出的完整响应。这为给定问题的答案提供反馈,评分为15分,5分为最相关的答案。

图4 RLHF反馈用户界面的两个示例。

后标注Lambda函数当所有工作者完成标注任务后,SageMaker Ground Truth会调用后标注Lambda函数,其中包含指向数据集对象及工作者注释的指针。该后处理Lambda函数通常用于注释合并,由SageMaker Ground Truth创建一个[清单文件](https//docsawsamazoncom

给我们留言