开发与工程 agent-evaluationtrajectory-analysisllm-as-a-judgemultimodal-evaluationconversation-simulationchaos-testingred-team-testingopentelemetry

Strands Evals SDK

面向 AI 智能体与 LLM 应用的实验、评测、仿真和故障诊断框架。

FollowAgents 评估 · FARS-2.1
谨慎使用
64/ 100 五分制 3.2 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全11 / 29 · 1.9/5

工作流以细粒度 GitHub 权限、协作者检查、人工审批环境、OIDC、账户 ID 掩码及不持久化检出凭据体现了较好的最小权限意识;但这主要覆盖 CI,而非 SDK 运行时。材料未显示高影响操作前的用户确认机制。README 提到模型评审、遥测轨迹、HTTP 图像及文件输出,但没有完整说明数据会发送到哪些模型或服务、保存多久或如何删除。敏感数据方面仅能看到 CI 密钥通过 secrets/OIDC 传递,缺少评估输入、轨迹和图像的隐私处理指导。依赖有版本范围,但无锁文件、漏洞扫描、哈希固定或供应链策略,且部分 Actions/自定义动作只固定到主版本或 main。外部效果和文件写入有所展示,模拟工具也明确不执行真实函数,但网络模型调用及真实 agent/tool 副作用未被系统列举。实验支持保存和版本化,但没有操作回滚或恢复流程。仓库、生态链接、AWS 作者元数据和 Apache 许可证提供了来源线索,不过发布者身份未获注册表验证,也没有更具体的维护者归属证明。

2可靠稳定8 / 14 · 2.9/5

README、CLI 表格和项目配置整体描述了同一评估框架,但示例中出现 telemetry.memory_exporter 与 telemetry.in_memory_exporter 不一致,末尾多模态示例还截断为 case.input.medi,因此自洽性只能给薄弱分。Python 3.10–3.14、核心依赖、可选集成和测试矩阵均有明确声明,足以支持一般依赖可用性;扣分在于没有锁定的解析结果或安装故障说明。validate、--help、--fail-on、诊断流水线及工作流中的显式错误消息表明失败反馈受到重视,但未提供 CLI/实现源码来确认错误覆盖是否全面。

3适用触发14 / 18 · 3.9/5

材料覆盖输出、轨迹、工具、技能、多模态、多轮、故障诊断、混沌和红队等大量明确受众场景,因此场景适配充分。能力边界部分清楚,例如模拟工具不调用函数体、技能信号不匹配时返回空结果、红队功能标为 experimental;但模型依赖、支持的数据规模和集成边界没有完整汇总。触发条件对诊断的 ON_FAILURE/ALWAYS、置信阈值、混沌插件钩子及 CLI 子命令说明较明确,但自动生成、模型评审等行为的精确触发和默认值仍需源码。环境方面给出 Python 版本、虚拟环境、开发/测试安装和多种可选后端,普通使用足够;不过云凭据、模型可用区、平台差异和资源要求未完整说明。

4规范维护14 / 18 · 3.9/5

README 具有清晰的功能概览、快速开始、CLI、安装和分功能示例,信息架构与安装说明都很强。命名大体稳定,但遥测属性示例不一致以及截断的多模态代码降低稳定性。示例非常丰富,却没有真正的 FAQ,部分示例依赖未提供的对象或省略实现。已明确提示技能解析为空的限制、experimental 红队范围和许可证免责声明,但缺少集中式限制清单。Apache-2.0 元数据与完整 LICENSE 一致,许可证处理充分。版本来自 VCS 标签,并展示 PyPI 版本和实验版本化,但材料中没有 CHANGELOG、发布兼容政策或迁移说明。AWS 作者邮箱、Issues、PR 和 Discord 给出了维护入口,但未列出具体维护者、支持承诺或安全报告路径。

5有效结果12 / 13 · 4.6/5

框架输出包括结构化 EvaluationOutput、可显示/JSON 化报告、标签、理由、轨迹及可执行修复建议,产物对 CI 和人工分析都较实用。它将多类评估、模拟、诊断、混沌测试和实验生成整合在一起,相比手工拼装具有明显增量价值。无真实基础设施的工具模拟、内存轨迹和 CLI 流程降低了采用成本;但 README 未量化 LLM 调用费用、延迟、令牌消耗或大规模运行成本,因此成本收益不能给满分。

6证据核验5 / 8 · 3.1/5

