ReferenciaCLI y API

Funciones Matemáticas, CLI y API

Guía completa de todas las funciones que MatrixAI puede ejecutar, cómo llamarlas desde la terminal y cómo integrarlas en tu aplicación mediante la API HTTP. No hace falta haber leído los contratos técnicos.

~30 min de lectura📖 12 secciones🔒 Solo miembros
Tarjeta de referencia rápida — funciones matemáticas MatrixAI
Tarjeta de referencia rápida — todas las funciones disponibles de un vistazo

1. ¿Qué son las funciones matemáticas en MatrixAI?

Cuando defines un modelo en MatrixAI (con un archivo .mxai o .mx), describes qué cálculos debe hacer ese modelo usando funciones matemáticas. Es como una hoja de cálculo potente, pero que además puede aprender de datos.

Hay tres capas que vale la pena distinguir:

Capa¿Qué es?Ejemplo
Registro `.mx`Mini-lenguaje para escribir fórmulas personalizadasscore(x) = 0.6 * relevance(x) + 0.4 * coherence(x)
Kinds `.mxai`Cómo clasifica MatrixAI cada expresión internamente`softmax_linear`, `sigmoid_linear`, `symbolic_expr`…
Backend entrenableQué funciones pueden ajustar sus parámetros con datos realesSolo `softmax_linear` y `sigmoid_linear` hoy
Regla clave: MatrixAI puede ejecutar más cosas de las que puede entrenar. Si una función no es «entrenable», puedes usarla en tus modelos, pero su comportamiento será fijo y no aprenderá de datos.
# Ejemplo: score.mx
score(x) = 0.6 * relevance(x) + 0.4 * coherence(x)
utility(x) = score(x) - 0.2 * cost(x)

2. Operaciones numéricas básicas

Son las matemáticas de toda la vida: disponibles como funciones en cualquier expresión .mx.

FunciónQué haceEjemplo
add(a, b)Sumaadd(3, 5)` → `8.0
sub(a, b)Restasub(10, 4)` → `6.0
mul(a, b)Multiplicaciónmul(2.5, 4)` → `10.0
div(a, b)División (rechaza división por cero)div(9, 3)` → `3.0
pow(base, exp)Potenciapow(2, 8)` → `256.0
sqrt(x)Raíz cuadradasqrt(16)` → `4.0
abs(x)Valor absolutoabs(-7)` → `7.0
min(...)El mínimo de varios valoresmin(3, 1, 7)` → `1.0
max(...)El máximo de varios valoresmax(3, 1, 7)` → `7.0
mean(...)La media aritméticamean(2, 4, 6)` → `4.0
sum(...)La suma de todossum(1, 2, 3, 4)` → `10.0
# candidatos.mx
puntuacion(c)     = 0.5 * c.experiencia + 0.5 * c.prueba_tecnica
diferencia(c1,c2) = sub(puntuacion(c1), puntuacion(c2))
mejor(c1, c2)     = max(puntuacion(c1), puntuacion(c2))

3. Transformaciones y probabilidad

normalize(x) — Recortar al rango [0, 1]

normalize(1.5)   → 1.0   # recortado al máximo
normalize(-0.3)  → 0.0   # recortado al mínimo
normalize(0.7)   → 0.7   # sin cambios

clip(x, lo, hi) — Recortar a cualquier rango

clip(150, 0, 100)  → 100.0
clip(-5, 0, 10)   → 0.0
clip(7, 0, 10)    → 7.0

scale(x, old_min, old_max, new_min, new_max) — Reescalar de un rango a otro

# Convertir nota del 0-10 al 0-100
scale(7.5, 0, 10, 0, 100)  → 75.0

# Temperatura Celsius a escala 0-1
scale(37, 35, 42, 0, 1)    → 0.285...

sigmoid(x) — Convertir cualquier número a una probabilidad

sigmoid(0)    → 0.5      # punto de equilibrio: 50% de probabilidad
sigmoid(5)    → 0.993    # muy probablemente sí
sigmoid(-5)   → 0.007    # muy probablemente no

# riesgo_credito.mxai
riesgo(cliente) = sigmoid(2.5 * cliente.historial_impagos - 1.8 * cliente.ingresos + 0.3)

softmax(values) — Convertir puntuaciones en probabilidades que sumen 1

