Strands Evals SDK
评测、诊断并改进 AI Agent 与大模型应用。
- Star 数
- ★ 251
- 最近更新
- 今天
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 64/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 兼容但需适配Codex · Claude Code(部分支持)
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 负责 Agent 发布质量的工程团队,在 CI 中先用 strands-evals validate 检查实验 JSON,再运行回归评测并通过 --fail-on 规则控制退出状态。
- 不适合
- 使用非Strands运行时的团队,需自行编写适配代码
- 希望开箱即用、无需配置模型凭证与追踪的团队
这个 Agent 能做什么,适合哪些场景?
Strands Evals SDK 是一个面向 AI Agent 和大模型应用的 Python 评测框架,可检查最终输出、工具调用轨迹、多智能体交互、技能使用、图文回答和完整会话。其核心对象包括 Case、Experiment、EvaluationReport 以及输出级、轨迹级、工具级、会话级和多模态 Evaluator,并允许实现自定义 Evaluator。评测任务以 Python callable 或 Agent 工厂运行,既能直接处理返回值,也能通过 OpenTelemetry trace 映射成 Session 后分析。框架还提供对话与工具模拟、实验用例生成、故障检测、根因分析、确定性混沌注入和实验 JSON 序列化。用户既可通过 Python API 集成,也可使用 strands-evals 命令行执行、校验、展示、诊断或生成实验;它是评测 SDK 和 CLI,而不是独立托管的 Agent 服务。
用户先用 Case 定义输入、期望输出、期望轨迹和元数据,再把案例及 OutputEvaluator、TrajectoryEvaluator、HelpfulnessEvaluator、GoalSuccessRateEvaluator 等评测器交给 Experiment。Experiment.run_evaluations() 调用用户提供的任务函数,并生成可显示或序列化的 EvaluationReport。轨迹评测可以读取原始消息列表,也能借助 StrandsEvalsTelemetry 捕获 OpenTelemetry spans,再由 StrandsInMemorySessionMapper 转换为 Session。ActorSimulator 可驱动目标导向的多轮对话;ToolSimulator 用大模型生成符合 Pydantic schema 的模拟工具响应,并可在相关工具间共享状态。ExperimentGenerator 根据上下文生成测试用例;detect_failures、analyze_root_cause 和 diagnose_session 检测会话故障并给出修复建议。ChaosPlugin 通过 Strands 插件钩子注入超时、网络错误、执行错误、校验错误或响应字段损坏;实验也可以保存为 JSON 并由 CLI 校验、运行和展示。
- 负责 Agent 发布质量的工程团队,在 CI 中先用 strands-evals validate 检查实验 JSON,再运行回归评测并通过 --fail-on 规则控制退出状态。
- 开发工具调用型助手的工程师,用 TrajectoryEvaluator、ToolSelectionAccuracyEvaluator 和 ToolParameterAccuracyEvaluator 检查工具选择、调用顺序及参数。
- 构建客服或任务型对话系统的团队,用 ActorSimulator 生成动态多轮用户交互,再用 HelpfulnessEvaluator 和 GoalSuccessRateEvaluator 判断会话效果。
- 没有可用测试 API、数据库或设备环境的开发者,用 ToolSimulator 生成 schema 校验且可共享状态的模拟工具响应。
- 可靠性工程师用 ChaosPlugin 注入工具超时、网络故障或响应损坏,并评估 Agent 的故障沟通、部分完成和恢复策略。
- 安全与质量团队使用多模态评测、技能选择评测、失败诊断或内置红队攻击策略检查特定风险。
如何安装或部署这个 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]"Windows 的虚拟环境激活命令是 .venv\Scripts\activate。文档示例会导入 strands.Agent,但来源没有说明模型服务凭据、环境变量或默认模型配置;采用前需按所选模型和 Strands 运行环境补齐这些配置。
如何使用这个 Agent?
最小 Python 流程是创建 Case、配置 OutputEvaluator、运行 Experiment,并展示报告:
from strands import Agent
from strands_evals import Case, Experiment
from strands_evals.evaluators import OutputEvaluator
test_cases = [
Case[str, str](
name="knowledge-1",
input="What is the capital of France?",
expected_output="The capital of France is Paris.",
metadata={"category": "knowledge"}
)
]
evaluators = [
OutputEvaluator(
rubric="""
Evaluate based on:
1. Accuracy - Is the information correct?
2. Completeness - Does it fully answer the question?
3. Clarity - Is it easy to understand?
Score 1.0 if all criteria are met excellently.
Score 0.5 if some criteria are partially met.
Score 0.0 if the response is inadequate.
"""
)
]
experiment = Experiment[str, str](cases=test_cases, evaluators=evaluators)
def get_response(case: Case) -> str:
agent = Agent(callback_handler=None)
return str(agent(case.input))
report = experiment.run_evaluations(get_response)
report.run_display()CLI 可校验并运行已序列化的实验,其中 --agent 接受 MODULE:CALLABLE 形式的 Agent 工厂:
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诊断 Session JSON 或根据上下文生成实验:
strands-evals diagnose session.json --confidence mediumstrands-evals generate --context "$(cat tools.txt)" --num-cases 10 \
--evaluator TrajectoryEvaluator -o experiments/generated.json这个 Agent 有哪些优点和局限?
- 评测层次覆盖广:同一框架包含输出、轨迹、工具调用、会话、多智能体交互、技能和图文回答评测。
- 不仅生成分数,还能通过 detect_failures、analyze_root_cause 和 diagnose_session 提供故障定位及修复建议。
- ActorSimulator 和 ToolSimulator 支持动态多轮对话、schema 校验的工具响应及跨工具共享状态,可减少对真实基础设施的依赖。
- ChaosPlugin 提供确定性的故障注入,并配有故障沟通、部分完成和恢复策略等专用评测器。
- Python API、五个 CLI 子命令、JSON 序列化和自定义 Evaluator 为本地开发与 CI 接入提供了多种入口。
- 要求 Python 3.10+;文档中的完整 Agent、插件和 trace 示例围绕 Strands Agents 组件编写,其他运行时需要编写适配代码。
- 大量高级评测与模拟采用 LLM-as-a-Judge 或大模型生成响应,会引入模型访问、延迟、费用和非确定性;来源未给出费用控制方案。
- 来源没有说明首次运行所需的具体凭据、环境变量或默认模型提供商配置,团队必须自行完成提供商配置。
- trace 级评测要求采集 OpenTelemetry spans 并映射为 Session,接入成本高于只比较输入输出。
- 技能评测只识别列出的 harness 信号;无法识别的 harness 会返回空结果而非错误,因此必须先验证 parse_available_skills()。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Strands Evals SDK 当前 | 64 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 251 | 今天 | Python | — |
| Tracely | 66 · 存在缺口 | — | ★ 1k | 12 天前 | Python | Claude Code · OpenAI API · Claude API |
| LangWatch | 78 · 表现良好 | 命令行工具免费版 + 付费版 | ★ 5k | 今天 | TypeScript | OpenAI API · Claude API |
| TanStack AI | 76 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 3.3k | 1 天前 | TypeScript | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
工作流以细粒度 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/第三方动作到不可变提交。
- 先修正或验证遥测属性命名不一致和截断的多模态示例,再据此构建集成。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
v1.9.0 _Auto-drafted from commits in v1.8.0..v1.9.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website._ 🚀 Features - feat(skills): suggest evaluators and write experiment file in session-converter (#496) (8fcc8e0) - feat(skills): add extraction steps to session-converter skill (#491) (b44ce38) - feat(cli): add --case selector to run command (#492) (32e72bb) 🔧 Chores - chore(ci): relax CI gate on workstream/optimizer-workflow branch (#499) (69d85c5)在 GitHub 查看 ↗ -
发布说明摘录
v1.8.0 _Auto-drafted from commits in v1.7.0..v1.8.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website._ 🚀 Features - feat(redteam): add CrescendoStrategy(stop_on_tool_call=) (#472) (8275e0f) ⚡ Performance - perf(experiment): run a case's evaluators concurrently (#467) (f6b894f) 📚 Documentation - docs: update README nav and examples (#470) (6511807) 📦 Build - build: drop unused strands-agents-tools dependency (#471) (2ce9b78) 👷 CI …在 GitHub 查看 ↗ -
发布说明摘录
v1.7.0 _Auto-drafted from commits in v1.6.0..v1.7.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website._ 🚀 Features - feat(redteam)!: graduate red teaming out of experimental (#465) (064a5e5) 🐛 Fixes - fix: judge EventLoopException by its original cause (#464) (b59a389) - fix: replace retired Sonnet 4 model ID in integ tests (#441) (7e7a23e)在 GitHub 查看 ↗
常见问题
必须使用 Strands Agent 才能运行评测吗?
--agent 工厂或 --task callable 运行,Python Experiment 也接受用户提供的任务函数,因此输出评测并不限于固定 Agent 类。不过文档中的 Agent、trace 和混沌插件示例均使用 Strands 组件,其他框架需要自行适配输入、输出或 Session。是否所有评测都需要调用大模型?
如何避免用真实外部服务进行测试?
能否在 CI 中阻止不合格版本发布?
strands-evals validate 做 schema 检查,再通过 strands-evals run 执行实验。来源还明确提到 --fail-on 退出码规则,但应通过相应子命令的 --help 查看完整参数。