Las cuatro operaciones
require llm
let motivo be reason "¿por qué subieron los tickets?" given metricas
let accion be decide between ["reembolsar", "reponer", "escalar"] given ticket
let resumen be analyze given historial
let correo be generate "una respuesta cordial" given queja
decide garantiza (con modelo) que la respuesta es una de TUS opciones, byte a byte — nunca texto libre inventado.
- Todas requieren la capacidad
llm: se audita leyendo los require del programa.
- Como los cuatro nombres son palabras reservadas, no puedes llamar
decide a una variable o tarea tuya.
Modo offline: el programa no se cae
Sin proveedor configurado, las operaciones devuelven marcadores (por ejemplo decide → "[decision pending]") y el programa sigue. Por eso existe llm_available():
let eleccion be decide between ["reembolsar", "escalar"] given ticket
when llm_available()
print("el modelo eligió: " + eleccion)
otherwise
-- regla determinista de respaldo: el negocio no se detiene
let respaldo be when ticket.monto <= 5000 then "reembolsar" otherwise "escalar"
print("sin modelo, aplica la regla: " + respaldo)
Reglas del dueño: la IA no manda
require memory("politicas")
add_rule("tope_reembolso", "must", "monto <= 10000", "finanzas")
let violaciones be check_rules("finanzas", {"monto": 25000})
when length(violaciones) > 0
print("bloqueado por regla del dueño")
La decisión puede venir del modelo, pero check_rules es determinista y tiene la última palabra. IA propone, las reglas disponen.