IIl registro delle domande
Risposte definitive.
Tutto ciò che i team chiedono prima di affidare SQAI a un agente — cosa non può mai fare, cosa lascia la macchina, cosa prova una riproduzione, quanto costa. Risposte concise, numeri reali e le pagine che contengono la storia completa.
IICos'è, quanto è veloce, dove gira
Prodotto
Q01Cos'è SQAI?
Structured Query AI — lo strumento governato e di sola lettura per dati strutturati destinato agli agenti AI. Una domanda diventa un piano tipizzato e verificato dalla policy; il piano viene eseguito su un motore deterministico; la risposta torna con hash che la riproducono.
Un'unica superficie copre file e database live insieme a 4.778 capability di calcolo di sola lettura distribuite su 445 moduli — dalle mediane al pricing delle opzioni.
stats.median · finance.npv · option_pricing.black_scholes_call
Q02È veloce?
Non esiste cold start per query. Il piano di query gira in-process — sub-millisecondo su file tipici.
Il calcolo viene inizializzato una volta sola: la primissima chiamata scarica e inizializza il runtime firmato in circa 110 secondi. Dopodiché il daemon rimane attivo e residente, e una chiamata di calcolo a caldo misura 0,83–0,93 ms.
finance.npv = 0.83–0.93 ms (warm) · first provision ≈ 110 s
Q03Quali piattaforme sono supportate?
Il runtime firmato è disponibile per macOS Apple silicon e Linux x64. Su Windows, una chiamata di calcolo gestita restituisce un errore strutturato e nominato anziché andare in crash.
Il piano di query gira ovunque. Lo stesso vale per le modalità self-hosted e hosted, poiché il calcolo viene inviato a un motore remoto. Node 20 o superiore; Python 3.10 o superiore.
darwin-arm64 · linux-x64 · node ≥ 20 · python ≥ 3.10
Q04Posso distribuire un runtime più leggero?
Sì. Per impostazione predefinita SQAI installa il bundle fissato che copre l'intera superficie esposta. Specifica solo i moduli necessari e il servizio di build compila un bundle firmato e fissato con sha256 per quel sottoinsieme, memorizzato nella cache per hash del filtro.
I daemon filtrati ottengono il proprio socket e porta, quindi non entrano mai in conflitto con quello completo.
SQAI_RUNTIME_MODULES → POST /v1/runtime/build · sha256-pinned
Q05Qualcosa è andato storto. Come faccio a diagnosticarlo?
Gli strumenti dell'agente non generano mai eccezioni. Gli errori tornano come output strutturato con uno status e un codice che identifica il rifiuto — un rifiuto di policy, una capability sconosciuta, un seed mancante.
Per tutto ciò che sta sotto gli strumenti, un unico comando verifica l'installazione, il runtime e la parità cross-language in un solo passaggio.
output.status === "error" · sqai doctor --parity --json
IIISola lettura per costruzione, non per flag
Sicurezza
Q06È davvero di sola lettura?
Sì — per costruzione, non per permesso. Il modello esprime intenti tipizzati, mai SQL; SQAI li valida rispetto a un contratto di capability fissato con hash, applica la tua policy e solo allora esegue.
Delle 4.778 capability, 4.574 sono esposte: solo quelle di sola lettura e deterministiche, o deterministiche con seed. Le 204 che non superano il test — incluse tutte le scritture — sono assenti dalla superficie distribuita. Nessuna impostazione può raggiungere ciò che non è mai stato incluso.
read_only && (deterministic || deterministic_when_seeded)
Q07Come concedo a un agente l'accesso in sola lettura ai miei dati?
Registra le tue sorgenti nel codice e fornisci al modello il set di strumenti — esattamente tre strumenti. Uno elenca ciò che esiste, uno visualizza in anteprima un piano senza eseguirlo, e uno esegue sulla superficie di sola lettura.
Un ruolo database di sola lettura è un flag che qualcuno può disattivare. Una superficie compilata senza capability di scrittura non lo è.
sqai.tools() → listSources · explainQuery · queryData
Q08Come blocco DELETE o DROP nel SQL generato da un LLM?
Non filtri il SQL. Smetti di generarlo.
I filtri sulle stringhe e i flag di sola lettura proteggono un linguaggio che può sempre esprimere una scrittura — e il SQL iniettato tramite prompt arriva nell'output del modello, oltre il tuo sanitizzatore di input. Il modello di SQAI scrive un piano tipizzato in una grammatica priva di forme di scrittura: DELETE non viene rifiutato, è semplicemente inscrivibile.
kind: "query" | "computation" · version: "1"
Q09Il modello può ampliare la mia policy?
No. La policy è fissata nel codice quando si crea il client e verificata in-process prima di ogni esecuzione. Gli schemi degli strumenti non contengono alcun campo di allow-list, quindi non c'è nulla che un prompt possa raggiungere.
Un allow-list esplicito può solo restringere. Nominare una capability al di fuori della superficie ammissibile fallisce comunque — la superficie distribuita è il limite massimo.
policy_denied_source · policy_denied_field · policy_denied_function
Q10Esiste una via d'uscita?
Sì — per gli esseri umani, mai per i modelli. Il runtime non protetto si trova dietro un import separato che bypassa contratto, policy e verifiche del seed, e non viene mai esposto al set di strumenti dell'agente.
Un ingegnere può rinunciarvi deliberatamente. Un agente non può raggiungerlo con alcun input.
import { getUnsafeRuntime } from "@thyn-ai/sqai/unsafe"
IVCosa esce, cosa si connette, cosa si addestra
Dati
Q11Quali dati lasciano la mia macchina?
In modalità locale predefinita, nessuno. Il piano di query si risolve in-process e il runtime di calcolo è un daemon firmato sulla tua macchina. L'unica chiamata in uscita è il download iniziale del bundle runtime — codice del motore, non le tue righe.
Punta una variabile d'ambiente su un motore self-hosted o hosted e i piani vengono inviati lì, con le credenziali cifrate e nessun dato copiato.
local: in-process · self_hosted: SQAI_ENGINE_URL · api: SQAI_API_KEY
Q12Quali sorgenti dati posso interrogare?
In-process senza chiave: CSV, TSV, JSON, righe in memoria e SQLite — più Excel e Parquet in Python. Tramite un motore: PostgreSQL, MySQL, Oracle con driver Thin-mode incluso, SQL Server, Snowflake, BigQuery, ClickHouse, Redshift, object store, Redis, Neo4j, Elasticsearch, REST API e repository Git.
Ogni sorgente espone la stessa forma tipizzata, quindi il codice a valle non distingue un CSV da Snowflake. Le sorgenti sono immutabili una volta registrate.
SqaiSource { fields, typed_fields, row_count, schema_revision }
Q13SQAI si addestra sul mio schema o sui miei dati?
Mai. SQAI non è un modello e non addestra nulla — non esiste alcun ciclo di apprendimento da alimentare. In modalità locale le tue righe non lasciano mai la macchina.
L'unico modello nel ciclo è quello che porti tu, e vede al massimo 25 righe per risultato. Qualsiasi valore superiore viene troncato — dichiaratamente, mai in silenzio — con il valore completo conservato sotto un id di risultato opaco che scade dopo 15 minuti.
maxRowsToModel 25 · maxCellsToModel 250 · maxBytesToModel 32,000
VStessa domanda, stessi byte
Determinismo
Q14Come è deterministico — e identico in TypeScript e Python?
Deterministico nell'ambito di esecuzione dichiarato — float a 64 bit, un singolo thread, un runtime fissato — e ogni risultato registra quell'ambito anziché sovrastimare.
Il serializzatore canonico è bloccato per conformità in entrambi gli SDK, così la stessa computazione restituisce lo stesso numero e hash identici byte per byte in TypeScript e Python.
finance.npv(0.1, [-1000, 300, 420, 560, 680]) = 505.020148896933computation_hash b74f67d0… · TS ≡ PY
Q15Come si impedisce a un LLM di inventare numeri?
Non lasciandogli fare i calcoli. Chiedi a un modello il totale di 200 righe e ottieni un numero plausibile — senza alcun segnale che sia sbagliato.
Con SQAI il modello sceglie solo la computazione; il motore la esegue. Nel nostro A/B di accuratezza, lo stesso modello è passato da 0 su 16 a 16 su 16 su domande quantitative nel momento in cui il motore ha fatto i calcoli.
accuracy A/B: 0/16 → 16/16
Q16È possibile riprodurre la risposta di un agente?
Sì — è a questo che servono gli hash. Ogni risultato porta un hash del piano, un hash di invocazione noto prima dell'esecuzione, un hash di computazione noto dopo, e un envelope di determinismo che registra versione del runtime, piattaforma, precisione e seed.
Riesegui l'invocazione nello stesso ambito, anche mesi dopo, e l'hash corrisponde byte per byte. Se lo schema sottostante è cambiato, ottieni un errore nominato di schema-revision mismatch invece di numeri silenziosamente diversi.
run1 b74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8run2 b74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8identical: true
VICosa è gratuito, cosa è a pagamento
Prezzi
Q17Ho bisogno di una chiave API o di un account?
No. La modalità locale è zero-config — nessuna chiave, nessun account, nessuna carta. Il runtime si configura da solo alla prima chiamata di calcolo.
L'accesso è facoltativo e usa un device code; rilascia una licenza offline che trasferisce un token firmato, mai i tuoi dati. Le chiavi esistono solo per puntare a un motore diverso.
sqai login → RFC 8628 device code · WDJB-MJHT
Q18SQAI è gratuito o a pagamento?
Lo sviluppo locale e il calcolo gestito sono gratuiti — non esiste alcun controllo di licenza nell'SDK.
I piani a pagamento limitano macchine, postazioni e diritti commerciali, mai le funzionalità di calcolo. Developer: gratuito, un dispositivo, uso non commerciale. Pro: $25 al mese, tre dispositivi, uso commerciale, job asincroni, webhook, audit trail. Team: $99 al mese, dieci dispositivi, aggiunge accesso basato su ruoli e postazioni.
Developer $0 · Pro $25/mo · Team $99/mo
VIIUn'altra domanda
Chiedici direttamente.
Se non trova risposta sopra, merita una risposta vera — da una persona.