IO registro de perguntas

Respondido com precisão.

Tudo o que equipes perguntam antes de entregar o SQAI a um agente — o que ele jamais pode fazer, o que sai da máquina, o que uma reprodução prova, quanto custa. Respostas diretas, números reais e as páginas com a história completa.

IIO que é, quão rápido, onde roda

Produto

Q01–Q05
Q01

O que é o SQAI?

Structured Query AI — a ferramenta governada e somente leitura de dados estruturados para agentes de IA. Uma pergunta se torna um plano tipado e verificado por política; o plano roda em um motor determinístico; a resposta retorna com hashes que a reproduzem.

Uma única superfície cobre arquivos e bancos de dados ativos, além de 4.778 capabilities de cálculo somente leitura em 445 módulos — de medianas a precificação de opções.

stats.median · finance.npv · option_pricing.black_scholes_call

Q02

É rápido?

Não há cold start por consulta. O plano de consulta roda em processo — submilissegundo em arquivos típicos.

O cálculo é provisionado uma única vez: a primeira chamada baixa e inicializa o runtime assinado em cerca de 110 segundos. Depois disso, o daemon permanece ativo e residente, e uma chamada de cálculo a quente mede 0,83–0,93 ms.

finance.npv = 0.83–0.93 ms (warm) · first provision ≈ 110 s

Q03

Quais plataformas são suportadas?

O runtime assinado é distribuído para macOS Apple silicon e Linux x64. No Windows, uma chamada de cálculo gerenciado retorna um erro estruturado e nomeado em vez de travar.

O plano de consulta roda em qualquer lugar. O mesmo vale para os modos self-hosted e hospedado, pois o cálculo é enviado a um motor remoto. Node 20 ou superior; Python 3.10 ou superior.

darwin-arm64 · linux-x64 · node ≥ 20 · python ≥ 3.10

Q04

Posso distribuir um runtime menor?

Sim. Por padrão, o SQAI instala o bundle fixo que cobre toda a superfície exposta. Nomeie apenas os módulos necessários e o serviço de build compila um bundle assinado e fixado por sha256 para esse subconjunto, com cache por hash de filtro.

Daemons filtrados recebem seu próprio socket e porta, portanto nunca colidem com o completo.

SQAI_RUNTIME_MODULES → POST /v1/runtime/build · sha256-pinned

Q05

Algo falhou. Como depuro?

As ferramentas do agente nunca lançam exceções. Erros retornam como saída estruturada com um status e um código que identifica a negação — uma negação de política, uma capability desconhecida, um seed ausente.

Para tudo abaixo das ferramentas, um único comando verifica a instalação, o runtime e a paridade entre linguagens em uma única passagem.

output.status === "error" · sqai doctor --parity --json

IIISomente leitura por construção, não por flag

Segurança

Q06–Q10
Q06

É realmente somente leitura?

Sim — por construção, não por permissão. O modelo declara intenção tipada, nunca SQL; o SQAI a valida contra um contrato de capability fixado por hash, aplica sua política e só então executa.

Das 4.778 capabilities, 4.574 são expostas: apenas as que são somente leitura e determinísticas, ou determinísticas quando com seed. As 204 que não passam no teste — incluindo toda escrita — estão ausentes da superfície empacotada. Nenhuma configuração pode alcançar o que nunca foi distribuído.

read_only && (deterministic || deterministic_when_seeded)

Q07

Como concedo a um agente acesso somente leitura aos meus dados?

Registre suas fontes em código e entregue ao modelo o conjunto de ferramentas — exatamente três ferramentas. Uma lista o que existe, outra visualiza um plano sem executá-lo, e a terceira executa contra a superfície somente leitura.

Uma role de banco de dados somente leitura é uma flag que alguém pode desativar. Uma superfície compilada sem capabilities de escrita não é.

sqai.tools() → listSources · explainQuery · queryData

Q08

Como bloqueio DELETE ou DROP em SQL gerado por LLM?

Você não filtra o SQL. Você para de gerá-lo.

Filtros de string e flags somente leitura protegem uma linguagem que sempre pode expressar uma escrita — e SQL injetado por prompt chega na saída do modelo, após seu sanitizador de entrada. O modelo do SQAI escreve um plano tipado em uma gramática sem formas de escrita: DELETE não é rejeitado, é inescrevível.

kind: "query" | "computation" · version: "1"

Q09

O modelo pode ampliar minha política?

Não. A política é fixada em código ao criar o cliente e verificada em processo antes de cada execução. Os schemas das ferramentas não carregam nenhum campo de lista de permissões, portanto não há nada que um prompt possa alcançar.

Uma lista de permissões explícita só pode restringir. Nomear uma capability fora da superfície elegível ainda falha — a superfície empacotada é o teto.

policy_denied_source · policy_denied_field · policy_denied_function

Q10

Existe uma saída de emergência?

Sim — para humanos, nunca para modelos. O runtime sem proteção fica atrás de um import separado que ignora contrato, política e verificações de seed, e nunca é exposto ao conjunto de ferramentas do agente.

