Files
memory/systems/laya.md
T

3.1 KiB

Laya Decision Model

421M param ModernBERT-large Classifier (Apache 2.0) auf CT152, CPU-only. Nutze in normalen Sessions fuer schnelle Klassifizierung, Binaerentscheidungen und Pre-Filter.

Zugang

  • Endpoint: POST http://10.0.30.152:8000/predict
  • Payload: {"state": "<text>", "questions": {...}}
  • Health: GET http://10.0.30.152:8000/health
  • Presets: GET http://10.0.30.152:8000/presets/{router|guard|moderation|triage}

Entscheidungstypen (Primitives)

Typ 用途 Return Fields
choice Klassifizierung in N Labels choice, answer_confidence, probabilities
noul Ja/Nein mit Wahrscheinlichkeit noul (0..1), answer_confidence
score Ordinale Bewertung score, answer_confidence

Verwendung in Sessions

Praeferieren fuer:

  • Pre-Filter vor teuren LLM-Calls (z.B. "ist diese Email eine Rechnung?" → nur bei "ja" LLM aufrufen)
  • Binaerentscheidungen: alert/skip, escalate/ignore, move/keep
  • Multi-Kategorie-Klassifizierung mit Confidence
  • Gatekeeping: Notification-Suppression, Alert-Filtering

NICHT geeignet fuer:

  • Textgenerierung / Zusammenfassungen (dafür LLM verwenden)
  • Komplexe Reasoning-Tasks
  • Embeddings / Semantische Suche (dafür Harrier/Hindsight)

Example Call

import json, urllib.request

payload = json.dumps({
    "state": "Von: amazon.de\nBetreff: Bestellbestätigung #12345",
    "questions": {
        "kategorie": {
            "type": "choice",
            "instructions": "Welche Kategorie?",
            "criteria": {
                "rechnung": "Rechnung, Invoice",
                "bestellung": "Bestellbestätigung, Order",
                "werbung": "Newsletter, Marketing"
            }
        },
        "ignorieren": {
            "type": "noul",
            "instructions": "Soll ignoriert werden?"
        }
    }
}).encode()

req = urllib.request.Request(
    "http://10.0.30.152:8000/predict",
    data=payload,
    headers={"Content-Type": "application/json"}
)
result = json.loads(urllib.request.urlopen(req, timeout=30).read())
# result["answers"]["kategorie"]["choice"] → "bestellung"
# result["answers"]["kategorie"]["answer_confidence"] → 0.99

Performance

  • Latenz: ~1.5-1.7s warm cache (CPU)
  • Load time: ~18s (cold start)
  • systemd service: laya.service (enabled, onboot)

Einsatzgebiete (aktiv)

  • Rechnungen-Organizer (Cron f773f8c23230): 12-Kategorie Email-Klassifizierung, 3-Schichten-Safety
  • Weitere Kandidaten: Beleg-Sammler, SRE Network Recon, Backup Digest, Frigate Event Gate

Constraints

  • 421M Modell → niedrige Confidence bei ambiguous Inputs (Feature, nicht Bug!)
  • Batch funktioniert nicht — ein Request pro Input-Instanz
  • noul ist nicht zuverlaessig fuer kritische Entscheidungen allein — immer mit choice kombinieren
  • Confidence-Threshold empfohlen (≥0.6 fuer Moves, ≥0.5 fuer Ignores)