前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
返回 AI 情报前线
All News · 全部资讯8742
  • 高通骁龙8 Gen6端侧跑300亿参数MoE模型,吞吐330 Token/s
  • Claude Opus 5.5评测:智商极高但费用惊人
  • 小米开源 MiMo-V2.6:万亿参数开源模型登顶榜
  • AI Agent 工具 API 设计指南
  • 一个浏览器扩展权限即可劫持五大 AI Agent
  • Claude Opus 5.5 主打端到端代码补全而非起步
  • GPT-6 Sol发布:对齐能力逼近Astra,价格仅五分之一
  • GPT-6 Sol/Luna编程能力比肩Claude,成本降80%
  • Claude Opus 5.5发布:性能对标Fable 5.1,成本低40%
  • Claude Opus 5.5:编程修复成功率达97.5%,成本降40%
  • 开源工具llm 0.36支持GPT-6 Sol/Luna
  • JetBrains押注Agent开发:称其为26年最重要一步
  • 为 AI 代理添加预算守卫的实战方案
  • OpenAI GPT-6 Sol和Luna模型上线Amazon Bedrock
  • OpenAI发布GPT-6 Sol和Luna,API价格减半
  • OpenAI 发布 GPT-6 Sol/Luna 模型,Token 价格减半
  • GPT-6 Sol/Luna 正式发布:成本更低、错误更少
  • OpenAI 发布 GPT-6 Sol/Luna,主打低成本低幻觉
  • Claude Opus 5.5 登陆 Google Cloud,在 Model Garden 可用
  • Claude Opus 5.5 现已在 AWS Bedrock 可用
  • Strands Evals + Bedrock AgentCore:Agent 技能选择评估指南
  • llm-anthropic 0.29支持Claude Opus 5.5
  • Claude Opus 5.5发布:性能持平Fable 5.1,定价直降40%
  • GitHub Copilot上线Claude Opus 5.5,支持长时Agent任务
  • GitHub Copilot 新增 GPT-6 Sol/Luna 模型选项
  • Claude Opus 5.5 智能/性能/价格深度分析
  • Anthropic发布Opus 5.5降价20%,但Agent调用可能暗中路由至旧模型
  • Anthropic称Opus 5.5为「史上最强」,定价更低的Fable级性能
  • Anthropic 发布 Claude Opus 5.5:强化网络安全防护,遏制越狱行为
  • Claude Opus 5.5 正式发布:832 分成社区热议
  • 生产级 AI 语音 Agent 架构:WebSocket 与延迟优化实战
  • Permission Envelope:让 AI 权限自动过期的安全控制机制
  • llm-typesafe插件支持Jev模型二元判断
  • Python AI Agent 上线前必读:测试、可观测性与零成本方案
  • Cloudflare Worker Previews:为 Agent 每次变更提供隔离预览环境
  • NVIDIA Isaac ROS 5.0 发布:加速 Agentic 机器人开源开发
  • Meta Muse macOS 应用零日漏洞遭修复
  • 小米6天烧2000万训练开源模型MiMo,跃居开放模型榜首
  • LLM应用输入输出Guardrails实战指南
  • Claude发现libheif堆缓冲区溢出:HEIC图片供应链安全研究
  • 多模型调度与反馈闭环:基元律动CTO谈Agent持续进化
  • 阮一峰科技周刊第413期:再见了React Native
  • 用Python/ChromaDB/Gemini搭建轻量级RAG实战
  • 生产环境中降低LLM成本的七种实战方法
  • AI驱动开发反思:过度规格化反而拖累AI编程
  • AMD ROCm:AI Agent正在降低GPU编程门槛
  • 小米MiMo-V2.6-Pro登顶开源权重模型榜首,300万美元预训练
  • 四Agent并行:状态文件是保持一致性的关键
  • 长任务前何时压缩上下文:Claude Code实战经验
  • 5美元/月自建Qwen2.5 72B推理服务:vLLM+AWQ量化部署指南
  • Prompt缓存失效的根因:工作流在悄悄破坏精确前缀匹配
  • 已加载 51 / 8742
