Pathumma Cross-border Guardrail (OpenThai-SystemOne fine-tune)

เน‚เธกเน€เธ”เธฅเธ•เธฑเธ”เธชเธดเธ™เนƒเธˆ (decision model) ~0.8B เธชเธณเธซเธฃเธฑเธšเนƒเธŠเน‰เน€เธ›เน‡เธ™ guardrail เธŠเธฑเน‰เธ™เนเธฃเธ เธเนˆเธญเธ™ route prompt เน„เธ›เธขเธฑเธ‡ LLM: เธˆเธณเนเธ™เธเธงเนˆเธฒเธ‚เน‰เธญเธ„เธงเธฒเธกเธกเธต เธ‚เน‰เธญเธกเธนเธฅเธ›เธฃเธฐเน€เธ เธ—เนƒเธ” (7 เธซเธกเธงเธ”) เนเธฅเน‰เธง map เน€เธ›เน‡เธ™ เธชเธดเธ—เธ˜เธดเนŒเธชเนˆเธ‡เธ›เธฃเธฐเธกเธงเธฅเธœเธฅเธ™เธญเธเธ›เธฃเธฐเน€เธ—เธจ (3 เธฃเธฐเธ”เธฑเธš) เธ•เธฒเธก PDPA เนเธฅเธฐ ETDA Generative AI Governance Guideline เน„เธกเนˆเนƒเธŠเนˆเน‚เธกเน€เธ”เธฅ generative โ€” เธ„เธทเธ™ calibrated probability เน€เธซเธ™เธทเธญ option เธ—เธตเนˆเธเธณเธซเธ™เธ” เนƒเธ™ forward pass เน€เธ”เธตเธขเธง

Intended use

เนƒเธŠเน‰เธ•เธฑเธ”เธชเธดเธ™ routing (foreign API vs sovereign/on-prem) เน€เธ›เน‡เธ™เธŠเธฑเน‰เธ™เนเธฃเธเธฃเนˆเธงเธกเธเธฑเธš regex/DLP pre-filter เธชเธณเธซเธฃเธฑเธšเธ‚เน‰เธญเธ„เธงเธฒเธกเน„เธ—เธข/เธญเธฑเธ‡เธเธคเธฉเนƒเธ™เธšเธฃเธดเธšเธ—เธญเธ‡เธ„เนŒเธเธฃเน„เธ—เธข เน„เธกเนˆเน„เธ”เน‰ เธญเธญเธเนเธšเธšเธกเธฒเธ•เธฃเธงเธˆเน€เธ™เธทเน‰เธญเธซเธฒเธญเธฑเธ™เธ•เธฃเธฒเธข (violence, CSAM, hate) โ€” เธ•เน‰เธญเธ‡เธกเธต content-safety guardrail เนเธขเธ

Taxonomy

