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

Q01–Q05
Q01

Cos'è 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

Q03

Quali 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

Q04

Posso 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

Q05

Qualcosa è 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–Q10
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)

Q07

Come 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

Q08

Come 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"

Q09

Il 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

Q10

Esiste 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"

Perché gli agenti non dovrebbero scrivere SQL

IVCosa esce, cosa si connette, cosa si addestra

Dati

Q11–Q13
Q11

Quali 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

Q12

Quali 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 }

Q13

SQAI 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

Connetti i tuoi dati

VStessa domanda, stessi byte

Determinismo

Q14–Q16
Q14

Come è 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

Q15

Come 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

Determinismo, in dettaglio

VICosa è gratuito, cosa è a pagamento

Prezzi

Q17–Q18
Q17

Ho 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

Q18

SQAI è 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.

Parla con il teamLeggi la documentazione