多数功能主张都对应具体 API 名称、代码片段、CLI 命令或 pyproject 配置,具有一定可追踪性;但所给材料缺少实现源码和实质性测试文件,无法逐项追到算法或断言。安装、Python 支持、CLI 入口、许可证及测试工具在 README、pyproject 和工作流之间得到部分交叉印证;高级评估能力主要只有 README 单一来源。文档能区分模拟与真实执行,并披露技能解析的空结果边界及 experimental 功能,但“强大”“全面”“真实”等表述缺乏度量或证据,事实与营销性推断尚未完全分离。

证据充分度: 评估于 2026年9月17日 审查版本 92854bfb79fa
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
源码中未见的安全控制:执行前用户确认
使用前请注意
  • 在处理含个人信息、机密提示、生产轨迹或远程图像的评估前,应先确认所选模型提供商、遥测导出器和可选集成的数据传输、留存与删除规则。
  • 不要把 LLM-as-a-judge、自动生成的用例或根因建议当作确定事实;应使用人工复核、固定基准和独立评估器交叉验证。
  • 生产或含凭据环境中运行真实 agent、工具及集成测试前,应单独审查其外部副作用和 IAM 权限;README 中的无副作用保证仅适用于 ToolSimulator 示例。
  • 部署时应生成并审查锁定依赖,启用漏洞与供应链扫描,并固定 CI Actions/第三方动作到不可变提交。
  • 先修正或验证遥测属性命名不一致和截断的多模态示例,再据此构建集成。
评估证据 [1][2][3][4][5][6]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Strands Evals SDK 是一个 Python 评测框架,用于检验智能体及 LLM 应用的输出、工具轨迹、多智能体交互和完整会话。它以 Case、Experiment 和 Evaluator 为核心,通过 Python API 或 strands-evals CLI 执行测试,并生成可显示或序列化为 JSON 的 EvaluationReport。框架包含 LLM-as-a-Judge、OpenTelemetry 轨迹映射、多轮用户与工具仿真、实验生成、故障检测、根因分析、混沌测试及红队评测能力。它既支持内置评测器,也允许继承 Evaluator 编写领域专用规则。该项目作为 Python 库和命令行工具运行,不是托管式评测服务;采用方需要提供被测任务或智能体工厂,并配置评审模型及相关运行环境。

用户先把输入、期望输出、元数据或期望轨迹封装为 Case,再将多个 Case 与 OutputEvaluator、TrajectoryEvaluator、HelpfulnessEvaluator 等评测器组成 Experiment。Experiment.run_evaluations() 调用用户提供的任务函数或智能体,收集实际输出和可选轨迹,随后让确定性评分器或语言模型评审器生成分数、通过状态、原因和标签,最终汇总为 EvaluationReport。对于轨迹评测,框架可用 tools_use_extractor 读取工具调用,也能通过 StrandsEvalsTelemetry 捕获 OpenTelemetry spans,再由 StrandsInMemorySessionMapper 转换为 Session。ActorSimulator 可驱动多轮对话,ToolSimulator 可用共享状态和 Pydantic 输出模式模拟工具;ExperimentGenerator 能从上下文生成测试实验。detect_failures、analyze_root_cause 和 diagnose_session 可检查会话并给出修复建议;ChaosPlugin 可注入超时、网络错误、执行错误、字段截断或值损坏。命令行提供 run、validate、report、diagnose 和 generate 五个子命令,并可读写 Experiment、EvaluationReport 和 Session JSON 文件。

  1. 智能体开发团队在发布前批量检查回答准确性、完整性和指令遵循情况,并用自定义 rubric 统一评分标准。
  2. 开发工具调用型智能体的工程师,需要核对工具选择、参数和调用顺序是否符合预期轨迹。
  3. 客服或工作流团队希望用 ActorSimulator 生成无固定脚本的多轮用户互动,并评估目标是否最终完成。
  4. 缺少测试 API、数据库或设备的团队,可用 ToolSimulator 生成符合 Pydantic 模式且具有共享状态的模拟工具响应。
  5. 可靠性工程师需要注入工具超时、网络错误和响应损坏,评估智能体的错误说明、部分完成和恢复策略。
  6. 安全与质量团队需要开展对抗性红队评测、会话失败检测和根因分析,并获取可执行的修复建议。

这个 Agent 有哪些优点和局限?

