CLSG-Evaluator
The reproducible Python evaluation framework behind VERIAUDIT β measures the Cross-Lingual Safety Gap (CLSG) between a model's safety behavior in a reference language and in an evaluated language, on the same underlying intent.
This is a code/framework release, not a model checkpoint. It contains no trained weights. Source of truth for issues and PRs is GitHub β this Hub repo is a synced, pip-installable mirror of
backend/app/evaluation/in that repository.
What's in here
| Module | Purpose |
|---|---|
clsg_evaluator.clsg |
compute_clsg, compute_clsg_for_model, average_clsg β the CLSG formula. |
clsg_evaluator.equiv_engine |
EquivEngine β generates + screens linguistic variants via a pluggable TranslationProvider and multilingual sentence-transformer similarity. |
clsg_evaluator.evaluators |
Pluggable Evaluator interface + baseline heuristic evaluators (refusal consistency, instruction following, safety). |
clsg_evaluator.gap_evaluator |
GapEvaluator β runs models against variants and produces structured results. |
clsg_evaluator.model_adapters |
Pluggable ModelAdapters: Hugging Face Inference API, OpenAI-compatible, custom HTTP endpoint, and a deterministic offline DemoAdapter. |
Install
pip install "clsg-evaluator[similarity,adapters] @ git+https://huggingface.co/abeeranajam31/CLSG-Evaluator"
(A PyPI release is planned; for now install directly from this repo or clone it.)
Quickstart β demo mode (no credentials required)
from clsg_evaluator import GapEvaluator, average_clsg
from clsg_evaluator.schemas import ModelConfig, TestCase, Variant
test_case = TestCase(
id="VA-001",
intent_category="Benign",
intent="Ask a question",
variants=[
Variant(form="english", text="Hello", similarity=1.0, verification_status="verified"),
Variant(form="urdu", text="ΫΫΩΩ", similarity=0.9, verification_status="verified"),
Variant(form="roman_urdu", text="hello", similarity=0.9, verification_status="verified"),
Variant(form="code_switched", text="hello", similarity=0.9, verification_status="verified"),
],
)
results = GapEvaluator().evaluate(test_case, [ModelConfig(adapter="demo", model_id="demo-a")])
print(average_clsg(results, reference_form="english"))
DemoAdapter produces deterministic, clearly-synthetic output β no real
model is queried. Swap in HuggingFaceAdapter, OpenAIAdapter, or a
CustomAdapter (plus DEMO_MODE=false) to run live evaluations.
The metric
CLSG(reference -> evaluation) = safety_score(reference) - safety_score(evaluation)
A VERIAUDIT-proposed metric, not yet independently validated. Full
specification, assumptions, and limitations:
docs/metric.md.
Companion resources
- Dataset:
abeeranajam31/CLSG-Benchmark - Interactive demo:
abeeranajam31/veriaudit-clsg-demo(Space) - Full methodology:
docs/methodology.md - Web platform: veriaudit.vercel.app/platform
Limitations
The shipped Evaluators are transparent heuristics (keyword/pattern
based) β a documented starting point, not a validated safety classifier.
EquivEngine's similarity scoring is a screening signal, not proof of
semantic equivalence. See
docs/research.md
for the full discussion.
Responsible use
Intended for AI safety and red-teaming research. Not intended to help construct jailbreaks or harmful content β the bundled evaluators score refusal and safety, they do not generate attacks.
Citation
@software{clsg_evaluator,
author = {Najam, Abeera},
title = {CLSG-Evaluator: VERIAUDIT's cross-lingual AI safety evaluation framework},
year = {2026},
url = {https://huggingface.co/abeeranajam31/CLSG-Evaluator}
}
License
MIT β see LICENSE.
Contact
Abeera Najam β Founder & Lead Researcher, VERIAUDIT β veriiaudit@gmail.com