新闻动态

  • 首页 新闻动态 使用 Amazon Bedrock 代理构建稳健的生成式 AI 应用程序最佳实践 第 1 部分

使用 Amazon Bedrock 代理构建稳健的生成式 AI 应用程序最佳实践 第 1 部分

2026-01-27 12:37:49
36

构建稳健的生成型人工智能应用的最佳实践

关键要点

在构建能够准确理解和响应用户查询的智能代理时,必须进行仔细的规划与执行。本系列文章讨论在使用 Amazon Bedrock Agents 建立生成型 AI 应用时的最佳实践,包括如何收集真实数据、定义代理的范围、架构解决方案、以及维持用户体验等方面。本篇关注创建准确和可靠的代理,后续部分将深入探讨架构考虑和开发生命周期实践。

构建能够准确理解和回应用户查询的智能代理是一项复杂的任务,要求在多个阶段进行仔细规划和执行。无论是开发客户服务聊天机器人还是虚拟助手,都需要考虑多方面的因素,从定义代理的范围和能力,到构建稳健且可扩展的基础设施。

本系列文章分为两部分,探讨使用 Amazon Bedrock Agents 构建生成型 AI 应用的最佳实践。代理通过协调多步骤任务,加速生成型 AI 应用开发。代理使用基础模型FMs 的推理能力将用户请求的任务分解为多个步骤,并利用开发者提供的指令创建协调计划,然后通过调用公司 API 和访问知识库使用检索增强生成 RAG来满足用户请求。

在第一部分中,我们着重于创建准确和可靠的代理。第二部分 将讨论架构考虑和开发生命周期实践。

奠定基础:收集真实数据

任何成功代理的基础是高质量的真实数据准确的现实世界观察数据,用于评估模型、算法或系统的表现。在开始构建代理应用之前,收集一组真实的交互或对话数据是至关重要的,这将驱动整个代理生命周期。这些数据为预期的代理行为提供了基准,包括与现有 API、知识库及代理相关的防护措施的互动,从而实现准确的测试和评估,帮助识别边界情况和潜在问题。

为构建稳健的真实数据集,需专注于收集覆盖不同用户意图和场景的多样化示例。数据集中应包括简单和复杂交互的输入以及预期输出。随着对用户行为的更深入了解,定期更新和扩展数据集也非常重要。确保数据来自实际客户交互,且反映真实用例,同时去标识化和匿名化数据。

以下表格展示了为一个懂得 checkaccountbalance 和 bookappointments API 的银行助手所收集的部分真实数据,该助手使用知识库 bankingFAQ,并连接防护措施 BlockInvestmentAdvice。该示例仅展示了一些用于测试该代理的查询,并包括来自其他系统的会话信息,这些信息通过 sessionAttributes 传递给代理。在生产系统中,收集与代理共享的额外信息也被视为最佳实践。这包括仅与操作组执行功能共享的信息会话属性、用于增强提示的信息提示会话属性、以及知识库使用的信息知识库配置。

用户查询会话属性会话提示属性预期响应调用的 API、知识库和防护措施我的账户余额是多少?无无请提供您希望查询余额的账户号码。无账户 1234 的余额是多少?用户 ID 111无您的余额是 X操作组 checkaccountbalance(111 1234)我应该如何开设账户?无无要在 ANYBANK 公司开设新银行账户,您需要收集以下信息和文件:1 有效的政府签发 ID驾照、护照等 2 地址证明公用事业账单、租赁协议等 3 社会安全号码或个人纳税人识别号ITIN 4 初始存款金额如有要求 然后您可以在线或在 ANYBANK 公司分支机构填写申请。一旦获批,您可以进行初始存款并开始使用新账户。知识库 bankingFAQ我应该投资比特币吗?无无对不起,您的查询违反了我们的使用政策。我们不提供投资建议。要讨论适合您当前情况的最佳投资建议,请联系我们 (XXX) XXXXXXX,我们将乐意为您提供支持。防护措施 BlockInvestmentAdvice您能为我预约明天 2 点的会议吗?用户 ID 111今天 09/03/2024当然!我们已为您预约于 2024 年 9 月 4 日 2 点的会议。您的预约 ID 为 XXXX。操作组 bookappointment(111 09/04/2024)

定义范围和示例交互

现在您已经有了真实数据,接下来的步骤是明确定义每个代理的范围,包括它应该处理的任务和不应处理的任务,并概述明确的预期示例用户交互。该过程包括识别主要功能和能力、局限性和超出范围的任务、预期输入格式和类型,以及所需输出格式和风格。

使用 Amazon Bedrock 代理构建稳健的生成式 AI 应用程序最佳实践  第 1 部分

例如,考虑到一个人力资源助手代理,可能的范围如下:

主要功能:

提供有关公司人力资源政策的信息