8.0
热点
AI SCORE
技术实践2026-09-23 01:18

Strands Evals + Bedrock AgentCore:Agent 技能选择评估指南

AWS ML Blog#AWS#Agent#评测
Editor brief · 编辑速览

介绍如何量化 Agent 是否选对了技能并正确执行,为 Agent 应用提供可度量的质量保障方法。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

通用智能体可以处理广泛的任务,但你仍然需要它们遵循驱动你业务的流程:合规检查、文档处理工作流、升级策略、工程规范。将所有这些编码到一个系统提示或应用逻辑中会变得难以维护和更新。技能(Skills)是一种模块化的替代方案。技能是一组可重用的指令,通常存储在 SKILL.md 文件中,用于教智能体完成特定领域的任务,如编辑合同、对账发票或遵循团队的拉取请求规范。由于技能遵循开放的 Agent Skills 标准,它们可以在兼容的测试框架之间移植,智能体在运行时只加载所需的技能,而不是在其核心指令中携带所有流程。

技能将一个或多个工具与智能体正确使用它们所需的上下文打包在一起:

  • 指令(Instructions):注入到智能体上下文中的特定领域指导和约束。
  • 工具绑定(Tool bindings):技能依赖的 API、模型上下文协议(Model Context Protocol,MCP)服务器或本地命令。
  • 知识(Knowledge):参考资料和实际案例。
  • 工作流(Workflow):技能遵循的多步骤流程或决策逻辑。
  • 护栏(Guardrails):格式要求、范围限制和验证规则。

这种模块化方法帮助团队更快地专门化智能体、在不同智能体和工作流之间重用经过验证的流程、保持行为一致性,以及在不微调底层模型或重写智能体核心逻辑的情况下更新特定领域指导。

智能体中的这种技能可组合性引入了两种通用输出质量指标可能无法发现的故障模式:智能体调用了不适合任务的技能,以及智能体调用了正确的技能但跳过或仅部分遵循其指令。这两种故障都可能产生流畅、看似合理的响应,而没有使用你预先确定的领域知识。因此,评估不能只检查最终响应。

为了使这些故障可衡量,Strands Evals SDK 和 Amazon Bedrock AgentCore Evaluations(Amazon Bedrock AgentCore 的一项功能)添加了以技能为中心的评估器:

  • 技能选择准确性(Skill Selection Accuracy) 确定每个调用的技能是否是任务的合适选择。它对每个调用的技能返回二元结果。
  • 技能指令遵循(Skill Instruction Following) 确定智能体遵循调用技能指令的完整程度。它为每个规定步骤返回基于证据的五级评分。

此外,在 Strands Evals 上,技能已调用(Skill Invoked) 是对命名技能是否已成功加载的确定性检查。

在这篇文章中,你将学习如何从记录的轨迹中评估技能选择和指令遵循、在测试套件中添加确定性路由检查、使用 AgentCore Evaluations 从 OpenTelemetry 跟踪中评估技能行为,以及解释每个技能的结果以选择正确的修复方法,所有这些都是通过 AgentCore CLI 完成的。

了解每个评估器衡量的内容

智能体接收任务和技能目录,选择技能,加载它,然后执行。运行被记录为 Strands Evals 中的轨迹或你可观测性层中的 OpenTelemetry 跟踪。现在可以将此记录用于所有三个技能评估器。技能选择准确性检查每个调用的技能是否适合任务,以及智能体是否调用了正确的技能。下图显示了智能体如何从提供给它的 1:n 个技能中选择技能。然后技能选择准确性对所选技能是否是任务的正确选择进行评分。你可以在提示模板文档中找到此评估器的提示模板和评分标准。

图 1:技能选择准确性检查智能体是否为任务选择了合适的技能