# key เธ„เธณเธญเธ˜เธดเธšเธฒเธข routing
1 public เธ„เธงเธฒเธกเธฃเธนเน‰เธ—เธฑเนˆเธงเน„เธ› เธ‡เธฒเธ™เน€เธ‚เธตเธขเธ™ เน‚เธ„เน‰เธ” เธซเธฃเธทเธญเธ„เธณเธ–เธฒเธกเน€เธŠเธดเธ‡เนเธ™เธงเธ„เธดเธ” เธ—เธตเนˆเน„เธกเนˆเธกเธตเธŠเธทเนˆเธญโ€ฆ foreign_ok
2 pdpa_general เธกเธตเธ‚เน‰เธญเธกเธนเธฅเธฃเธฐเธšเธธเธ•เธฑเธงเธšเธธเธ„เธ„เธฅเธˆเธฃเธดเธ‡ เน€เธŠเนˆเธ™ เธŠเธทเนˆเธญ-เธชเธเธธเธฅ เน€เธšเธญเธฃเนŒเน‚เธ—เธฃ เธญเธตเน€เธกเธฅ เธ—เธตเนˆเธญเธขโ€ฆ conditional
3 pdpa_sensitive เธกเธตเธ‚เน‰เธญเธกเธนเธฅเธšเธธเธ„เธ„เธฅเธˆเธฃเธดเธ‡เธ›เธฃเธฐเน€เธ เธ—เธญเนˆเธญเธ™เน„เธซเธง: เธชเธธเธ‚เธ เธฒเธž/เน‚เธฃเธ„/เธœเธฅเธ•เธฃเธงเธˆ เธžเธฑเธ™เธ˜เธธเธเธฃเธฃเธก โ€ฆ sovereign_only
4 confidential เน€เธญเธเธชเธฒเธฃเธšเธฃเธดเธซเธฒเธฃ/เธเธฒเธฃเน€เธ‡เธดเธ™/เธเธŽเธซเธกเธฒเธขเธ เธฒเธขเนƒเธ™เธ‚เธญเธ‡เธšเธฃเธดเธฉเธฑเธ—เน€เธญเธเธŠเธ™ เธ—เธตเนˆเธขเธฑเธ‡เน„เธกเนˆเน€เธ›เธดเธ”โ€ฆ sovereign_only
5 system_secret เธกเธต credential เธซเธฃเธทเธญเธฃเธฒเธขเธฅเธฐเน€เธญเธตเธขเธ”เน€เธ—เธ„เธ™เธดเธ„เธ‚เธญเธ‡เธฃเธฐเธšเธš: API key เธฃเธซเธฑเธชเธœเนˆเธฒเธ™ โ€ฆ sovereign_only
6 govt_classified เน€เธญเธเธชเธฒเธฃเธ‚เธญเธ‡เธซเธ™เนˆเธงเธขเธ‡เธฒเธ™เธฃเธฑเธ/เธ—เธซเธฒเธฃ/เธ•เธณเธฃเธงเธˆ/เธ‚เนˆเธฒเธงเธเธฃเธญเธ‡ เธ—เธตเนˆเธกเธตเธŠเธฑเน‰เธ™เธ„เธงเธฒเธกเธฅเธฑเธš (เธฅโ€ฆ sovereign_only
7 trade_secret เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ—เธฒเธ‡เธ›เธฑเธเธเธฒเน€เธŠเธดเธ‡เน€เธ—เธ„เธ™เธดเธ„/เธงเธดเธˆเธฑเธข เธ—เธตเนˆเธขเธฑเธ‡เน„เธกเนˆเน€เธ›เธดเธ”เน€เธœเธข: เธชเธนเธ•เธฃเธเธฒเธฃเธœโ€ฆ conditional

conditional = เธชเนˆเธ‡เน„เธ”เน‰เน€เธ‰เธžเธฒเธฐเธœเธนเน‰เนƒเธซเน‰เธšเธฃเธดเธเธฒเธฃเธ—เธตเนˆเธกเธต SCC/BCR/Enterprise DPA เธžเธฃเน‰เธญเธกเธ‚เน‰เธญ no-train เธซเธฃเธทเธญเธกเธตเธ„เธงเธฒเธกเธขเธดเธ™เธขเธญเธก ยท sovereign_only = เธ›เธฃเธฐเธกเธงเธฅเธœเธฅเนƒเธ™เธ›เธฃเธฐเน€เธ—เธจเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™

How to use

เน‚เธกเน€เธ”เธฅเธ–เธนเธ fine-tune เธเธฑเธš instructions + criteria เธŠเธธเธ”เน€เธ”เธตเธขเธง เธ‹เธถเนˆเธ‡เน€เธเน‡เธšเนƒเธ™ guardrail_config.json

import json
from openthai_systemone import SystemOneClient, Choice
from huggingface_hub import hf_hub_download
cfg = json.load(open(hf_hub_download("nectec/pathumma-crossborder-guardrail", "guardrail_config.json")))
client = SystemOneClient("nectec/pathumma-crossborder-guardrail")
resp = client.system_one(state={"prompt": "เธŠเนˆเธงเธขเธชเธฃเธธเธ›เธœเธฅเธ•เธฃเธงเธˆเธชเธธเธ‚เธ เธฒเธžเธ‚เธญเธ‡ เธ™เธฒเธขเธชเธกเธŠเธฒเธข เนƒเธˆเธ”เธต HN 123456"},
                         questions={"data_sensitivity": Choice(instructions=cfg["instructions"], criteria=cfg["criteria"])})
a = resp.answers["data_sensitivity"]
print(a.choice, cfg["routing"][a.choice], round(a.confidence, 3))

Wrapper เธžเธฃเน‰เธญเธก pre-filter/fail-closed: guardrail.py ยท FastAPI + OpenAI-compatible /v1/moderations: serve.py

Training

  • Base: iapp/OpenThai-SystemOne ยท full fine-tune backbone + slot head เธ”เน‰เธงเธข loss เธ—เธตเนˆเธกเธฒเธเธฑเธšเน‚เธกเน€เธ”เธฅ (CE + label_smoothing 0.05 + brier 0.1), shuffle เธฅเธณเธ”เธฑเธš option เธ—เธธเธ batch, temperature calibrate เนเธขเธเธšเธ™ held-out val
  • AdamW lr backbone 1e-05 / head 0.0001, batch 8, โ‰ค4 epochs + early stopping (best epoch n/a), bf16 autocast
  • Data: synthetic 3,500 เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡ (500/เธซเธกเธงเธ”) เธˆเธฒเธ template 20-39 เนเธšเธšเธ•เนˆเธญเธซเธกเธงเธ” โ€” เธŠเธทเนˆเธญ/เน€เธฅเธ‚เธšเธฑเธ•เธฃ/เน€เธšเธญเธฃเนŒ/เธญเธ‡เธ„เนŒเธเธฃ เธชเธกเธกเธ•เธดเธ—เธฑเน‰เธ‡เธซเธกเธ”, credential เนƒเธ™เธซเธกเธงเธ” 5 เน€เธ›เน‡เธ™ placeholder
  • Split เธฃเธฐเธ”เธฑเธš template 60/15/25 โ†’ val/test เน€เธ›เน‡เธ™เธฃเธนเธ›เธ›เธฃเธฐเน‚เธขเธ„เธ—เธตเนˆเน„เธกเนˆเน€เธ„เธขเน€เธซเน‡เธ™

Evaluation (template-held-out test, n = 880)

model accuracy macro-F1
base zero-shot 0.8557 0.8544
fine-tuned (this repo) 0.9284 0.9267
                 precision    recall  f1-score   support

         public      0.953     0.865     0.907       141
   pdpa_general      0.867     1.000     0.929       130
 pdpa_sensitive      1.000     0.821     0.902       112
   confidential      0.745     1.000     0.854       108
  system_secret      1.000     1.000     1.000       137
govt_classified      1.000     0.992     0.996       126
   trade_secret      1.000     0.817     0.900       126

       accuracy                          0.928       880
      macro avg      0.938     0.928     0.927       880
   weighted avg      0.941     0.928     0.929       880

Confusion matrix (rows=gold, cols=pred, 1..7):

[[122   0   0  19   0   0   0]
 [  0 130   0   0   0   0   0]
 [  0  20  92   0   0   0   0]
 [  0   0   0 108   0   0   0]
 [  0   0   0   0 137   0   0]
 [  0   0   0   1   0 125   0]
 [  6   0   0  17   0   0 103]]

Calibration: T = 1.068 (val NLL 0.2766 โ†’ 0.2766)

Coverage vs accuracy เธ•เธฒเธก confidence threshold (เนƒเธŠเน‰เธ•เธฑเน‰เธ‡ min_confidence, เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ 0.6):

threshold coverage acc on kept
0.5 0.993 0.935
0.6 0.989 0.938
0.7 0.981 0.944
0.8 0.975 0.946
0.9 0.951 0.964

Limitations

  • เธ‚เน‰เธญเธกเธนเธฅเธเธถเธเน€เธ›เน‡เธ™ synthetic เธˆเธฒเธ template โ€” เธœเธฅเธšเธ™ prompt เธˆเธฃเธดเธ‡เธญเธฒเธˆเธ•เนˆเธณเธเธงเนˆเธฒเธ™เธตเน‰ เธ„เธงเธฃ shadow-deploy เนเธฅเธฐ label เธ‚เน‰เธญเธกเธนเธฅเธˆเธฃเธดเธ‡เน€เธžเธดเนˆเธก
  • เน„เธกเนˆเน„เธ”เน‰เน€เธ—เธฃเธ™เนƒเธซเน‰เธˆเธณ secret เธˆเธฃเธดเธ‡ โ†’ เธ•เน‰เธญเธ‡เธกเธต regex/entropy pre-filter เน€เธชเธกเธญ (เธกเธตเนƒเธ™ guardrail.py)
  • single-label: เธ‚เน‰เธญเธ„เธงเธฒเธกเธซเธฅเธฒเธขเธ›เธฃเธฐเน€เธ เธ—เน„เธ”เน‰เธซเธกเธงเธ”เน€เธ‚เน‰เธกเธ‡เธงเธ”เธชเธธเธ”เธ•เธฒเธก priority rule
  • เน„เธกเนˆเธ„เธฃเธญเธšเธ„เธฅเธธเธก content safety ยท base model เธกเธต order sensitivity เธชเธณเธซเธฃเธฑเธš โ‰ค10 options (fine-tune เธ”เน‰เธงเธข shuffle เธŠเนˆเธงเธขเธฅเธ”)
  • เธ„เธงเธฃ fail-closed: confidence เธ•เนˆเธณ/abstain เธชเธนเธ‡/error โ†’ sovereign_only

Deployment

เธฃเธฑเธ™เน‚เธกเน€เธ”เธฅเธ™เธตเน‰ on-prem/เนƒเธ™เธ›เธฃเธฐเน€เธ—เธจเน€เธชเธกเธญ ยท pipeline pre-filter โ†’ model โ†’ threshold โ†’ routing ยท log เธ—เธธเธ decision ยท เน€เธเน‡เธšเน€เธ„เธช needs_review เธชเนˆเธ‡ human label เนเธฅเน‰เธง fine-tune เธฃเธญเธšเธ–เธฑเธ”เน„เธ›

Acknowledgements

Base model เนเธฅเธฐ pipeline เน‚เธ”เธข iApp Technology (OpenThai-SystemOne, Apache-2.0) เธ‹เธถเนˆเธ‡เน„เธ”เน‰เนเธฃเธ‡เธšเธฑเธ™เธ”เธฒเธฅเนƒเธˆเธˆเธฒเธ TypeSafe AI System One. Taxonomy เธญเน‰เธฒเธ‡เธญเธดเธ‡ ETDA AI Governance Center

Author: Sarawoot Kongyoung, NECTEC/AINRG ยท Contact: sarawoot.kon@nectec.or.th

Downloads last month
22
Safetensors
Model size
0.8B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for nectec/pathumma-crossborder-guardrail

Finetuned
(3)
this model

Evaluation results