协助假期请求和休假管理

飞机加速器app下载

解答基本的薪酬问题

超出范围:

处理敏感员工数据

做出招聘或解雇决策

提供法律建议

预期输入:

有关人力资源政策的自然语言查询

休假或假期信息请求

基本薪酬查询

所需输出:

对政策问题的清晰简洁回答

假期请求的逐步指导

完成新假期的预订、检索、编辑和删除现有请求的任务

对于复杂问题,向适当的人力资源人员推荐

为代理无法响应的问题创建人力资源工单

通过明确定义您的代理的范围,您可以设定明确的边界和期望,这将指导您的开发过程并帮助创造一个专注、可靠的 AI 代理。

架构您的解决方案:构建小而专注的代理并使其相互交互

在代理架构方面,“分而治之”的原则非常有效。根据我们的经验,构建小型、专注的代理使其相互交互,而不是构建一个大型单体代理,已被证明更为有效。这种方法提供了改进的模块性和可维护性、简单的测试和调试、灵活使用不同 FMs 处理特定任务的能力,以及增强的可扩展性和可延展性。

例如,考虑一个帮助公司内部员工的 HR 助手和一个支持薪酬团队员工的薪酬助手。这两个代理具有共同的功能,例如回答薪酬政策问题和安排员工之间的会议。虽然功能相似,但在范围和权限上有所不同。例如,HR 助手只能根据内部可用的知识回答问题,而薪酬助手还可以处理仅对薪酬员工可用的机密信息。此外,HR 代理可以安排员工与其指定的 HR 代表之间的会议,而薪酬代理则安排团队成员之间的会议。在单一代理方法中,这些功能在代理本身中处理,导致每个代理的操作组重复,如下图所示。

在这种情况下,当会议操作组中发生变化时,必须将该变化传播到不同的代理。应用多代理协作最佳实践时,HR 和薪酬代理会协调更小、更专注于任务的代理,这些代理专注于各自的范围,并拥有自己的指令。会议现在由一个可在两个代理之间重复使用的代理处理,如下图所示。

当为会议助手代理添加新功能时,HR 代理和薪酬代理只需更新以处理这些功能。您也可以在应用程序中自动化此过程,以增加代理解决方案的可扩展性。主管代理HR 和薪酬代理可以设定应用程序的基调,并定义代理的每个功能知识库或子代理如何使用。这包括在代理应用程序中加强知识库过滤器和参数限制。

塑造用户体验:规划代理语气和问候

代理的个性设定了整个用户互动的基调。仔细规划代理的语气和问候对于创造一致且吸引人的用户体验至关重要。需考虑品牌声音和个性、目标受众偏好、正式程度和文化敏感性等因素。

例如,一个正式的人力资源助手可能被指示以正式的方式称呼用户,使用称谓和姓氏,同时在整个对话中保持专业和礼貌的语气。相比之下,友好的 IT 支持代理可以使用随和、活泼的语气,以用户的名字称呼并适当加入表情符号和技术相关笑话,让对话更加轻松愉快。

以下是一个正式人力资源助手的示例提示:

您是一名人力资源 AI 助手,帮助员工理解公司政策和管理福利。始终以正式的方式称呼用户,使用称谓先生、女士、博士等和姓氏。在整个对话中保持专业和礼貌的语气。

以下是友好 IT 支持代理的示例提示:

您是 IT 伙伴,专为解决技术问题而来。使用随和活泼的语气,以用户的名字称呼。可以自由使用适当的表情符号和技术相关笑话,让对话轻松互动。

确保代理的语气与您的品牌形象一致,并在不同的互动中保持稳定。当多个代理之间进行协作时,您应设置整个应用程序的语气并在不同的子代理中强制执行。

保持清晰:提供明确的指令和定义

清晰的沟通是有效 AI 代理的基石。在定义指令、功能和知识库交互时,力求使用简单直接的语言,消除误解的可能性。对复杂概念提供具体示例。此外,为相似功能划定明确边界,并为关键操作实施确认机制。以下是模糊指令与清晰指令的对比示例。

模糊指令示例:

检查用户是否有可用的假期,并在可能的情况下预订。

清晰指令示例:

1 使用 checkTimeOffBalance 函数验证用户的可用假期余额。2 如果请求的假期可用,使用 bookTimeOff 函数进行预订。3 如果假期不可用,告知用户并建议替代日期。4 在确认用户后,才能最终确定任何假期预订。

通过提供明确的指令,您可以减少错误的可能性,并确保代理表现得可预测和可靠。

这条建议同样适用于定义您的操作组功能。避免使用模糊的函数名称和定义,并为其参数设置清晰的描述。以下图展示如何更改操作组中两个函数的名称、描述和参数,以根据实际返回值获取用户详细信息。

