使用 Amazon Bedrock 评估对话式 AI 代理
作者:Sharon Li、Bobby Lindsey、Curt Lockhart、Suyin Wang 和 Tony Chen 日期:2024年7月25日分类:高级 (300), Amazon Bedrock,Amazon Lex,Amazon 机器学习,Amazon Q,Amazon SageMaker,人工智能,最佳实践,学习级别,技术指南,思想领导力永久链接评论
关键要点
对话式 AI 代理在各行各业的应用愈加广泛,需要提供可靠性和一致性,以确保无缝且值得信赖的用户体验。使用传统的测试和评估方法来验证对话式 AI 代理的功能较为困难,因为这些交互本质上是动态和对话式的。Amazon Bedrock 的 Agent Evaluation 提供了一种开源解决方案,能够在大规模下综合评估和验证对话式 AI 代理。随着对话式人工智能AI代理在各个行业的兴起,确保其可靠性和一致性显得尤为重要,以便为用户提供流畅和可信的体验。然而,这些交互的动态性和对话性使得传统的测试与评估方法面临挑战。对话式 AI 代理包含多个层级,从检索增强生成RAG到与外部知识源和工具交互的功能调用机制。尽管现有的大型语言模型LLM基准测试如 MTbench 能够评估模型能力,但它们缺乏验证应用层的能力。以下是开发对话式 AI 代理时的一些常见痛点:
主要痛点描述测试麻烦测试代理往往需要人工干预来验证响应的语义含义。测试案例设置困难由于代理交互的动态特性,设置合适的测试用例和自动化评估过程可能颇具挑战。故障排查复杂在与外部知识源和工具集成时,调试和跟踪如何使对话式 AI 代理采取适当行动或检索所需结果可能相当复杂。Agent Evaluation 是一个基于 Amazon Bedrock 的开源解决方案,旨在弥补这一空白,通过支持全面的评估和验证来使对话式 AI 代理的审核达到规模化。
Amazon Bedrock 是一项全托管服务,通过单一 API 提供来自行业领先公司的高性能基础模型FMs选项,包括 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon,具备构建安全、隐私和负责任的生成 AI 应用的广泛能力。
Agent Evaluation 提供了以下功能:
内置支持流行服务,包括 Amazon Bedrock Agents、Amazon Bedrock 知识库、Amazon Q Business、和 Amazon SageMaker 端点管理与代理的并发多轮对话,同时评估其响应可配置钩子以验证代理触发的操作集成到持续集成和交付CI/CD管道中以自动化代理测试生成测试摘要,提供性能洞察,包括对话历史、测试通过率、以及通过/未通过结果的推理提供详细的跟踪信息,以支持代理交互的逐步调试在本文中,我们将展示如何使用 Amazon Bedrock 和 Agent Evaluation 来大规模简化虚拟代理的测试。
解决方案概述
要使用 Agent Evaluation,您需要创建一个测试计划,该计划由三个可配置组件组成:
目标 代表您想要测试的代理评估器 表示用于评估目标的工作流和逻辑测试 定义目标的功能以及您希望终端用户与目标交互的方式,包括:代表代理与终端用户之间交互的一系列步骤您期望的对话结果以下图示说明了 Agent Evaluation 的高层工作原理。该框架实现了一个 LLM 代理评估器,用于调动与您自己的代理目标之间的对话并在对话过程中评估响应。
以下图示演示了评估工作流程,展示了评估器如何基于测试计划推理和评估响应。您可以提供初始提示,或者让评估器生成一个提示以开始对话。在每个回合中,评估器与目标代理进行交互并评估其响应。此过程将持续进行,直到观察到预期结果或达到最大对话轮数。
通过了解此工作流程逻辑,您可以创建测试计划,以彻底评估代理的能力。
使用案例概述
为说明 Agent Evaluation 如何加速对话式 AI 代理的开发和部署,让我们探索一个示例场景:使用 Amazon Bedrock Agents 开发保险索赔处理代理。该保险索赔处理代理预计将处理多项任务,例如创建新索赔、发送未提交文件的提醒、收集索赔证据以及在现有索赔和客户知识库中搜索相关信息等。
在此用例中,目标是测试代理准确搜索和检索现有索赔相关信息的能力。您需确保代理向终端用户提供关于现有索赔的正确和可靠信息。在部署前全面评估这一功能至关重要。
首先,在开发账户中创建并测试代理。在此阶段,您可以使用示例提示手动与对话式 AI 代理互动,以完成以下操作:
在 Amazon Bedrock 控制台上与代理进行多轮对话验证代理的响应验证代理触发的所有操作调试并检查任何路由故障的跟踪信息借助 Agent Evaluation,开发者可以通过以下步骤来简化此过程:
配置测试计划:从 Amazon Bedrock 提供的模型中选择评估器。配置目标,确保其为 Agent Evaluation 支持的类型 。在此文中,我们使用一个 Amazon Bedrock 代理。定义测试步骤和预期结果。以下是一个示例测试计划,您在测试系统中有一个 ID 为 claim006 的索赔,您希望验证代理能否准确回答有关此具体索赔的问题。yaml evaluator type bedrockclaude model claudehaiku target type bedrockagent bedrockagentaliasidxxxxxxx bedrockagentidxxxxxxx tests name GetOpenClaimsWithDetails steps Ask the agent which claims are open Ask the agent for details on claim006 expectedresults The agent returns a list of open claims The agent returns the details on claim006
从命令行运行测试计划: bash agenteval runAgent Evaluation 测试运行器将根据测试计划自动调度测试,并使用评估器确定目标的响应是否符合预期结果。
轻蜂加速器破解版查看结果摘要。 结果摘要将以 markdown 格式提供。在以下示例中,摘要指出测试失败,因为代理未能提供有关现有索赔 claim006 的准确资料。通过失败测试的跟踪文件进行调试。 Agent Evaluation 为测试提供详细的跟踪文件。每个跟踪文件详细记录目标和评估器之间的每个提示和交互。例如,在 invoketarget 步骤中,您可以了解到 Amazon Bedrock 代理响应背后的推理,使您能够深入了解决策流程:json { timestamp 20240417 1252112319060000 stepname invoketarget preProcessingTrace { modelInvocationOutput { parsedResponse { isValid false rationale Lets analyze the users input stepbystep 1 The user is asking for details on a specific claim with ID claim006 } } } }

