Strands Evals SDK
面向 AI 智能体与 LLM 应用的实验、评测、仿真和故障诊断框架。
按维度查看评分与理由
工作流以细粒度 GitHub 权限、协作者检查、人工审批环境、OIDC、账户 ID 掩码及不持久化检出凭据体现了较好的最小权限意识;但这主要覆盖 CI,而非 SDK 运行时。材料未显示高影响操作前的用户确认机制。README 提到模型评审、遥测轨迹、HTTP 图像及文件输出,但没有完整说明数据会发送到哪些模型或服务、保存多久或如何删除。敏感数据方面仅能看到 CI 密钥通过 secrets/OIDC 传递,缺少评估输入、轨迹和图像的隐私处理指导。依赖有版本范围,但无锁文件、漏洞扫描、哈希固定或供应链策略,且部分 Actions/自定义动作只固定到主版本或 main。外部效果和文件写入有所展示,模拟工具也明确不执行真实函数,但网络模型调用及真实 agent/tool 副作用未被系统列举。实验支持保存和版本化,但没有操作回滚或恢复流程。仓库、生态链接、AWS 作者元数据和 Apache 许可证提供了来源线索,不过发布者身份未获注册表验证,也没有更具体的维护者归属证明。
README、CLI 表格和项目配置整体描述了同一评估框架,但示例中出现 telemetry.memory_exporter 与 telemetry.in_memory_exporter 不一致,末尾多模态示例还截断为 case.input.medi,因此自洽性只能给薄弱分。Python 3.10–3.14、核心依赖、可选集成和测试矩阵均有明确声明,足以支持一般依赖可用性;扣分在于没有锁定的解析结果或安装故障说明。validate、--help、--fail-on、诊断流水线及工作流中的显式错误消息表明失败反馈受到重视,但未提供 CLI/实现源码来确认错误覆盖是否全面。
材料覆盖输出、轨迹、工具、技能、多模态、多轮、故障诊断、混沌和红队等大量明确受众场景,因此场景适配充分。能力边界部分清楚,例如模拟工具不调用函数体、技能信号不匹配时返回空结果、红队功能标为 experimental;但模型依赖、支持的数据规模和集成边界没有完整汇总。触发条件对诊断的 ON_FAILURE/ALWAYS、置信阈值、混沌插件钩子及 CLI 子命令说明较明确,但自动生成、模型评审等行为的精确触发和默认值仍需源码。环境方面给出 Python 版本、虚拟环境、开发/测试安装和多种可选后端,普通使用足够;不过云凭据、模型可用区、平台差异和资源要求未完整说明。
README 具有清晰的功能概览、快速开始、CLI、安装和分功能示例,信息架构与安装说明都很强。命名大体稳定,但遥测属性示例不一致以及截断的多模态代码降低稳定性。示例非常丰富,却没有真正的 FAQ,部分示例依赖未提供的对象或省略实现。已明确提示技能解析为空的限制、experimental 红队范围和许可证免责声明,但缺少集中式限制清单。Apache-2.0 元数据与完整 LICENSE 一致,许可证处理充分。版本来自 VCS 标签,并展示 PyPI 版本和实验版本化,但材料中没有 CHANGELOG、发布兼容政策或迁移说明。AWS 作者邮箱、Issues、PR 和 Discord 给出了维护入口,但未列出具体维护者、支持承诺或安全报告路径。
框架输出包括结构化 EvaluationOutput、可显示/JSON 化报告、标签、理由、轨迹及可执行修复建议,产物对 CI 和人工分析都较实用。它将多类评估、模拟、诊断、混沌测试和实验生成整合在一起,相比手工拼装具有明显增量价值。无真实基础设施的工具模拟、内存轨迹和 CLI 流程降低了采用成本;但 README 未量化 LLM 调用费用、延迟、令牌消耗或大规模运行成本,因此成本收益不能给满分。
多数功能主张都对应具体 API 名称、代码片段、CLI 命令或 pyproject 配置,具有一定可追踪性;但所给材料缺少实现源码和实质性测试文件,无法逐项追到算法或断言。安装、Python 支持、CLI 入口、许可证及测试工具在 README、pyproject 和工作流之间得到部分交叉印证;高级评估能力主要只有 README 单一来源。文档能区分模拟与真实执行,并披露技能解析的空结果边界及 experimental 功能,但“强大”“全面”“真实”等表述缺乏度量或证据,事实与营销性推断尚未完全分离。
- 在处理含个人信息、机密提示、生产轨迹或远程图像的评估前,应先确认所选模型提供商、遥测导出器和可选集成的数据传输、留存与删除规则。
- 不要把 LLM-as-a-judge、自动生成的用例或根因建议当作确定事实;应使用人工复核、固定基准和独立评估器交叉验证。
- 生产或含凭据环境中运行真实 agent、工具及集成测试前,应单独审查其外部副作用和 IAM 权限;README 中的无副作用保证仅适用于 ToolSimulator 示例。
- 部署时应生成并审查锁定依赖,启用漏洞与供应链扫描,并固定 CI Actions/第三方动作到不可变提交。
- 先修正或验证遥测属性命名不一致和截断的多模态示例,再据此构建集成。
这个 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 文件。
- 智能体开发团队在发布前批量检查回答准确性、完整性和指令遵循情况,并用自定义 rubric 统一评分标准。
- 开发工具调用型智能体的工程师,需要核对工具选择、参数和调用顺序是否符合预期轨迹。
- 客服或工作流团队希望用 ActorSimulator 生成无固定脚本的多轮用户互动,并评估目标是否最终完成。
- 缺少测试 API、数据库或设备的团队,可用 ToolSimulator 生成符合 Pydantic 模式且具有共享状态的模拟工具响应。
- 可靠性工程师需要注入工具超时、网络错误和响应损坏,评估智能体的错误说明、部分完成和恢复策略。
- 安全与质量团队需要开展对抗性红队评测、会话失败检测和根因分析,并获取可执行的修复建议。
这个 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/activatepip 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 OutputEvaluatorcases = [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。