Um engenheiro pode optar por sair deliberadamente. Um agente não pode alcançá-lo com nenhuma entrada.

import { getUnsafeRuntime } from "@thyn-ai/sqai/unsafe"

Por que agentes não devem escrever SQL

IVO que sai, o que conecta, o que treina

Dados

Q11–Q13
Q11

Quais dados saem da minha máquina?

No modo local padrão, nenhum. O plano de consulta é resolvido em processo e o runtime de computação é um daemon assinado na sua máquina. A única chamada externa é o download inicial do pacote de runtime — código do motor, não suas linhas.

Aponte uma variável de ambiente para um motor auto-hospedado ou hospedado e os planos são enviados para lá, com credenciais criptografadas e sem cópia de dados.

local: in-process · self_hosted: SQAI_ENGINE_URL · api: SQAI_API_KEY

Q12

Quais fontes de dados posso consultar?

Em processo, sem chave: CSV, TSV, JSON, linhas em memória e SQLite — mais Excel e Parquet em Python. Via motor: PostgreSQL, MySQL, Oracle com driver Thin-mode incluso, SQL Server, Snowflake, BigQuery, ClickHouse, Redshift, object stores, Redis, Neo4j, Elasticsearch, REST APIs e repositórios Git.

Toda fonte apresenta o mesmo formato tipado, de modo que o código downstream não distingue um CSV de Snowflake. As fontes são imutáveis após o registro.

SqaiSource { fields, typed_fields, row_count, schema_revision }

Q13

O SQAI treina com meu esquema ou dados?

Nunca. O SQAI não é um modelo e não treina nada — não há loop de aprendizado para alimentar. No modo local, suas linhas jamais saem da máquina.

O único modelo no loop é o que você traz, e ele vê no máximo 25 linhas por resultado. Qualquer volume maior é truncado — de forma declarada, nunca silenciosa — com o valor completo retido sob um id de resultado opaco que expira após 15 minutos.

maxRowsToModel 25 · maxCellsToModel 250 · maxBytesToModel 32,000

Conecte seus dados

VMesma pergunta, mesmos bytes

Determinismo

Q14–Q16
Q14

Como é determinístico — e idêntico em TypeScript e Python?

Determinístico dentro do escopo de execução declarado — floats de 64 bits, thread única, runtime fixado — e cada resultado registra esse escopo em vez de fazer afirmações excessivas.

O serializador canônico tem conformidade bloqueada em ambos os SDKs, de modo que a mesma computação retorna o mesmo número e hashes byte a byte idênticos em TypeScript e Python.

finance.npv(0.1, [-1000, 300, 420, 560, 680]) = 505.020148896933computation_hash b74f67d0… · TS ≡ PY

Q15

Como impedir que um LLM invente números?

Não deixando que ele faça a aritmética. Peça a um modelo o total de 200 linhas e você recebe um número plausível — sem nenhum sinal de que está errado.

Com o SQAI, o modelo apenas escolhe a computação; o motor a executa. Em nosso A/B de precisão, o mesmo modelo passou de 0 de 16 para 16 de 16 em perguntas quantitativas no momento em que o motor assumiu o cálculo.

accuracy A/B: 0/16 → 16/16

Q16

É possível reproduzir o que um agente respondeu?

Sim — é para isso que servem os hashes. Cada resultado carrega um hash de plano, um hash de invocação conhecido antes da execução, um hash de computação conhecido após, e um envelope de determinismo que registra versão do runtime, plataforma, precisão e seed.

Execute novamente a invocação dentro do mesmo escopo, meses depois, e o hash coincide byte a byte. Se o esquema subjacente mudou, você recebe uma incompatibilidade de revisão de esquema nomeada — nunca números silenciosamente diferentes.

run1 b74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8run2 b74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8identical: true

Determinismo, em detalhes

VIO que é gratuito, o que é restrito

Preços

Q17–Q18
Q17

Preciso de uma chave de API ou conta?

Não. O modo local é zero-config — sem chave, sem conta, sem cartão. O runtime se provisiona na primeira chamada de computação.

O login é opcional e usa um código de dispositivo; ele emite uma licença offline que transfere um token assinado, nunca seus dados. Chaves existem apenas para apontar para um motor diferente.

sqai login → RFC 8628 device code · WDJB-MJHT

Q18

O SQAI é gratuito ou pago?

Desenvolvimento local e computação gerenciada são gratuitos — não há verificação de licença em nenhum ponto do SDK.

Os planos pagos restringem máquinas, assentos e direitos comerciais — nunca funcionalidades de computação. Developer: gratuito, um dispositivo, uso não comercial. Pro: US$ 25 por mês, três dispositivos, uso comercial, jobs assíncronos, webhooks, trilha de auditoria. Team: US$ 99 por mês, dez dispositivos, adiciona controle de acesso baseado em função e assentos.

Developer $0 · Pro $25/mo · Team $99/mo

VIIMais uma pergunta

Pergunte diretamente.

Se não está respondido acima, merece uma resposta de verdade — de uma pessoa.

Fale com a equipeLeia a documentação