IEl registro de preguntas
Respondido por escrito.
Todo lo que los equipos preguntan antes de confiar SQAI a un agente — qué nunca puede hacer, qué sale de la máquina, qué prueba una reproducción, qué cuesta. Respuestas concisas, cifras reales y las páginas que desarrollan la historia completa.
IIQué es, qué velocidad tiene, dónde se ejecuta
Producto
Q01¿Qué es SQAI?
Structured Query AI — la herramienta gobernada y de solo lectura para datos estructurados en agentes de IA. Una pregunta se convierte en un plan tipado y verificado por política; el plan se ejecuta en un motor determinista; la respuesta regresa con hashes que la reproducen.
Una sola superficie cubre archivos y bases de datos en vivo, junto con 4.778 capacidades de cómputo de solo lectura en 445 módulos — desde medianas hasta valoración de opciones.
stats.median · finance.npv · option_pricing.black_scholes_call
Q02¿Es rápido?
No hay arranque en frío por consulta. El plano de consulta se ejecuta en proceso — submilisegundo en archivos típicos.
El cómputo se aprovisiona una sola vez: la primera llamada descarga e inicializa el runtime firmado en unos 110 segundos. A partir de ahí el daemon permanece activo y residente, y una llamada de cómputo en caliente mide 0,83–0,93 ms.
finance.npv = 0.83–0.93 ms (warm) · first provision ≈ 110 s
Q03¿Qué plataformas son compatibles?
El runtime firmado se distribuye para macOS con Apple Silicon y Linux x64. En Windows, una llamada de cómputo gestionado devuelve un error estructurado y con nombre en lugar de fallar abruptamente.
El plano de consulta funciona en cualquier entorno. También los modos autoalojado y alojado, ya que el cómputo se envía a un motor remoto. Node 20 o superior; Python 3.10 o superior.
darwin-arm64 · linux-x64 · node ≥ 20 · python ≥ 3.10
Q04¿Puedo distribuir un runtime más pequeño?
Sí. Por defecto SQAI instala el paquete fijado que cubre toda la superficie expuesta. Indica solo los módulos que necesitas y el servicio de compilación genera un paquete firmado y fijado con sha256 para ese subconjunto, almacenado en caché por hash de filtro.
Los daemons filtrados obtienen su propio socket y puerto, por lo que nunca colisionan con el completo.
SQAI_RUNTIME_MODULES → POST /v1/runtime/build · sha256-pinned
Q05Algo falló. ¿Cómo lo depuro?
Las herramientas del agente nunca lanzan excepciones. Los errores regresan como salida estructurada con un status y un código que identifica el rechazo — una denegación de política, una capacidad desconocida, una semilla ausente.
Para todo lo que hay bajo las herramientas, un único comando verifica la instalación, el runtime y la paridad entre lenguajes en un solo paso.
output.status === "error" · sqai doctor --parity --json
IIISolo lectura por construcción, no por parámetro
Seguridad
Q06¿Es realmente de solo lectura?
Sí — por construcción, no por permiso. El modelo expresa intención tipada, nunca SQL; SQAI la valida contra un contrato de capacidades fijado por hash, aplica tu política y solo entonces ejecuta.
De las 4.778 capacidades, 4.574 están expuestas: únicamente las que son de solo lectura y deterministas, o deterministas con semilla. Las 204 que no superan la prueba — incluida toda escritura — están ausentes de la superficie empaquetada. Ningún ajuste puede alcanzar lo que nunca se distribuyó.
read_only && (deterministic || deterministic_when_seeded)
Q07¿Cómo doy a un agente acceso de solo lectura a mis datos?
Registra tus fuentes en código y entrega al modelo el conjunto de herramientas — exactamente tres. Una lista lo que existe, otra previsualiza un plan sin ejecutarlo, y la tercera ejecuta contra la superficie de solo lectura.
Un rol de base de datos de solo lectura es un parámetro que alguien puede desactivar. Una superficie compilada sin capacidades de escritura, no.
sqai.tools() → listSources · explainQuery · queryData
Q08¿Cómo bloqueo DELETE o DROP en SQL generado por un LLM?
No filtras el SQL. Dejas de generarlo.
Los filtros de cadenas y los parámetros de solo lectura protegen un lenguaje que siempre puede expresar una escritura — y el SQL inyectado por prompt llega en la salida del modelo, más allá de tu sanitizador de entrada. El modelo de SQAI escribe un plan tipado en una gramática sin formas de escritura: DELETE no se rechaza, es inescribible.
kind: "query" | "computation" · version: "1"
Q09¿Puede el modelo ampliar mi política?
No. La política queda fijada en código al crear el cliente y se verifica en proceso antes de cada ejecución. Los esquemas de herramientas no contienen ningún campo de lista de permisos, por lo que no hay nada a lo que un prompt pueda acceder.
Una lista de permisos explícita solo puede restringir. Nombrar una capacidad fuera de la superficie elegible sigue fallando — la superficie empaquetada es el límite máximo.
policy_denied_source · policy_denied_field · policy_denied_function
Q10¿Existe una vía de escape?
Sí — para personas, nunca para modelos. El runtime sin restricciones vive detrás de una importación separada que omite el contrato, la política y las verificaciones de semilla, y nunca se expone al conjunto de herramientas del agente.
Un ingeniero puede optar por salir deliberadamente. Un agente no puede alcanzarlo con ninguna entrada.
import { getUnsafeRuntime } from "@thyn-ai/sqai/unsafe"
IVQué sale, qué conecta, qué entrena
Datos
Q11¿Qué datos salen de mi máquina?
En el modo local predeterminado, ninguno. El plano de consulta se resuelve en proceso y el runtime de cómputo es un daemon firmado en tu máquina. La única llamada saliente es la descarga inicial del paquete de runtime — código del motor, no tus filas.
Apunta una variable de entorno a un motor propio o alojado y los planes se envían allí, con credenciales cifradas y sin copiar datos.
local: in-process · self_hosted: SQAI_ENGINE_URL · api: SQAI_API_KEY
Q12¿Qué fuentes de datos puedo consultar?
En proceso sin clave: CSV, TSV, JSON, filas en memoria y SQLite — más Excel y Parquet en Python. A través de un motor: PostgreSQL, MySQL, Oracle con driver Thin-mode incluido, SQL Server, Snowflake, BigQuery, ClickHouse, Redshift, almacenes de objetos, Redis, Neo4j, Elasticsearch, APIs REST y repositorios Git.
Cada fuente expone la misma forma tipada, de modo que el código posterior no distingue un CSV de Snowflake. Las fuentes son inmutables una vez registradas.
SqaiSource { fields, typed_fields, row_count, schema_revision }
Q13¿SQAI entrena con mi esquema o mis datos?
Nunca. SQAI no es un modelo y no entrena nada — no existe ningún bucle de aprendizaje que alimentar. En modo local, tus filas no abandonan la máquina en ningún momento.
El único modelo en el bucle es el que tú aportas, y ve como máximo 25 filas por resultado. Todo lo que supere ese límite se trunca — de forma declarada, nunca silenciosa — y el valor completo queda bajo un id de resultado opaco que expira a los 15 minutos.
maxRowsToModel 25 · maxCellsToModel 250 · maxBytesToModel 32,000
VMisma pregunta, mismos bytes
Determinismo
Q14¿Cómo es determinista — e idéntico en TypeScript y Python?
Determinista dentro del ámbito de ejecución declarado — flotantes de 64 bits, un único hilo, un runtime fijado — y cada resultado registra ese ámbito en lugar de prometer más de lo que ofrece.
El serializador canónico está bloqueado por conformidad en ambos SDK, de modo que el mismo cómputo devuelve el mismo número y hashes idénticos byte a byte en TypeScript y Python.
finance.npv(0.1, [-1000, 300, 420, 560, 680]) = 505.020148896933computation_hash b74f67d0… · TS ≡ PY
Q15¿Cómo se evita que un LLM invente números?
No dejándole hacer la aritmética. Pide a un modelo el total de 200 filas y obtendrás un número plausible — sin ninguna señal de que sea incorrecto.
Con SQAI el modelo solo elige el cómputo; el motor lo ejecuta. En nuestro A/B de precisión, el mismo modelo pasó de 0 de 16 a 16 de 16 en preguntas cuantitativas en el momento en que el motor asumió el cálculo.
accuracy A/B: 0/16 → 16/16
Q16¿Se puede reproducir lo que respondió un agente?
Sí — para eso sirven los hashes. Cada resultado lleva un hash de plan, un hash de invocación conocido antes de la ejecución, un hash de cómputo conocido después, y un sobre de determinismo que registra la versión del runtime, la plataforma, la precisión y la semilla.
Vuelve a ejecutar la invocación dentro del mismo ámbito, meses después, y el hash coincide byte a byte. Si el esquema subyacente cambió, obtienes un error de revisión de esquema con nombre en lugar de números silenciosamente distintos.
run1 b74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8run2 b74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8identical: true
VIQué es gratuito, qué tiene límite
Precios
Q17¿Necesito una clave API o una cuenta?
No. El modo local es sin configuración — sin clave, sin cuenta, sin tarjeta. El runtime se aprovisiona solo en la primera llamada de cómputo.
Iniciar sesión es opcional y usa un código de dispositivo; emite una licencia offline que transfiere un token firmado, nunca tus datos. Las claves solo existen para apuntar a un motor distinto.
sqai login → RFC 8628 device code · WDJB-MJHT
Q18¿SQAI es gratuito o de pago?
El desarrollo local y el cómputo gestionado son gratuitos — no hay ninguna verificación de licencia en el SDK.
Los niveles de pago limitan máquinas, puestos y derechos comerciales, nunca las funciones de cómputo. Developer: gratuito, un dispositivo, uso no comercial. Pro: 25 $ al mes, tres dispositivos, uso comercial, trabajos asíncronos, webhooks, registro de auditoría. Team: 99 $ al mes, diez dispositivos, añade RBAC y puestos.
Developer $0 · Pro $25/mo · Team $99/mo
VIIUna pregunta más
Pregúntanos directamente.
Si no está respondida arriba, merece una respuesta real — de una persona.