技能指令遵循询问智能体遵循该技能规定步骤的完整程度。你可以在提示模板文档中找到此评估器的提示模板和评分标准。

图 2:技能指令遵循衡量智能体遵循技能步骤的完整程度

SkillInvoked 是确定性的。它不调用模型,且为 Strands Evals 特有。

这三个技能评估器的概述如下图所示。

图 3:三个技能评估器概述

考虑一个具备请假(PTO)规划和员工福利讨论技能的 HR 助手智能体。员工询问他们的牙科和视力福利。如果智能体调用福利技能,它可能会产生更完善的响应。但如果工具调用成功而智能体选择了错误的剧本,技能选择准确性会隔离该路由决策。

现在假设智能体为相关请求正确调用了 PTO 规划技能。该技能指示智能体识别 employee_id、检查 PTO 余额、根据最新 HR 政策检查滚动规则,然后在条件允许的情况下提交 PTO 请求。如果智能体检查了 PTO 余额但跳过了滚动规则,智能体可能仍然返回看似合理的响应,同时违反了规定的流程。技能指令遵循隔离了该执行故障并识别了跳过的步骤。

这两类故障需要不同的修复方法。不合适的选择通常指向重叠或模糊的技能描述。指令遵循不完整可能需要更清晰的步骤、不同的技能结构或更有能力的智能体模型。

由于基于评判的评估器返回每个调用技能的结果,多技能运行仍然可以诊断:你可以识别哪个选择或指令遵循结果降低了总分。如果没有调用技能,基于评判的评估器不会产生分数。当回归测试有已知路由要求时,将它们与 SkillInvoked 配对使用。

Python 3.10 或更高版本。

一个具有 Amazon Bedrock 访问权限的 AWS 账户,以及具有调用模型权限的凭据。

要跟随 Strands Evals 部分,请安装 SDK:

pip install strands-agents-evals strands-agents

你还需要一个记录的智能体运行。技能评估器接受 Strands Evals Session 或原始消息列表作为轨迹。在启动时,技能提取从 Strands AgentSkills 插件、Claude Code、Claude Agent SDK、OpenAI Agents SDK、Codex、Gemini CLI、OpenHands、Google ADK 和通用 SKILL.md 文件读取中识别信号。

要跟随 AgentCore Evaluations 部分,你需要:

托管在 Amazon Bedrock AgentCore 运行时或其他位置的智能体。我们将使用 HR 助手智能体作为示例,你可以在自己的账户中部署。

为该智能体启用的可观测性,以便它将遥测数据传送到 Amazon CloudWatch。

在 CloudWatch 中启用的交易搜索。

这篇文章中的示例使用 AgentCore CLI:

npm install -g @aws/agentcore

使用 Strands Evals 评估记录的轨迹

当你控制测试用例并可以在开发或持续集成期间重新运行智能体时,Strands Evals 很有用。在完整代码示例中查看为 HR 助手智能体创建的完整 Strands Evals 代码示例。

1. 定义用例和评估器

from strands_evals import Case, Experiment
from strands_evals.evaluators import (
    SkillInstructionFollowingEvaluator,
    SkillInvoked,
    SkillSelectionAccuracyEvaluator,
)

case = Case(
    name="q3-revenue-tables",
    input="Summarize the revenue tables in q3-report.pdf",
)

evaluators = [
    SkillSelectionAccuracyEvaluator(),
    SkillInstructionFollowingEvaluator(),
    SkillInvoked(skill_name="pdf-table-extraction"),
]

2. 运行智能体并捕获其轨迹

技能评估器读取运行的轨迹。TracedHandler 收集智能体的跨度并将它们附加为轨迹:

from strands import Agent
from strands_evals import TracedHandler, eval_task

@eval_task(TracedHandler())
def task_function():
    return Agent(...) # 你的配备技能的智能体

experiment = Experiment(cases=[case], evaluators=evaluators)
report = experiment.run_evaluations(task_function)
report.run_display()

