Determinismo por construção

IA determinística,
por construção.

Faça a mesma pergunta a um modelo duas vezes e você pode obter duas respostas. Isso é IA não determinística — aceitável para prosa, fatal para números. O SQAI retira o número do modelo: cada computação roda em um runtime float64 fixado, single-threaded, e imprime o hash que a reproduz exatamente.

IIO replay

Dois certificados, meses depois.

Uma computação — finance.npv a uma taxa de desconto de 10% sobre cinco fluxos de caixa — executada uma vez e reexecutada meses depois. O determinismo como promessa pediria sua confiança. Como hash, pede uma comparação.

Execução 001primeira execução

envelope de determinismo

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

computation_hashb74f67d0d7a594aa…

Execução 002meses depois

envelope de determinismo

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

computation_hashb74f67d0d7a594aa…

Idêntico. Não similar — idêntico.

computation_hash compartilhadob74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8

Duas linguagens, um fluxo de bytes

TypeScriptcanonicalJson(result.value)

Pythoncanonical_json(result.value)

bytes idênticos, em qualquer linguagem505.020148896933

mesmos bytes na entrada → mesmo sha256 na saída → o mesmo certificado

canonicalJson em TypeScript e canonical_json em Python emitem os mesmos bytes por construção: −0 vira 0, as chaves são ordenadas, o escape unicode é fixo. A igualdade de hash entre linguagens não é uma coincidência a torcer por — é um contrato de serialização.

IIIAs letras miúdas

Determinístico — dentro do escopo declarado.

"Determinístico" é fácil de imprimir e difícil de honrar. O SQAI não afirma que seu resultado é idêntico em todas as máquinas do universo. Ele declara um escopo de execução, registra esse escopo no envelope e garante identidade dentro dele.

Registrar o ambiente é melhor do que exagerá-lo. Tudo que poderia alterar o número é fixado ou documentado.

declarado em todo resultadodeterministic_scope: "local_registered_source"

runtime_bundle_version
a versão do motor que executou — 0.1.0 hoje, fixada
runtime_bundle_sha256
o hash de conteúdo da versão — verificado antes de qualquer execução
platform
onde executou — darwin-arm64 ou linux-x64, registrado, nunca presumido
architecture
a família de CPU, documentada pelo mesmo motivo
precision_mode
float64 — um único regime numérico para cada capability
thread_count
1 — sem disputas de escalonamento na sua aritmética
seed
opcional — exigido por exatamente 10 capabilities de simulação
input_hash
os dados como estavam, registrados antes da execução

IVProveniência com separação de domínio

Três hashes, três perguntas.

Proveniência aqui não é uma linha de log. São três construções sha256, cada uma respondendo a uma pergunta diferente, cada uma calculada sobre bytes canônicos.

plan_hashf87610d8afeb…

O que vai executar.

O plano resolvido, com hash calculado antes de qualquer execução. A mesma pergunta resolve para o mesmo plano — decision_path: exact_spec — portanto um plano revisado uma vez é revisado para sempre.

invocation_hash

O que foi solicitado.

A identidade da chamada — a capability mais seus argumentos canonicalizados — sob seu próprio prefixo versionado. explainQuery exibe isso como prévia em modo seco; o hash executado é registrado de forma independente em tempo de execução.

computation_hashb74f67d0d7a594aa…

O que foi retornado.

Incorpora o invocation_hash antes dos bytes canônicos do valor. A resposta está criptograficamente encadeada à sua pergunta — este hash não pode ser colado em um resultado diferente.

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

Os prefixos são o ponto central. "sqai:invocation:v1" e "sqai:computation:v1" são universos de bytes disjuntos: uma invocação jamais pode colidir com uma computação, e um futuro v2 jamais pode se passar por v1. A separação de domínio transforma os hashes em evidência, não em decoração.