跟踪信息显示,经过对话历史的审查,评估器得出结论,“由于代理只能访问其拥有的功能,因此无法回答或协助解决此问题。”因此,它结束了与目标代理的对话并继续生成测试状态。
识别和解决问题后,可以重新运行测试以验证修复。在此示例中,显然目标代理缺乏对索赔 claim006 的访问权限。从此处,您可以继续调查并验证 claim006 是否存在于测试系统中。将 Agent Evaluation 集成到 CI/CD 管道中
在开发账户中验证功能后,可以将代码提交到代码库,并启动对话式 AI 代理的部署过程。Agent Evaluation 与 CI/CD 管道的无缝集成是其一大关键特性,能够进行全面的集成测试,以确保新特性开发或更新过程中没有引入回归性错误。这个严谨的测试方法对于在软件交付生命周期中保持对话式 AI 代理的可靠性和一致性至关重要。
通过将 Agent Evaluation 集成到 CI/CD 工作流中,组织可以自动化测试过程,确保每次代码更改或更新都在部署前经过彻底评估。该预防措施可以大大降低引入可能影响对话式 AI 代理性能及整体用户体验的错误或不一致的风险。
标准的代理 CI/CD 管道包括以下步骤:
源代码库存储代理配置,包括代理说明、系统提示、模型配置等。您应始终提交更改以确保质量和可重现性。当您提交更改时,将调用构建步骤。在此步骤中,应运行单元测试以验证更改,包括拼写和语法检查。当更改部署到暂存环境时,Agent Evaluation 将运行一系列测试用例以进行运行时验证。在暂存环境上的运行时验证能够提升部署完全测试代理到生产环境的信心。以下图示说明了该管道。
接下来的章节中,我们将提供逐步说明,指导您如何使用 GitHub Actions 设置 Agent Evaluation。
前置条件
完成以下前置步骤:
遵循 GitHub 用户指南 以了解 GitHub 的基本操作。遵循 GitHub Actions 用户指南 以理解 GitHub 工作流和动作。遵循 使用 Amazon Bedrock Agents 的保险索赔处理代理 示例来设置代理。设置 GitHub Actions
完成以下步骤以部署解决方案:
编写一系列测试用例,遵循 agentevaluation 测试计划语法,并将测试计划存储在 GitHub 仓库中。例如,针对 Amazon Bedrock 代理目标编写的测试计划如下,使用 BEDROCKAGENTALIASID 和 BEDROCKAGENTID 作为占位符placeholders:yaml evaluator model claude3 target bedrockagentaliasid BEDROCKAGENTALIASID bedrockagentid BEDROCKAGENTID type bedrockagent tests InsuranceClaimQuestions
创建一个具有适当权限的 AWS 身份与访问管理 (IAM) 用户: 该主体必须具有对配置中指定模型的 InvokeModel 权限。该主体必须拥有调用目标代理的权限。具体权限取决于目标类型。有关详细信息,请参阅 agentevaluation 目标文档。
将 IAM 凭据 (AWSACCESSKEYID 和 AWSSECRETACCESSKEY) 存储在 GitHub Actions secrets 中。
根据以下内容配置 GitHub 工作流:yaml name Update Bedrock Agents
on push branches [ main ]
env AWSREGION lt部署的 AWS 区域gt
permissions contents read
jobs build runson ubuntulatest
steps name Checkout uses actions/checkout@v4 name Configure AWS credentials uses awsactions/configureawscredentials@v4 with awsaccesskeyid {{ secretsAWSACCESSKEYID }} awssecretaccesskey {{ secretsAWSSECRETACCESSKEY }} awsregion {{ envAWSREGION }} name Install agentevaluation run pip install agentevaluation agenteval help name Test Bedrock Agent id testbedrockagent env BEDROCKAGENTALIASID {{ varsBEDROCKAGENTALIASID }} BEDROCKAGENTID {{ varsBEDROCKAGENTID }} run sed e s/BEDROCKAGENTALIASID/BEDROCKAGENTALIASID/g e s/BEDROCKAGENTID/BEDROCKAGENTID/g testplans/agentevalyml gt agentevalyml agenteval run name Test Summary if always() id testsummary run cat agentevalsummarymd gtgt GITHUBSTEPSUMMARY当您将新更改推送到代码库时,它将触发 GitHub Action,示例工作流输出如下所示。
![GitHub Action Agent Evaluation 测试输出](https//d2908q01vomqb2cloudfrontnet/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/07
发表评论