Scripting IA - journal trompeur...Je viens d'analyser un code créé par une IA que j'apprécie moins :
dt = Open("$SAMPLE_DATA/Big Class.jmp");
kd = dt << KDTable("hello");
result = kd << K Nearest Rows(1, 3);<BR />print("finished");
Le journal indiquait :
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 ...
Automatisation et scriptageRe: Programmation de l'IA - journal trompeur ...JMP est conçu ainsi. J'aimerais aussi qu'il en soit autrement. Ce comportement est dû à deux éléments de sa conception : (1) les objets ignorent les messages qu'ils ne comprennent pas et (2) les messages peuvent être chaînés. Il y a plusieurs versions, JMP a ajouté une option permettant à certains objets de signaler les messages non reconnus. Son efficacité dépend de l'objet ; je pense que les boîtes d'affichage utilisent toutes un code commun pour gérer ce cas.
Enchaînement de messages, comme tb<
Selon ces règles, la ligne 2 de votre exemple fait exactement ce qu'elle est censée faire.
Je pense que le fait d'ignorer silencieusement les messages non reconnus provient probablement de l'étude de la gestion des messages sous Windows (au siècle dernier) ; il existe un nombre incroyable de messages qui sont ignorés silencieusement (comme le fait que la souris se déplace au-dessus de vous , mais que vous n'ayez aucune intention de répondre). Dans JMP, cela pourrait être utilisé comme ceci : { textBox, outlineBox } << setcolor("red") << close(1) ; où n'importe quelle boîte de la liste qui comprend < <<>
La différence entre les deux messages que vos exemples envoient à la table de données est que kdtable() est une fonction globale de type plateforme tandis que < < m> est un message connu uniquement d'un objet kdtable. La table de données elle-même apprécie de recevoir des messages ressemblant à des lancements de plateforme, dt< Par exemple. Il y a un bug ici. Je soupçonne que kdtable soit en cause car il ne signale pas de problème avec l'argument « hello », et la table de données pourrait croire qu'une plateforme a été lancée. Peut-être une plateforme vide (désolé, cela n'existe pas).
kdtable("hello")
/*:
Empty()
Re: Programmation de l'IA - journal trompeur ...Salut
@Craige_Hales , merci beaucoup pour ces explications détaillées – Bien sûr, je comprends
pourquoi JSL a été conçu ainsi à l'époque (ignorance silencieuse des messages inconnus + chaînage renvoyant l'objet de gauche).
Cependant, j'espère également que les développeurs de JSL se rendent compte que ce modèle est devenu quelque peu « incompatible » avec le codage des vibrations assisté par l'IA d'aujourd'hui :
Les LLM inventent allègrement des messages , des appels de plateforme et des arguments, et, avec le comportement actuel, ils sont souvent tout simplement ignorés. Non seulement cela crée de la confusion, mais cela peut aussi transformer le débogage en un véritable enfer : on finit par traquer le symptôme au lieu de la cause profonde.
Les développeurs pourraient peut-être proposer une option au niveau JSL pour activer le « mode débogage IA / mode bavard » :
activer délibérément des diagnostics bruyants, mais incroyablement utiles, pour certaines classes d'objets (par exemple, objets d'affichage, plateformes, objets scriptables généraux).
L'idée est que, lorsque le résultat final semble étrange, vous activez ce mode et JMP commence à signaler les problèmes dès leur apparition, au lieu de laisser passer l'erreur et de ne s'alarmer que bien plus tard. J'ai ajouté cette fonctionnalité à la liste de souhaits pour que vous puissiez voter :
mode bavardage() pour le débogage de l'IA.
Merci encore pour ces informations et pour avoir confirmé qu'il s'agit d'un domaine où les comportements pourraient être améliorés.