优点
  • 覆盖输出、工具轨迹、交互、完整会话和图文输出,能够在同一实验框架中组合多个评测维度。
  • 同时提供 Python API 与五个 CLI 子命令,支持 JSON 校验、执行、报告渲染、诊断和测试集生成,便于接入 CI 或一次性分析。
  • ActorSimulator 与 ToolSimulator 分别覆盖动态多轮用户和带模式校验、共享状态的工具仿真,可在缺少真实后端时测试复杂流程。
  • 内置故障检测、根因分析、确定性混沌注入和专用恢复评测器,不只报告分数,还能检查失败原因与韧性。
  • Evaluator 基类、自定义 rubric、轨迹提取器和可序列化 Experiment 为领域扩展与可复现实验提供了明确接口。
局限
  • 需要 Python 3.10+,示例被测智能体依赖 Strands Agents;现有其他智能体框架通常要编写任务函数、轨迹映射或数据转换代码。
  • 许多高级能力采用 LLM-as-a-Judge,包括动态仿真与实验生成,因此会引入模型访问、延迟、费用和非确定性。
  • OpenTelemetry 会话评测需要配置遥测、收集 spans 并映射为 Session,集成成本高于仅比较文本输出。
  • Codex、Claude Code 等仅明确用于识别技能调用信号;来源未证明它们可原生运行整个评测框架。
  • 来源没有给出统一的模型提供商凭证设置、支持矩阵或生产部署方案,采用方需要自行确认所选模型与基础设施。

如何安装或部署这个 Agent?

需要 Python 3.10 或更高版本。直接安装发布包:

pip install strands-agents-evals

本地开发安装:

python -m venv .venv
source .venv/bin/activate

pip install -e .

测试依赖可用 pip install -e ".[test]",测试与开发依赖可用 pip install -e ".[test,dev]"。安装后会提供 strands-evals 命令。评测示例还会导入 strands.Agent;涉及 LLM 评审、仿真或实验生成时,需要为所选模型准备可访问的模型服务和相应配置,但来源没有给出统一的凭证变量名称。

如何使用这个 Agent?

最小 Python 流程是创建 Case、Evaluator 和 Experiment,然后把返回智能体输出的函数传给 run_evaluations:

from strands import Agent
from strands_evals import Case, Experiment
from strands_evals.evaluators import OutputEvaluator
cases = [Case(name="knowledge-1", input="What is the capital of France?", expected_output="Paris")]
evaluators = [OutputEvaluator(rubric="Score 1.0 for an accurate answer and 0.0 otherwise.")]
experiment = Experiment(cases=cases, evaluators=evaluators)

def task(case):

return str(Agent(callback_handler=None)(case.input))
report = experiment.run_evaluations(task)
report.run_display()

命令行可先校验再运行已序列化实验:

strands-evals validate experiments/customer_service.json
strands-evals run experiments/customer_service.json --agent my_pkg.agents:build_agent --display

也可执行单例评测:

strands-evals run --input "What is the capital of France?" --expected-output "Paris" --agent my_pkg.agents:build_agent

诊断会话使用 strands-evals diagnose session.json --confidence medium;生成实验可用 strands-evals generate --context "工具与任务说明" --num-cases 10 --evaluator TrajectoryEvaluator -o experiments/generated.json。

常见问题

可以只做确定性测试而不调用评审模型吗?
可以在部分场景中使用自定义 Evaluator、SkillInvoked 以及 exact_match_scorer、in_order_match_scorer、any_order_match_scorer 等确定性逻辑。但 OutputEvaluator、多个轨迹或会话评测器、仿真器和实验生成器的示例依赖语言模型。
它会替我托管或部署被测智能体吗?
不会。它是 Python SDK 和 CLI。用户需要提供 --agent 工厂、--task callable,或在 Python 中传入执行 Case 的函数。
是否必须使用 OpenTelemetry?
不是。输出评测和部分列表式轨迹评测不要求 OpenTelemetry;工具级、会话级及其他基于 Session 的评测需要可映射的执行轨迹。
能否在没有真实 API 或数据库的情况下测试工具调用?
可以。ToolSimulator 能注册模拟工具,以 LLM 生成响应,并用 Pydantic 模式校验输出;相关工具还能通过 share_state_id 共享状态。
如何处理评测中的随机性和失败?
项目建议重复评测建立统计基线并组合多个评测器。对于运行失败,可使用 detect_failures、analyze_root_cause 或 diagnose_session;对于韧性测试,可通过 ChaosPlugin 注入确定性故障。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents