Scripting de IA: registro engañoso...Acabo de analizar un código creado por una IA menos favorita:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
kd = dt << KDTable("hello");
result = kd << K Nearest Rows(1, 3);<BR />print("finished");
El registro decía:
Object 'Data Table' does not recognize the message 'K Nearest Rows'; perhaps you mean one of these: <
<<<<<<<<
finished
Sure: if a scriptable object doesn't understand a message, it shows such a warning message in the log.
And a Data Table doesn't understand the the message K nearest Rows().
But wait, why is kd a data table?!
This is easy to answer: In the previous line of code, the data table doesn't understand the command << KDTable("hello");
And therefore, instead of returning a KD table, it returns a reference to itself.
Unfortunately, here is NO warning message:
Object 'Data Table' does not recognize the message 'KD Table("hello")'
A JSL scripter will spot the error within seconds : KD Table("hello") , tztztz!
But you’d probably agree—it’s hard to find the error from the information JMP provides!
How to escape this issue? Is there a general rule or trick?
Can JMP / the JSL interpreter be improved to help AI and the users understand the errors?
Users with paranoia could add If (type(name Expr(returned object) == ...) after every message sent to a scriptable object. Hm ...
Automatización y scriptingRe: Programación de IA - registro engañoso...JMP está diseñado así. Ojalá fuera diferente. Los aspectos del diseño que permiten esto son (1) que los objetos ignoren los mensajes que no comprenden y (2) que los mensajes se puedan encadenar. Hace varias versiones, JMP añadió una preferencia para que algunos objetos reportaran mensajes no reconocidos. Su funcionamiento depende del objeto; creo que todos los cuadros de visualización comparten un código común para gestionarlo.
Encadenamiento de mensajes, como tb<
Según esas reglas, la línea 2 de su ejemplo hace lo que se supone que debe hacer.
Creo que los mensajes no reconocidos ignorados silenciosamente probablemente se originaron al estudiar el manejo de mensajes de MS-Windows (siglo anterior); hay una increíble cantidad de mensajes que se ignoran silenciosamente (como si el mouse se moviera sobre usted , pero no tiene intención de responder al mouse). En JMP se podría usar así: { textBox, outlineBox } << setcolor("red") << close(1); donde cualquier cuadro en la lista que comprenda < <<>
La diferencia entre los dos mensajes que sus ejemplos envían a la tabla de datos es que tablakd() es una función similar a una plataforma global, mientras que < < m> Es un mensaje que solo conoce un objeto kdtable. A la propia tabla de datos le gusta ver mensajes que parecen lanzamientos de plataformas, dt< Por ejemplo, hay un error. Sospecho que kdtable tiene la culpa al no informar un problema con el argumento "hello", y la tabla de datos podría pensar que se lanzó una plataforma. Quizás la plataforma vacía (lo siento, no existe tal cosa).
kdtable("hello")
/*:
Empty()
Re: Programación de IA - registro engañoso...Hola
@Craige_Hales , muchas gracias por la información detallada. Claro, puedo entender
por qué JSL se diseñó de esta manera en aquel entonces (ignoración silenciosa de mensajes desconocidos + encadenamiento que devuelve el objeto de la izquierda).
Sin embargo, también espero que los desarrolladores de JSL vean que este patrón se ha vuelto algo "incompatible" con la codificación de vibración asistida por IA actual:
Los LLM inventan mensajes, llamadas a plataformas y argumentos con gusto , y con el comportamiento actual, a menudo se ignoran sin hacer mucho ruido. Esto no solo genera confusión, sino que también puede convertir la depuración en un auténtico infierno: se termina buscando el síntoma en lugar de la causa raíz.
Quizás los desarrolladores puedan proporcionar un interruptor a nivel JSL para el “modo de depuración de IA / modo de conversación” :
activar deliberadamente diagnósticos ruidosos, pero increíblemente útiles, para clases de objetos seleccionados (por ejemplo, objetos de visualización, plataformas, objetos programables generales).
La idea es que, cuando el resultado final se vea extraño, se active este modo y JMP empiece a quejarse justo cuando las cosas se descontrolen, en lugar de fallar silenciosamente y solo gritar mucho después. He añadido esto a la lista de deseos para votar:
modo conversacional() para depuración con IA.
Gracias nuevamente por la información y por confirmar que esta es un área en la que se podría mejorar el comportamiento.