softmax([2.0, 1.0, 0.5]) → [0.626, 0.230, 0.143]
# 62,6% de probabilidad para la primera opción

4. Funciones de puntuación semántica

FunciónClave dictPor defectoUso
relevance(x)"relevance"0.0¿Qué tan relevante es este resultado?
coherence(x)"coherence"0.0¿Tiene sentido interno? ¿Es consistente?
confidence(x)"confidence"0.0¿Qué tan seguro está el modelo de su respuesta?
novelty(x)"novelty"0.0¿Es información nueva?
safety(x)"safety"1.0¿Es seguro? (optimista por defecto: 1.0)
quality(x)"quality"0.0Calidad general del resultado
# ranking.mx
valor_respuesta(r) = 0.4 * relevance(r) + 0.3 * coherence(r) + 0.2 * confidence(r) + 0.1 * safety(r)

5. Funciones de coste

FunciónClave dictUso
cost(x)"cost"Coste general (computación, dinero, recursos)
latency(x)"latency"Tiempo de respuesta
token_cost(x)"token_cost"Coste en tokens (útil con LLMs)
# eficiencia.mx
utilidad(opcion) = quality(opcion) - 0.3 * cost(opcion) - 0.2 * latency(opcion)

6. Selección y ranking

Estas funciones no son entrenables. No aprenden de datos. Son operaciones de selección que se ejecutan en tiempo de inferencia.
FunciónQué hace
argmax(items, score_fn)Devuelve el elemento con el score más alto
topk(items, score_fn, k)Devuelve los k mejores elementos en orden descendente
threshold(items, score_fn, min_score)Devuelve solo los elementos que superan un score mínimo
rank(items, score_fn)Devuelve la lista completa ordenada de mayor a menor score
# candidatos = ["A", "B", "C"] con scores: A=0.7, B=0.9, C=0.4
argmax(candidatos, mi_score_fn)          → "B"
topk(candidatos, mi_score_fn, 2)         → ["B", "A"]
threshold(candidatos, mi_score_fn, 0.6)  → ["A", "B"]
rank(candidatos, mi_score_fn)            → ["B", "A", "C"]

7. Arquitecturas entrenables: qué puede aprender MatrixAI

Clasificación multiclase — softmax_linear

# email_classifier.mxai (fragmento)
predict(email) = softmax(W1 * email + b1)
# W1 y b1 se aprenden de ejemplos etiquetados — pérdida: cross_entropy

Casos de uso: clasificar emails, categorizar incidencias, reconocer intención de usuario.

Clasificación binaria / riesgo — sigmoid_linear

# riesgo_caida.mxai (fragmento)
riesgo(paciente) = sigmoid(W1 * paciente + b1)
# Entrenado con binary_cross_entropy

Casos de uso: riesgo de crédito, detección de fraude, riesgo médico binario, churn.

Lo que aún no es entrenable (pero es ejecutable)

  • Sumas ponderadas manuales (symbolic_weighted_sum)
  • Normalización y escalado
  • Agregaciones (mean, max, min sobre listas)
  • Reglas discretas (argmax, vote)
  • Atención, embeddings entrenables, transformers, redes profundas

8. Traducción de reglas discretas a matemática continua

mathematize traduce reglas tipo «si X entonces Y» a expresiones matemáticas continuas que los modelos pueden procesar y auditar.

si riesgo > 0.8 entonces alertar
si ingresos < 20000 y deuda > 0.5 entonces rechazar
Regla de entradaExpresión generadaTipo
si riesgo > 0.8 entonces alertarsigmoid(20 * (riesgo - 0.8))Umbral suave
si x < 0.2 entonces accionsigmoid(20 * (0.2 - x))Umbral suave invertido
si a > 0.5 y b > 0.7sigmoid(a - 0.5) * sigmoid(b - 0.7)AND probabilístico
clasificar x en a, b, csoftmax([score_a, score_b, score_c])Multiclase
elegir el mejor de candidatosargmax(scores)Selección
Cómo usar las funciones en MatrixAI desde la CLI y la API REST
Referencia visual — expresiones CLI y endpoints REST API

9. Cómo usar las funciones desde la CLI

matrixai eval score.mx --input datos.json
matrixai eval score.mx --input datos.json --trace
matrixai eval score.mx --input datos.json --call score

matrixai mathematize mis_reglas.txt
echo "si riesgo > 0.8 entonces alertar" | matrixai mathematize -