Por baixo dos três, a própria superfície está fixada. O contrato de capability que define o que pode executar é distribuído com seu próprio hash:contract_hash sha256:79f1c5a6c716…

Temperatura 0
não é determinismo.

amostragem não é execução — o modelo nunca computa aqui

VAmostragem vs execução

O modelo escolhe tokens. O motor computa.

temperature: 0uma configuração de decodificação

  • A decodificação gulosa restringe qual token vem a seguir. O número ainda é previsto, não computado.
  • A mesma pergunta ainda pode gerar SQL diferente — e uma resposta diferente — sem nada que sinalize isso.
  • Nada é registrado: nenhum runtime, nenhum hash de entrada, nada para reproduzir.

computation_hashuma propriedade de execução

  • O modelo registra um plano tipado. O motor o executa — float64, uma thread, bundle fixado.
  • O ambiente acompanha o resultado, dentro do envelope de determinismo.
  • Toda resposta exibe um computation_hash. Reprodução é uma comparação, não um argumento.
0/16 → 16/16
o mesmo modelo em dezesseis perguntas quantitativas — antes e depois de o motor realizar os cálculosO motor em si é auditado: 2.744 verificações de correção, 0 divergências, erro numérico máximo de 1,8e-15.

VIOnde o determinismo pode falhar

Dez sementes. Um gatilho.

seed_required

Dez das 4.574 capabilities expostas simulam aleatoriedade. Sem semente, elas simplesmente não executam — a chamada é rejeitada antes da execução. Com semente, reproduzem como qualquer outra. Nenhuma entropia oculta, nenhuma exceção silenciosa.

uma das dezdistributions.sample_normal

schema_revision_mismatch

Toda fonte registrada carrega uma revisão de esquema. Reproduza um plano contra dados que mudaram e o motor recusa com um erro estruturado — não um número silenciosamente diferente que nada jamais sinalizaria.

declarado em toda fonteschema_revision

4.564 determinísticas como estão · 10 determinísticas com semente · 0 que adivinham

VIIPerguntas

IA determinística, em termos simples.

O que é IA determinística?

Um sistema cujas respostas se reproduzem com exatidão: mesma entrada, mesma saída, de forma verificável. O SQAI implementa isso por construção — os cálculos executam em um runtime float64 fixo, single-threaded, e cada resultado carrega um computation_hash que o reproduz byte a byte.

O que é IA não determinística?

Um sistema cuja saída pode variar entre requisições idênticas. Modelos de linguagem amostram tokens, então a mesma pergunta pode gerar raciocínios diferentes, SQL diferente e números diferentes — sem nenhum sinal de que algo mudou. Um hash reproduzível é o antídoto para essa deriva.

Temperature 0 não torna um LLM determinístico?

Temperature apenas restringe como o próximo token é escolhido. O modelo ainda está prevendo seu número em vez de calculá-lo, e nada sobre a execução é registrado ou reproduzível. O determinismo do SQAI é uma propriedade da execução, não da decodificação: o modelo registra um plano tipado e o motor realiza a aritmética.

Como verifico que duas execuções realmente retornaram a mesma resposta?

Compare o computation_hash em cada resultado. É um sha256 com separação de domínio sobre a identidade da invocação e os bytes canônicos do valor — hashes iguais significam respostas byte a byte idênticas. O exemplo finance.npv imprime b74f67d0… tanto em TypeScript quanto em Python.

Como simulações podem ser determinísticas?

Recusando-se a ser aleatórias em segredo. Exatamente 10 das 4.574 capabilities expostas do SQAI simulam aleatoriedade; chamadas sem seed são rejeitadas com seed_required, e com seed reproduzem exatamente como qualquer outra capability.

E se os dados mudarem entre a primeira execução e a reprodução?

A reprodução falha de forma explícita. Cada fonte registrada carrega uma revisão de esquema, e um plano reproduzido contra dados alterados retorna schema_revision_mismatch — um erro estruturado, nunca um número silenciosamente diferente.