在 Amazon Bedrock AgentCore 中构建自定义基于代码的评估器
本文介绍了如何在 Amazon Bedrock AgentCore 中实现四个基于 Lambda 的自定义代码评估器,用于金融市场情报代理,涵盖模式验证、数值精度、工作流合规性和 PII 检测。同时展示了如何将自定义代码评估器与内置评估器结合使用,以及如何调用其他 AWS 服务进行事实核查和实时告警。
在金融和专业领域,代理的质量维度往往超越语言层面。市场情报代理必须以可配置的实时波段报价股票价格,在访问财务档案前必须遵循强制性的经纪人识别工作流,返回符合严格 JSON 模式的工具输出,并禁止泄露个人身份信息(PII)。这些检查需要确定性代码,在相同输入上产生相同结果。当客观代码是直接选择时,使用 LLM-as-a-Judge 运行这些检查可能成本高昂。
Amazon Bedrock AgentCore Evaluations 提供了 LLM-as-a-Judge 检查和可扩展的基于代码的评估器,以捕获评估代理应用所需的领域特定需求。通过自定义代码评估器,您可以引入 AWS Lambda 函数作为评估引擎,控制评分逻辑:正则表达式和结构验证、外部数据查找、其他服务调用或业务规则。同一评估器可以多种方式使用,无需为每个请求消耗基础模型令牌。在按需评估中,它作为开发工作流和 CI/CD 流水线中的门禁;在在线评估设置中,它可以对实时生产流量进行评分。即使跟踪来自不同的代理框架,您也可以使用此方法通过自己的逻辑一致地评估代理质量。
适合代码评估的质量维度
代理依赖结构化工具输出(如 JSON)。工具响应模式验证在工具边界捕获结构问题,很适合作为基于代码的检查,而 LLM-as-a-Judge 评估器则补充评判有用性和清晰度。数值精度方面,代码评估器调用参考系统、计算容差并标记每个差异,比 LLM 更可靠。工作流合约合规性要求代理遵循特定工具序列,代码评估器可检查会话中的工具调用顺序。PII 检测方面,代码评估器调用 PII 检测或秘密扫描服务,在响应内容上强制执行硬性规则。
评估器生命周期:从跨度到评分结果
代码评估器是向 AgentCore 控制平面注册的 Lambda 函数。运行时,AgentCore 假设 IAM 角色,用包含代理 OpenTelemetry 跨度(OTel spans)的负载调用 Lambda,并将响应写入 CloudWatch Logs 作为评估结果。负载包含模式版本、评估器 ID、名称、级别和评估输入对象。对于跟踪级评估器,还有一个 target 字段标识特定跟踪。对于会话级评估器,Lambda 对整个会话评分。
Lambda 响应遵循固定契约:成功时返回包含标签(如 PASS/FAIL)、可选分数(0.0-1.0)和可选解释字符串的字典;失败时返回包含错误代码和错误消息的字典。每个成功响应必须包含标签。分数和解释可选,但直接用于 CloudWatch 指标和 AgentCore Observability 仪表板。每个评估器在注册时设置三个级别之一:TRACE、TOOL_CALL 或 SESSION。
按需和在线模式
AgentCore Evaluations 支持两种模式下的代码评估器。一个评估器 ID 用于开发、测试、CI/CD 门禁和生产监控。Lambda 合约在两种模式下保持不变。按需评估适用于开发迭代、回归测试和 CI/CD 部署门禁。一个按需调用最多可引用 10 个评估器。在线评估持续采样实时代理流量,并按计划评分。需要创建一次在线评估配置,指定评估器、数据源(CloudWatch 日志组和 OTel 服务名称)和采样百分比(0.01-100%)。AgentCore 负责定期安排评估,并将结果写入专门的 CloudWatch 日志组。每个评估器分数也作为 CloudWatch 指标显示,可用于构建仪表板和配置告警。
解决方案概述
示例中使用市场趋势代理,这是一个基于 LangGraph 构建并部署到 Amazon Bedrock AgentCore Runtime 的投资情报助手。代理提供股票数据、多来源新闻分析和经纪人档案工具。示例包含四个评估器:ToolResponseSchemaValidator(跟踪级别)、StockPriceDriftChecker(跟踪级别)、WorkflowContractGSR(会话级别)和 PII 检测器。通过这些评估器,代理质量从“听起来正确”提升到“合约验证”。
自定义代码评估器为代理质量评估提供了强大的灵活性,能够处理领域特定的结构化检查,与 LLM-as-a-Judge 评估器共同构建全面的质量评估体系。