最后,知识库指令应明确说明知识库中可用的内容以及何时使用它来回答用户查询。

模糊指令示例:

知识库 1:使用该知识库获取文档信息。

清晰指令示例:

知识库 1:包含保险政策和内部文件的知识库。当用户询问政策条款或有关内部系统的问题时使用此知识库。

利用组织知识:整合知识库

为确保为您的代理提供企业知识,请将其与您组织现有的知识库整合。这使代理能够利用大量信息,提供更准确、上下文相关的响应。通过访问最新的组织数据,代理可以提高响应的准确性和相关性,引用权威来源,并减少频繁的模型更新需求。

在与 Amazon Bedrock 整合知识库时,请执行以下步骤:

使用 Amazon Bedrock Knowledge Bases 将文档索引到向量数据库中。配置代理在交互过程中访问知识库。实施引用机制,以在响应中引用源文件。

定期更新您的知识库,以确保代理始终能够访问最新的信息。这可以通过使用 StartIngestionJob API 和基于知识库 Amazon Simple Storage Service (Amazon S3) 存储还原数据源的 Amazon EventBridge 规则 来实现,该规则会定期调用或根据文件更新触发。

将 Amazon Bedrock 知识库与代理整合将使您能够为应用程序添加语义搜索能力。通过在代理的 SessionState 中使用 knowledgeBaseConfigurations 字段,在 InvokeAgent 请求中,您可以控制代理如何与知识库互动,设置所需的结果数量和任何必要的过滤器。

定义成功:建立评估标准

为衡量 AI 代理的有效性,定义具体的评估标准至关重要。这些指标将帮助您评估性能、识别改进领域,并跟踪进展。

考虑以下关键评估指标:

响应准确性 该指标衡量您的响应与真实数据的比较,提供信息如答案是否正确,代理是否显示良好的性能和高质量。任务完成率 衡量代理的成功率,核心思想是衡量代理成功完成请求任务和实现用户意图的对话或用户交互的百分比或比例。延迟或响应时间 衡量任务运行所需的时间和响应时间。基本上,它衡量代理在收到输入或查询后多快能提供响应或输出。您还可以设置中间指标,以测量代理每个步骤所需的运行时间,从而识别需要优化的步骤。对话效率 衡量对话收集所需信息的效率。用户参与度 衡量代理理解用户意图、提供相关且自然的响应,并保持双向对话流的能力。对话一致性 衡量响应之间的逻辑进展和连续性,检查上下文和相关性在会话中是否保持,以及是否使用适当的代名词和参考。

此外,您应该定义特定用例的评估指标,以确定代理在完成任务方面的表现。例如,对于 HR 用例,可能的自定义指标可以是创建的工单数量,因为当代理无法独立回答问题时会创建工单。

实施稳健的评估过程涉及根据您的真实数据创建一个全面的测试数据集,开发自动化评估脚本以测量定量指标,实施 A/B 测试以比较不同的代理版本或配置,并建立定期评估定性因素的人为评估流程。评估是一个持续的过程,因此您应根据代理的性能和用户需求不断完善评估标准和测量方法。

使用人为评估

尽管自动化指标很有价值,但人为评估在评估和改进 AI 代理性能方面起着至关重要的作用。人为评估者可以就难以通过自动方式量化的方面提供细致的反馈,例如评估自然语言理解和生成、评估响应在上下文中的适切性、识别潜在偏见或伦理问题,以及提供有关用户体验和满意度的见解。

有效利用人为评估时,请考虑以下最佳实践:

创建一个多样化的评估小组,代表不同的视角制定明确的评估指南和评分标准使用专家评估者例如主题专家和代表性最终用户的混合评估者收集定量评分和定性反馈定期分析评估结果,识别趋势和改进点

持续改进:测试、迭代和优化

构建有效的 AI 代理是一个迭代的过程。现在您拥有了一个工作的原型,全面测试、收集反馈并不断改善代理性能

亚马逊 Redshift 在 2023 年 AWS reInvent 上的公告,让您能够对所有数据

Amazon Redshift 在 AWS reInvent 2023 的新公告关键要点在 AWS reInvent 2023 上,Amazon Redshift 宣布了一系列新功能,旨在增强大数据分析的能力。这些更新包括提高价格性能、零 ETL 的集成、多数据仓库写入以及创新的分析和机器学习功能,...



使用托管在 Amazon Bedrock 上的多模态基础模型与您的幻灯片进行对话

使用Amazon Bedrock与多模态基础模型进行Slide Deck对话关键要点在本文中,我们介绍了一种新的方法,利用Amazon Bedrock上的Claude 3 Sonnet模型来生成幻灯片的文本描述,并通过这些描述回答用户问题。这一过程包括获取幻灯片的文本嵌入并存储在向量数据库中,最后使...