Determinismus, konstruktionsbedingt

Deterministisches KI,
konstruktionsbedingt.

Stellen Sie einem Modell dieselbe Frage zweimal, und Sie erhalten zwei Antworten. Das ist nicht-deterministisches KI – für Prosa akzeptabel, für Zahlen fatal. SQAI nimmt dem Modell die Zahl ab: Jede Berechnung läuft auf einem verankerten float64-Runtime, single-threaded, und gibt den Hash aus, der sie exakt reproduziert.

IIDer Replay

Zwei Zertifikate, Monate auseinander.

Eine Berechnung – finance.npv mit 10 % Diskontrate über fünf Cashflows – einmal ausgeführt, Monate später wiederholt. Determinismus als Versprechen würde Ihr Vertrauen fordern. Als Hash fordert er einen Vergleich.

Run 001erste Ausführung

Determinismus-Envelope

capability
finance.npv
runtime_bundle
0.1.0 · 4d64142e…
platform
darwin-arm64
precision_mode
float64
thread_count
1
value
505.020148896933

computation_hashb74f67d0d7a594aa…

Run 002Monate später

Determinismus-Envelope

capability
finance.npv
runtime_bundle
0.1.0 · 4d64142e…
platform
darwin-arm64
precision_mode
float64
thread_count
1
value
505.020148896933

computation_hashb74f67d0d7a594aa…

Identisch. Nicht ähnlich — identisch.

gemeinsamer computation_hashb74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8

Zwei Sprachen, ein Byte-Strom

TypeScriptcanonicalJson(result.value)

Pythoncanonical_json(result.value)

identische Bytes, in beiden Sprachen505.020148896933

gleiche Bytes rein → gleicher sha256 raus → dasselbe Zertifikat

canonicalJson in TypeScript und canonical_json in Python erzeugen konstruktionsbedingt dieselben Bytes: −0 wird zu 0, Schlüssel werden sortiert, Unicode-Escaping ist festgelegt. Hash-Gleichheit über Sprachen hinweg ist kein Zufall, auf den man hofft — sie ist ein Serialisierungsvertrag.

IIIDas Kleingedruckte

Deterministisch — im deklarierten Geltungsbereich.

„Deterministisch" ist leicht behauptet und schwer eingehalten. SQAI beansprucht nicht, dass Ihr Ergebnis auf jeder Maschine im Universum identisch ist. Es deklariert einen Ausführungsbereich, hält diesen Bereich im Envelope fest und garantiert Identität innerhalb davon.

Die Umgebung aufzuzeichnen ist besser als sie zu überschätzen. Alles, was das Ergebnis verändern könnte, ist entweder fixiert oder dokumentiert.

auf jedem Ergebnis deklariertdeterministic_scope: "local_registered_source"

runtime_bundle_version
der ausgeführte Engine-Build — heute 0.1.0, fixiert
runtime_bundle_sha256
der Content-Hash des Builds — vor jeder Ausführung verifiziert
platform
wo es lief — darwin-arm64 oder linux-x64, aufgezeichnet, nie angenommen
architecture
die CPU-Familie, aus demselben Grund dokumentiert
precision_mode
float64 — ein numerisches Regime für jede Capability
thread_count
1 — keine Scheduling-Konflikte in Ihrer Arithmetik
seed
optional — von genau 10 Simulations-Capabilities gefordert
input_hash
die Daten zum Zeitpunkt der Ausführung, vor dem Start gestempelt

IVDomänengetrennte Herkunft

Drei Hashes, drei Fragen.

Herkunft ist hier keine Log-Zeile. Es sind drei sha256-Konstruktionen, jede beantwortet eine andere Frage, jede über kanonische Bytes berechnet.

plan_hashf87610d8afeb…

Was ausgeführt wird.

Der aufgelöste Plan, gehasht bevor irgendetwas ausgeführt wird. Dieselbe Frage ergibt denselben Plan — decision_path: exact_spec — ein einmal geprüfter Plan ist dauerhaft geprüft.

invocation_hash

Was gefragt wurde.

Die Identität des Aufrufs — die Capability samt kanonisierten Argumenten — hinter einem eigenen versionierten Präfix. explainQuery gibt dies als Dry-Run-Vorschau aus; der ausgeführte Hash wird zur Laufzeit unabhängig gestempelt.

computation_hashb74f67d0d7a594aa…

Was zurückkam.

Bezieht den invocation_hash vor den kanonischen Bytes des Werts ein. Die Antwort ist kryptografisch mit ihrer Frage verkettet — dieser Hash kann nicht auf ein anderes Ergebnis aufgestempelt werden.

invocation_hash  = sha256("sqai:invocation:v1\0" + canonicalJson(identity))
computation_hash = sha256("sqai:computation:v1\0" + invocation_hash + canonicalJson(value))

Die Präfixe sind der Kern. „sqai:invocation:v1" und „sqai:computation:v1" sind disjunkte Byte-Universen: Eine Invocation kann nie mit einer Computation kollidieren, und ein künftiges v2 kann sich nie als v1 ausgeben. Domänentrennung macht die Hashes zu Belegen, nicht zu Dekoration.

