responsibleai/ASSERT
GitHub: responsibleai/ASSERT
一个需求驱动的 AI 评测框架,将自然语言规范转化为可执行的测试用例,对任意模型端点和 Agent 系统进行基于 trace 的回归测试。
Stars: 139 | Forks: 17
ASSERT.
Adaptive Spec-driven Scoring for Evaluation and Regression Testing
Local-first. Framework-agnostic. Trace-aware.
🚀 Get started |
🌐 Visit project website |
🔌 View supported targets |
📘 CLI Reference |
🧪 Examples
## 为什么选择 ASSERT?
大多数 AI 系统都是从规范开始的:产品需求、策略、系统提示词或描述系统应该做什么和不应该做什么的发布标准。
但评估往往是从别处开始的:通用的评分器、预定义的基准测试,或者是偏离了最初意图的手动测试用例。
ASSERT 弥补了这一差距。它将你在自然语言中指定的行为转化为结构化、可执行的评估,这些评估可以被审查、运行、评分并随着时间推移不断改进。
基于自然语言规范,ASSERT pipeline 会推导出行为类别,生成单轮和多轮测试用例,针对你的目标进行推理,并使用 LLM judge 根据你的策略对每次对话进行评分。
## 使用 ASSERT 你能得到什么
- **基于 Spec 的覆盖率** - 测试用例是根据你的产品需求和上下文生成的,而不是通用的基准测试。你可以指定想要测试的行为。
- **测试任何模型 endpoint** - 通过与 [LiteLLM](https://github.com/BerriAI/litellm) 的集成,支持来自 Bedrock、Azure、OpenAI、VertexAI、Cohere、Anthropic、Sagemaker、HuggingFace、VLLM、NVIDIA NIM 等平台提供商的 100 多个模型 endpoint。
- **测试任何 agent 或多 agent 系统** - 通过与 [OpenInference](https://github.com/Arize-ai/openinference/) 的集成实现。评估 LangGraph agent、CrewAI / OpenAI Agents SDK / DSPy / LlamaIndex / AutoGen 系统、自定义多 agent 编排、Python 可调用对象或托管模型——所有这些都无需重写评估编排 pipeline。
- **基于 Agent trace 的评判** - 推荐的集成方式会捕获 OpenTelemetry spans(OpenInference 仅需两行代码即可自动埋点 33+ 个框架 —— `from assert_ai import auto_trace; auto_trace.enable()` —— 或者你也可以使用 OTel SDK 自行发送),从而让 judge 能够将工具调用、路由、模型调用和延迟作为证据进行引用——而不仅仅是最终响应。
- **可移植的 artifacts** - 每个阶段都会在本地写入 JSON/JSONL 文件,以便进行检查、CI 和共享。
- **内置本地查看器** - 并排浏览运行结果,固定 baseline,深入了解每个行为维度的细分情况,并阅读基于捕获的 trace 引用的 judge 判定依据。
## 开始使用
### 快速安装
```
pip install -e ".[otel,langgraph]" # install
cp .env.example .env # add your provider key
assert-ai run --config examples/travel_planner_langgraph/eval_config.yaml
```
## 商标
本项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 的商标或徽标受 [Microsoft 商标与品牌指南](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks) 约束并必须遵循该指南。在本项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受该第三方政策约束。
## 遥测
默认情况下,本项目不会收集遥测数据或将其发送给 Microsoft。运行结果会将本地 artifacts 写入 `artifacts/results/` 目录下,而可选的 OpenTelemetry trace 捕获由你的配置和本地 collector 设置(例如 Phoenix)控制。
如果你配置了 target、judge、trace collector 或模型提供商以将数据发送到外部服务,则发送给该服务的 prompt、响应、trace、元数据以及其他评估 artifacts 均受该服务的条款和你的配置所管辖。
## 免责声明:ASSERT 的风险与局限性
请参阅 [`概念文档`](https://github.com/responsibleai/ASSERT/blob/main/docs/concepts.md#risks-and-limitations) 中的完整章节。
标签:AI, DLL 劫持, LLM, Python, SOC Prime, Unmanaged PE, 大语言模型, 开发工具, 无后门, 测试评估, 用户代理, 自动化代码审查, 逆向工具