oussamaelbourakadi/litmus
GitHub: oussamaelbourakadi/litmus
Litmus 是一个可自托管的 AI 系统评估平台,帮助团队在投产前后对 LLM、RAG、Agent 等模型进行统计严谨的评测、对比与回归门控。
Stars: 0 | Forks: 0
# Litmus
### 发布您可以信任的 AI。
开源、可自托管的平台,用于在投产前后**评估**、**红队测试**和**监控** AI
系统 — LLMs、RAG、agents 和视觉模型。
**无需 API key 即可运行。**
[](https://github.com/oussamaelbourakadi/litmus/actions/workflows/ci.yml)
[](https://github.com/oussamaelbourakadi/litmus/actions/workflows/litmus-eval.yml)
[](./LICENSE)


**实时演示:** _dashboard_ · _docs_ — 部署后添加您的 URL ([`docs/DEPLOY.md`](./docs/DEPLOY.md))
API
CLI --> API
GHA --> CLI
API --> ENG
ENG --> REG
REG --- PROV
REG --- EVAL
REG --- TGT
ENG --> DB
```
## Evaluate — 目前已发布的功能
- **Providers:** Mock(确定性,设置随机种子)、Ollama(本地,无需密钥)、OpenAI / Anthropic / Mistral(可选,受环境变量控制)。
- **Evaluators:** ExactMatch、RegexMatch、JsonSchema、LLMJudge(规则 → JSON 判定)+ judge 校准(一致性,Cohen's kappa)。
- **Engine:** 逐用例错误隔离,AND 判定,重复执行;指标 = **带 bootstrap CI 的成功率**、P50/P95 延迟、成本(价格表)、各 evaluator 的通过率。
- **Compare:** 聚合差异 + 逐用例回归 + 绝对/相对的 **threshold 判定**。
- **Dashboard:** projects → datasets(CSV 上传)→ runs → 指标卡片 + 逐用例表格 → 带有高亮回归的对比。
- **SDK + CLI + GitHub Action:** 本地、serverless 运行,**在出现回归时使 CI 失败**。
## 快速开始(5 分钟,无需 API key)
```
git clone https://github.com/oussamaelbourakadi/litmus.git
cd litmus
docker compose up --build
```
- API: http://localhost:8000 (Swagger `/docs`, 健康检查 `/health`)
- Dashboard: http://localhost:3000
## CLI / SDK / GitHub Action
**CLI**(serverless,回归时以非零状态退出):
```
uv pip install ./sdk
litmus init # scaffold litmus.yaml + a demo target
litmus run --config litmus.yaml # evaluate and gate on regressions
```
**SDK**(用约 10 行代码运行一次评估):
```
from litmus import Case, ExactMatch, run_local
cases = [Case(input="capital of France?", expected="Paris")]
result = run_local(cases, lambda prompt: "Paris", [ExactMatch()])
print(result.success_rate, result.ci_low, result.ci_high)
```
**GitHub Action** — 添加 [`litmus-eval.yml`](./.github/workflows/litmus-eval.yml)
workflow;它会安装 SDK,并在成功率降至您的基线以下时使构建失败。
## 扩展 Litmus(插件架构)
添加新功能始终遵循相同的结构 — 编写一个类,然后注册它:
```
from app.providers import ModelProvider, provider_registry
@provider_registry.register("my-provider")
class MyProvider(ModelProvider):
name = "my-provider"
async def generate(self, prompt, config):
...
```
同样的模式也适用于 evaluators(`evaluator_registry`)和 targets
(`target_registry`)。Engine 通过名称发现插件;核心代码永远不需要更改。
## 仓库结构
```
litmus/
├── backend/ FastAPI · SQLAlchemy 2 async · Alembic · engine · plugin registry
├── frontend/ Next.js (App Router) · TypeScript strict · Tailwind dashboard
├── sdk/ litmus-sdk — local runner + Typer CLI + CI gate
├── examples/ demo target, dataset, litmus.yaml, SDK quickstart
├── docs/ DEPLOY.md · PORTFOLIO_BLURB.md
├── docker-compose.yml
└── .github/workflows/ ci.yml · litmus-eval.yml
```
## 路线图
| 阶段 | 支柱 | 状态 |
|-------|--------|--------|
| 1 | **Evaluate** — engine、指标、对比、dashboard、SDK/CLI、CI gate | ✅ 已发布 |
| 2 | **Red-Team (LLM)** — OWASP LLM Top 10 攻击、防御、报告 | ⏳ 计划中 |
| 3 | **Adversarial Vision** — FGSM/PGD/patch、人脸识别展示 | ⏳ 计划中 |
| 4 | **Monitor** — traces、在线评估、漂移、告警、trace-to-test | ⏳ 计划中 |
| 5 | **Product** — 认证、多项目、文档、落地页 | ⏳ 计划中 |
## 部署
Backend 部署在 Render 上(Docker + 托管 Postgres),frontend 部署在 Vercel 上 — 详见
[`docs/DEPLOY.md`](./docs/DEPLOY.md)。无需 API key 即可运行。
## 作者
**Oussama El Bourakadi** — [github.com/oussamaelbourakadi](https://github.com/oussamaelbourakadi)
## 许可证
[MIT](./LICENSE)标签:AI安全, AI评估, API集成, Chat Copilot, DLL 劫持, Python, 人工智能, 可观测性, 大语言模型, 无后门, 测试用例, 用户模式Hook绕过, 请求拦截