Unter allen dreien ist die Oberfläche selbst fixiert. Der Capability-Vertrag, der definiert, was überhaupt ausgeführt werden kann, wird mit einem eigenen Hash ausgeliefert:contract_hash sha256:79f1c5a6c716…

Temperatur 0
ist kein Determinismus.

Sampling ist keine Ausführung — das Modell rechnet hier nicht

VSampling vs. Ausführung

Das Modell wählt Tokens. Die Engine rechnet.

temperature: 0eine Dekodierungseinstellung

  • Greedy Decoding schränkt ein, welches Token als nächstes kommt. Die Zahl wird dennoch vorhergesagt, nicht berechnet.
  • Dieselbe Frage kann trotzdem zu unterschiedlichem SQL führen — und zu einer anderen Antwort — ohne dass etwas darauf hinweist.
  • Nichts wird aufgezeichnet: keine Laufzeit, kein Input-Hash, nichts zum Wiederholen.

computation_hasheine Ausführungseigenschaft

  • Das Modell reicht einen typisierten Plan ein. Die Engine führt ihn aus — float64, ein Thread, fixiertes Bundle.
  • Die Umgebung reist mit dem Ergebnis, innerhalb des Determinismus-Envelopes.
  • Jede Antwort trägt einen computation_hash. Replay ist ein Vergleich, kein Argument.
0/16 → 16/16
dasselbe Modell bei sechzehn quantitativen Fragen — bevor und nachdem die Engine die Berechnungen übernimmtDie Engine selbst ist geprüft: 2.744 Korrektheitschecks, 0 Abweichungen, maximaler numerischer Fehler 1,8e-15.

VIWo Determinismus brechen könnte

Zehn Seeds. Ein Stolperdraht.

seed_required

Zehn der 4.574 verfügbaren Capabilities simulieren Zufälligkeit. Ohne Seed werden sie gar nicht ausgeführt — der Aufruf wird vor der Ausführung abgelehnt. Mit Seed laufen sie wie alles andere wieder ab. Keine versteckte Entropie, keine stillen Ausnahmen.

eine der zehndistributions.sample_normal

schema_revision_mismatch

Jede registrierte Quelle trägt eine Schema-Revision. Wird ein Plan gegen veränderte Daten wiederholt, verweigert die Engine mit einem strukturierten Fehler — nicht mit einer stillschweigend anderen Zahl, die niemandem auffallen würde.

auf jeder Quelle deklariertschema_revision

4.564 deterministisch ohne Weiteres · 10 deterministisch mit Seed · 0 die raten

VIIFragen

Deterministische KI, klar gefragt.

Was ist deterministische KI?

Ein System, dessen Antworten exakt reproduzierbar sind: gleiche Eingabe, gleiche Ausgabe, nachweisbar. SQAI setzt das konstruktiv um — Berechnungen laufen auf einer fixierten float64-Laufzeit, single-threaded, und jedes Ergebnis trägt einen computation_hash, der es byteidentisch wiederholt.

Was ist nicht-deterministische KI?

Ein System, dessen Ausgabe bei identischen Anfragen variieren kann. Sprachmodelle sampeln Token — dieselbe Frage kann zu unterschiedlichem Reasoning, anderem SQL und anderen Zahlen führen, ohne jedes Signal, dass sich etwas geändert hat. Ein wiederholbarer Hash ist das Gegenmittel gegen diese Drift.

Macht Temperature 0 ein LLM nicht deterministisch?

Temperature schränkt nur die Wahl des nächsten Tokens ein. Das Modell schätzt Ihre Zahl weiterhin, anstatt sie zu berechnen, und nichts am Lauf wird aufgezeichnet oder ist wiederholbar. SQAIs Determinismus ist eine Eigenschaft der Ausführung, nicht der Dekodierung: Das Modell erstellt einen typisierten Plan, und die Engine führt die Arithmetik durch.

Wie überprüfe ich, ob zwei Läufe wirklich dasselbe Ergebnis geliefert haben?

Vergleichen Sie den computation_hash jedes Ergebnisses. Er ist ein domain-separierter sha256 über die Aufrufidentität und die kanonischen Bytes des Werts — übereinstimmende Hashes bedeuten byteidentische Antworten. Das finance.npv-Beispiel gibt b74f67d0… sowohl in TypeScript als auch in Python aus.

Wie können Simulationen deterministisch sein?

Indem sie nicht im Verborgenen zufällig sind. Genau 10 der 4.574 exponierten Fähigkeiten von SQAI simulieren Zufälligkeit; ohne Seed werden sie mit seed_required abgelehnt, mit Seed laufen sie exakt wie jede andere Fähigkeit wieder ab.

Was passiert, wenn sich die Daten zwischen dem ersten Lauf und der Wiederholung geändert haben?

Die Wiederholung schlägt laut fehl. Jede registrierte Quelle trägt eine Schema-Revision; ein Plan, der gegen geänderte Daten wiederholt wird, gibt schema_revision_mismatch zurück — einen strukturierten Fehler, nie eine still abweichende Zahl.