Skip to main content

Klix

PyPI version Python License: MIT

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.1

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.1
File Size Uploaded
klix_engine-0.1.1.tar.gz 128.1 kB Details

Built distribution (wheel)

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

Total release size: 138.2 kB

Release files / klix_engine-0.1.1.tar.gz

Download URL klix_engine-0.1.1.tar.gz
Size 128.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7093c8d068d8edd514fc30a66a93b1b30274a187c43aa016c996aae488ca9793
BLAKE2b-256 checksum
How to use checksums
ef0cbda286a7f8092c2c7e2d5fdc146e5fc774e63d2be7600db194007f03da5b
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.1-py3-none-any.whl

Download URL klix_engine-0.1.1-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e6072044098f38e8b48450cc4dbada077f4cfdc89920c5f53a45e8caf5166276
BLAKE2b-256 checksum
How to use checksums
ea2422f569a28f5a6151ecc2089a74d88203bb4537f7126280109975378ef6df
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

This release

0.1.1 This release

2 release files

0.1.0

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