matrixai validate mi_modelo.mxai
matrixai lint mi_modelo.mxai
matrixai backend-report mi_modelo.mxai --target torch
matrixai graph mi_modelo.mxai --format mermaid

matrixai train-supervised "un modelo que clasifica emails como spam, normal o urgente" \
  --train-data emails_train.csv \
  --eval-data emails_eval.csv \
  -o runs/email_v1/

matrixai serve email.mxai \
  --params runs/email_v1/params.best.json \
  --api-key mi_clave_secreta \
  --port 8000

matrixai studio --port 8765 --open

10. Cómo usar las funciones desde la API REST

ServidorPuerto por defectoPara qué
Producción8000Servir modelos entrenados. Requiere API key.
Studio8080Desarrollar, entrenar y explorar. Sin autenticación.
# Autenticación
curl -H "Authorization: Bearer mi_clave" http://localhost:8000/predict ...
curl -H "X-API-Key: mi_clave" http://localhost:8000/predict ...

# Predicción individual
curl -X POST http://localhost:8000/predict \
  -H "Authorization: Bearer mi_clave" \
  -H "Content-Type: application/json" \
  -d '{"age": 35, "income": 52000, "credit_history": "good"}'

# Entrenamiento asíncrono
curl -X POST http://localhost:8080/api/train-start \
  -d '{ "mxai_text": "...", "training_text": "...", "csv_text": "..." }'
# → { "ok": true, "job_id": "job-20260603-xyz789" }

curl http://localhost:8080/api/train-status/job-20260603-xyz789
# status: running | done | error | cancelled | timeout

11. Flujos completos de ejemplo

Ejemplo 1: clasificador de emails desde cero

matrixai prompt "clasifica emails como spam, normal o urgente" -o email.mxai
matrixai lint email.mxai
matrixai generate-training email.mxai "clasificar emails" -o email.mxtrain
matrixai generate-dataset email.mxai --training email.mxtrain --rows 500 --mode coherent -o datos/
matrixai train email.mxai --training email.mxtrain -o runs/email_v1/
matrixai evaluate email.mxai --params runs/email_v1/params.best.json --training email.mxtrain
matrixai run email.mxai --params runs/email_v1/params.best.json \
  --input '{"subject": "Oferta exclusiva", "sender_score": 0.15}'
matrixai serve email.mxai --params runs/email_v1/params.best.json --api-key mi_clave --port 8000

Ejemplo 2: traducir reglas de negocio a expresiones matemáticas

# reglas_credito.txt
# si historial_impagos > 0.6 entonces rechazar_automatico
# si ingresos < 15000 y deuda > 0.5 entonces alto_riesgo
# clasificar solicitud en aprobada, revision_manual, rechazada

matrixai mathematize reglas_credito.txt

12. Referencia rápida

FunciónTipoEntrenable
add`, `sub`, `mul`, `divAritméticaNo
pow`, `sqrt`, `absAritméticaNo
min`, `max`, `mean`, `sumAgregaciónNo
normalize`, `clip`, `scaleTransformaciónNo
sigmoid(x)ProbabilidadSí (en `sigmoid_linear`)
softmax(values)ProbabilidadSí (en `softmax_linear`)
relevance`, `coherence`, `confidenceSemánticaNo
novelty`, `safety`, `qualitySemánticaNo
cost`, `latency`, `token_costCosteNo
argmax`, `topk`, `threshold`, `rankSelecciónNo
Qué quiero hacerComando
Evaluar una fórmula `.mx`matrixai eval archivo.mx --input datos.json
Traducir reglas a matemáticasmatrixai mathematize reglas.txt
Validar un modelomatrixai validate modelo.mxai
Ver el grafo de un modelomatrixai graph modelo.mxai
Generar modelo desde textomatrixai prompt "descripción" -o modelo.mxai
Entrenar un modelomatrixai train modelo.mxai --training contrato.mxtrain -o runs/
Predecir con un modelomatrixai run modelo.mxai --input entrada.json --params params.json
Servir como APImatrixai serve modelo.mxai --params params.json --api-key clave
Abrir Studiomatrixai studio --open
CódigoSignificado
200Todo correcto
400JSON malformado en la petición
401API key ausente o incorrecta
422Validación fallida
429Demasiadas peticiones (> 60/min)
500Error interno del servidor