3. 解释报告

假设智能体加载了 pdf-table-extraction,运行了 pdftotext -layout,但从未打开提取的文件或定位表边界。简化报告:

SkillSelectionAccuracyEvaluator: score=1.00, pass=True
pdf-table-extraction: The skill directly matches the request.
SkillInstructionFollowingEvaluator: score=0.50, pass=False
pdf-table-extraction: The extraction phase was completed,
the table-boundary phase was skipped.
Steps:
- Extract text with layout preservation: covered
- Locate table boundaries: skipped
- Summarize each table's headline figure: partial
SkillInvoked: score=1.00, pass=True
skill 'pdf-table-extraction' was invoked

Skill Instruction Following 使用五级评分:完全遵循(1.0)、大部分遵循(0.75)、部分遵循(0.5)、最小程度遵循(0.25)和未遵循(0.0)。通过标准为大部分遵循或更好。

将检查项转换为部署关卡

为每个关键技能添加 SkillInvoked,即特定回归用例必须调用的技能。由于不调用模型,因此是一个快速的路由断言。

以 report.test_passes 作为构建关卡:if not all(report.test_passes): raise SystemExit(1)。

使用聚合分数跟踪更广泛的趋势,但在强制执行前根据你自己的用例校准阈值。

使用 AgentCore Evaluations 评估生产追踪

AgentCore Evaluations 直接与现有的 OpenTelemetry 追踪配合工作,支持按需评估、存储会话的批处理以及实时流量的持续采样。遥测数据按会话、追踪和跨度组织。由于技能评估器在工具调用级别运行,每个结果都包含 spanContext,包含已识别技能调用的 sessionId、traceId 和 spanId。

技能调用通过 SKILL.md 文件系统读取(跨框架工作)或 Strands Agents、LangGraph Deep Agents、Google ADK 或 Claude Agent SDK 中的原生技能加载工具来识别。

自定义评估器的追踪占位符

AgentCore Evaluations 包含两个内置的基于评判的技能评估器。若要为内置评估器未覆盖的内容打分,请在 TOOL_CALL 级别创建自定义评估器。工具级模板可以引用技能占位符:

例如,检查技能运行中某个特定属性的模板:

## Skill instructions

{skill_content}

## Conversation record

{context}

## Evaluation Question

Did the agent complete every numbered step in the skill instructions above, in the order given? Answer Yes or No.

你引用的占位符也决定了评估器的运行时机。包含 {invoked_skill} 的模板仅在技能调用跨度上运行,而包含 {skill_content} 的模板还需要加载的内容体。

以下命令针对支持技能启用的独立运行时。将 skills-evaluation/agent_config.json 中的运行时名称(agent_id 或 agent_arn)替换 <skill-runtime>。Strands.SkillInvoked 仅为客户端使用,无 CLI 等效项。

运行按需评估

使用按需评估来调查某个会话、验证最近的变更或评估预发布流量:

agentcore run eval \
  --runtime <skill-runtime> \
  --evaluator Builtin.SkillSelectionAccuracy Builtin.SkillInstructionFollowing \
  --session-id <session-id>

运行批量评估

使用批量评估来一次评分多个存储的会话,例如在技能目录变更前建立基线:

agentcore run batch-evaluation \
  --runtime <skill-runtime> \
  --evaluator Builtin.SkillSelectionAccuracy Builtin.SkillInstructionFollowing

配置持续在线评估

在线评估对实时流量进行采样,以便检测精心策划的测试集未预见到的行为:

agentcore add online-eval \
  --name HRSkillsProductionEval \
  --runtime <skill-runtime> \
  --evaluator Builtin.SkillSelectionAccuracy Builtin.SkillInstructionFollowing \
  --sampling-rate 100 \
  --enable-on-create

然后部署以配置在线评估:

agentcore deploy

持续评估对于检测目录漂移(新技能与现有描述重叠时)、未预见的措辞(真实请求与策划的测试提示不同)以及长会话失败(指令遵循随上下文增长而退化时)特别有用。

