Skip to main content

Klix

Entkoppelte Entscheidungs-Köpfe auf einem geteilten semantischen Backbone. Ein Text geht genau einmal durch das Embedding-Modell (Dense + Sparse), beliebig viele Köpfe (Choice, Score, Flag) arbeiten anschließend auf den vorberechneten Vektoren – jeder in seinem eigenen mathematischen Raum. Kein Modelltraining, keine Slot-Limits, vollständig offline und CPU-only.

Architektur

Text ──► HybridBackbone (FastEmbed-Dense + TF-IDF-Sparse, einmalig ~10 ms)
              │
              ├──► Choice   (Routing/Klassifikation: Max-Similarity + Keyword-Boost)
              ├──► Score    (kontinuierliche Achse: Low/High-Anker + Sigmoid)
              ├──► Flag     (Boolesch: 2/3-Klassen-Softmax mit Temperatur)
              └──► eigene Köpfe (von BaseHead erben)
  • Shared Backbone: Der Text wird einmal embedding + einmal TF-IDF transformiert. 3 Köpfe oder 50 Köpfe – die Extraktionskosten bleiben gleich.
  • Entkoppelte Köpfe: Neue Optionen in einem Choice beeinflussen weder Score- noch Flag-Ergebnisse. Jeder Kopf kapselt seine eigene Logik.
  • Deklarativ: Nur Schemata mit Beispielsätzen definieren, compile(), fertig.

Installation

uv add klix-engine
# oder
pip install klix-engine

Beim ersten Aufruf lädt FastEmbed das Modell paraphrase-multilingual-MiniLM-L12-v2 (~120 MB, einmalig, danach lokal gecacht). Danach läuft alles offline.

Schnellstart

from klix import DecisionEngine, Choice, Score, Flag

engine = DecisionEngine()

engine.add_head(
    Choice(
        name="target",
        options={
            "it_ops": ["VPN abgerissen", "Server down", "Rechner bootet nicht"],
            "ot_plant": ["Roboterzelle steht", "SPS Fehler", "Taktzeit deviation"],
            "finance": ["KST 4210 über Budget", "Rechnung freigeben"],
            "facility": ["Öllache Halle 2", "Heizung defekt"],
        },
    )
)

engine.add_head(
    Score(
        name="urgency",
        low_anchors=["Routine-Wartung", "Informelle Frage"],
        high_anchors=["Notfall sofort", "Produktionsstillstand", "Akute Gefahr"],
        min_val=0.0,
        max_val=3.0,
    )
)

engine.add_head(
    Flag(
        name="is_security",
        true_anchors=["Hackerangriff", "Ransomware Befall", "Datenabfluss"],
        false_anchors=["Hardware kaputt", "Netzwerkstörung", "Alltägliche Anfrage"],
        threshold=0.5,
    )
)

engine.compile()

res = engine.decide("plc-34 meldet fehler, förderband steht sofort!")

print(res)                                   # <DecisionResult (11 ms): target=ot_plant, urgency=2.9, is_security=False>
print(res.target)                            # 'ot_plant'
print(res.urgency)                           # 2.87
print(res.is_security)                       # False
print(res.details("is_security"))            # {'value': False, 'probability': 0.03}

Eigene Köpfe

Von BaseHead erben und evaluate(encoded) implementieren:

import re
from klix import BaseHead

class RegExExtractionHead(BaseHead):
    def __init__(self, name: str, pattern: str):
        super().__init__(name)
        self.re = re.compile(pattern)

    def get_reference_texts(self) -> list[str]:
        return []  # keine Referenztexte nötig

    def fit(self, backbone) -> None:
        pass

    def evaluate(self, encoded) -> dict:
        match = self.re.search(encoded.text)
        return {"value": match.group(0) if match else None}

Entwicklung

uv sync          # Abhängigkeiten installieren
uv run pytest    # Tests
uv run python examples/demo.py
uv build         # PyPI-Artefakte (wheel + sdist) nach dist/
uv publish       # Hochladen (erfordert Token/Account)

Lizenz

MIT

Release files for klix-engine 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for klix-engine 0.1.0
File Size Uploaded
klix_engine-0.1.0.tar.gz 127.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for klix-engine 0.1.0
File Interpreter ABI Platform
klix_engine-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 137.4 kB

Release files / klix_engine-0.1.0.tar.gz

Download URL klix_engine-0.1.0.tar.gz
Size 127.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d3a72b1efb7486e267864713bcdca4b590eb5e5673327d30a6e0d40f4d77a962
BLAKE2b-256 checksum
How to use checksums
d1ef6eb68c9343db2157635849ae792b1c39b8dbca572a392daa20a895325de0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / klix_engine-0.1.0-py3-none-any.whl

Download URL klix_engine-0.1.0-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
31e3e4d0b83a6ec04f2cc281dfec9f9f0f1374368e361ab3fca57baef2bedaec
BLAKE2b-256 checksum
How to use checksums
8c146322ce4d214b1eac57bde87289dcae71f39e84eb9f72ef003ca4375f2e43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page