Download README.md from Devseis/Caveat: direct link, hf CLI and curl.
- Browser
- Download file 7.9 kB
-
https://huggingface.co/spaces/Devseis/Caveat/resolve/main/README.md
- Command line
-
hf download hf://spaces/Devseis/Caveat/README.md
-
curl -L -o README.md https://huggingface.co/spaces/Devseis/Caveat/resolve/main/README.md
title: Caveat — AI Act risk check experiment
emoji: ⚖️
colorFrom: red
colorTo: indigo
sdk: static
pinned: false
license: cc-by-4.0
models:
- Devseis/devseis-ai-act-classifier-v6
- Devseis/eu-ai-act-classifier-experiment
datasets:
- Devseis/devseis-ai-act-classifier-v6-data
- Devseis/eu-ai-act-risk-classification
short_description: EU AI Act risk check, plus a beginner course on how it works
thumbnail: https://huggingface.co/spaces/Devseis/Caveat/resolve/main/og-image.png
Caveat — two experimental AI Act classifiers, compared live
Caveat is a live demo of the experiment that started at
Devseis/eu-ai-act-classifier-experiment
(versions 1–3). The current model is Devseis AI Act Classifier v6:
Devseis/devseis-ai-act-classifier-v6
(weights, card, evaluation) with data at
Devseis/devseis-ai-act-classifier-v6-data.
The page loads a runtime copy from models/devseis-ai-act-classifier-v6/.
It is not a compliance tool — it exists to show, on real live output, why
neither approach should be trusted on its own. This file briefs a new
session (human or AI) on what exists and how it works.
Full build history, challenges and fixes, rules and open items: HANDBOOK.md.
What it is
A single static page with four tabs (the URL hash selects one: #results, #story, #learn-<n>):
- Check: type or pick one of 8 example use cases. Both models run live, side by side, and the page says whether they agree. Each card shows the model's name, size and where it runs.
- Results: the v6 numbers (headline tiles, recall per tier, a comparison with earlier versions including confidence intervals), the known weak spots, and what runs when you press Check.
- The story: a 12-chapter timeline from v1 to v6. Each chapter gives what was done, what happened, the key number and the lesson, including the mistakes.
- Learn: a 14-lesson plain-language course for non-technical readers, with analogies, real
examples from this project, interactive widgets, a quiz per lesson, a build-it-yourself checklist
and a searchable 46-term glossary. Underlined terms anywhere on the page open a definition.
Progress, the theme and the checklist are kept in the visitor's
localStorage.
Privacy (keep it this way): Microsoft Clarity loads only after the visitor clicks "Accept analytics" in the
consent banner (choice kept 12 months; "Analytics settings" in the footer to change it; Clarity cookies are
deleted unless consent is given). The font is self-hosted in fonts/ (SIL OFL), so no request goes to Google. transformers.js and the ONNX Runtime
WebAssembly engine are self-hosted in vendor/transformers-3.0.0/ (byte-identical to npm 3.0.0; env.backends.onnx.wasm.wasmPaths
points there), so the page makes no third-party CDN requests.
privacy.html documents every data flow; update it whenever a third-party service is added.
Architecture — genuinely $0/month
- Frontend: this HF Space (
Devseis/Caveat),sdk: static— plain HTML/CSS/vanilla JS, no framework, no build step. - Part 1 (fine-tuned classifier): runs entirely in the visitor's
browser. No server call. Devseis AI Act Classifier v6 (fine-tuned from
nlpaueb/legal-bert-small-uncasedondata_v6_systems) is loaded from its repoDevseis/devseis-ai-act-classifier-v6, pinned to commit7c594f6(MODEL_REVISIONinindex.html), so the repo's download count shows how many browsers ran the check (the browser caches the files after the first use).@huggingface/transformers3.0.0 loads it withdtype: "q8", which fetchesonnx/model_quantized.onnx(~36MB, int8), and runs it with WASM. The int8 file matches the PyTorch model on 98.6% of test rows underonnxruntime-web. The full model card is on the Hub, atDevseis/devseis-ai-act-classifier-v6. Earlier versions (v1–v3, DistilBERT) are documented inDevseis/eu-ai-act-classifier-experiment. - GPAI rule:
gpai_rule.jsruns before the classifier. Descriptions of a provider training or releasing a general-purpose model getgpaiorgpai_systemic_riskfrom the rule (compute figure > 10^25 FLOPs, or a Commission designation), and the classifier is skipped. "Built on someone else's model" gets a note, and the classifier decides the tier. - Part 2 (reasoning check): a Cloudflare Worker,
devseis-aiact-reasoning-proxy(devseis-aiact-reasoning-proxy.umer-wasim.workers.dev), source lives outside this repo (deployed viawrangler). Calls Cloudflare Workers AI (@cf/meta/llama-3.1-8b-instruct-fp8, free tier) fresh on every request, with the EU AI Act reference rules given as grounding context in the system prompt — no training, no fine-tuning, no stored state.
No API keys, no paid services, no per-request cost either side.
Why two different serving strategies
Devseis/eu-ai-act-classifier-experiment's free HF-hosted Inference API
does not support arbitrary custom fine-tuned models
("Model not supported by provider hf-inference", confirmed when this was
built) — so Part 1 had to move client-side instead. This Space's org
(Devseis) also cannot host gradio/docker Spaces on the free tier
(only static — confirmed by a 402 Payment Required when this was
tried), which is the other reason Part 1 couldn't be a small Python
backend. In-browser ONNX inference is the only genuinely free path left
for a custom classifier under these constraints.
Known limitation of Part 2 specifically
The original "Part 2" reasoning check (documented in the model repo) was
done by a much larger model (Claude Sonnet 5) reasoning directly, and
flagged one case (an election-prediction scenario) as a genuine boundary
call between tiers. The free llama-3.1-8b-instruct-fp8 used live, in
this Space is meaningfully smaller. In testing during development it
got the core tier right on that same case but did not reliably surface
the nuance — a concrete example of why "a bigger model would probably do
better" is not the same as "this free model does better." Don't assume
Part 2's live output here matches the quality documented in the write-up.
Files
index.html— the app.privacy.html— privacy notice with an analytics on/off control.fonts/— self-hosted Space Grotesk (fonts.css, woff2 files,OFL.txtlicence).vendor/transformers-3.0.0/— self-hosted transformers.js and ONNX Runtime Web engine, with licences (see its README).gpai_rule.js— the GPAI rule (tests live outside this repo, incaveat-gpai/).models/devseis-ai-act-classifier-v6/— Part 1's model: config, tokenizer,onnx/model_quantized.onnx, and the model card (README.md). This folder is a runtime copy ofDevseis/devseis-ai-act-classifier-v6and is licensed CC BY-SA 4.0 (it is fine-tuned from LEGAL-BERT-SMALL; attribution in its README). Data and evaluation reports are in the model and dataset repos linked above.manifest.json,privacy.html,devseis-logo.png,icon-192.png,icon-512.png— shared assets, same pattern asNox.
Deploying changes
Frontend: plain static files, push to this repo like any other Space.
Part 2's Worker: edit and wrangler deploy from its own source (not
tracked in this repo). Part 1's model: retrain and re-export
(the model-comparison/ project: train_v4.py, then export_v4.py), then
replace the files in models/devseis-ai-act-classifier-v6/ (or add a new folder and
change the model name in index.html). The .onnx file is stored with Git LFS.