评估智能体技能时,首先要内化的是路由和执行是两种不同的失败模式,你的评估策略需要将它们清晰地分开。如果你看到高选择分数但低指令遵循分数,这表明路由器选择了正确的技能但未完全执行。相反的模式意味着如果该技能被调用,它本来可以正常工作。将这两个评估一起运行,而不是将它们折叠成一个通过/失败的数字,正是让你能够区分这两种情况的原因。在构建任何自定义内容之前,先从内置评估器开始建立基线,这样你之后添加的任何自定义逻辑都可以覆盖基线实际遗漏的部分。对于你已经知道正确路由行为的需求,不要依赖评判模型来捕获它。为每个必须触发的技能添加确定性 SkillInvoked 断言。

运行评估后,不要只看聚合分数。每步证据才是真正诊断发生的地方。它告诉你指令是被完全覆盖、部分完成还是完全跳过,这种详细程度是将失败评估转化为可操作修复的关键。这也是为什么你应该在每个生命周期阶段进行评估,而不是等到最终输出。末尾的失败不能告诉你路由器是将请求发送到了错误的地方还是正确的技能执行不佳,你需要两个信号才能知道要修复什么。

技能级和端到端评估应该配对使用,因为一个技能可以完美执行但对于面前的请求仍然是错误的技能。通过编写真正具有区分性的技能描述,你可以在上游减少大量这种歧义。同样的逻辑也适用于技能的范围。一个技能被构建来处理六个不相关的函数,就没有单一的正确行为定义,这使得它几乎无法一致地评估。

明确说明只应评估给定运行中实际采取的路径,否则未采取的分支会被错误计为跳过的步骤,并悄悄破坏你的通过率。在信任任何这些分数之前,验证你的提取管道是否在实际追踪上正常工作。

随着你在工具间扩展,阈值可能无法完全迁移。每个评估表面都需要根据其自身的条款进行校准,因为在 Strands Evals 上的通过分数和在 AgentCore Evaluations 上的通过分数不一定意味着相同的事情。最终,这些都不应该存在于你的部署管道之外。技能质量回归需要像失败的单元测试一样阻止发布,否则你在此前完成的评估工作实际上并没有保护生产环境。

技能使智能体的专门化变得经济,但一个看似合理的最终答案并不能证明智能体选择了正确的程序或遵循了它。Skill Selection Accuracy 和 Skill Instruction Following 分开了这些失败模式,并为每个调用的技能返回证据。在 Strands Evals 中,SkillInvoked 为已知路由需求添加了确定性护栏。在 AgentCore Evaluations 中,两个基于评判的指标可以针对特定会话按需运行,作为存储会话的批量运行,或在采样流量上持续运行。

当你有可以重新运行的测试用例和记录的轨迹时使用 Strands Evals。当你想要评估来自预发布或生产智能体的 OpenTelemetry 追踪时使用 AgentCore Evaluations。许多团队会同时使用两者:部署前的确定性和基于评判的关卡,然后是生产中的基于追踪的监控。

Strands Evals 快速入门。

Strands Evals 仓库。

Amazon Bedrock AgentCore Evaluations 开发者指南。

评估 AI 智能体博客文章。

感谢 Ritvika Pillai、Vincent Chen、Qiaoxuan Xue 和 Shoaib Javed 对 AgentCore Evaluations 的实现,感谢 Po-Shin Chen 对 Strands Evals 的审核,感谢 Anwesan Pal 关于技能评估的早期讨论,感谢 Ben Coombs 的产品指导,以及所有其他使这项工作成为可能的人。

Original source

本文由 AI 翻译整理自 AWS ML Blog,原文版权归原作者所有。

阅读英文原文
上一篇
Claude Opus 5.5 现已在 AWS Bedrock 可用
下一篇
llm-anthropic 0.29支持Claude Opus 5.5