Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Scripten in der künstlichen Intelligenz
#1
Es gibt eine Webseite, wo zu Forschungszwecken zwei zufällig ausgewählte künstliche Intelligenzen anonym gegeneinander antreten. Danach soll man bewerten, welche Antwort "besser" war.

Was also liegt näher als mal zu fragen: "Write a door script for OpenSim."

A: Kurz und knackig, ein Quader als "Tür" wird vom Script gleich mit erzeugt, naja.

Code:
Here is a simple door script for OpenSim that you can use in Second Life or other compatible virtual worlds. This script will open and close the door when a user clicks on it.

To use this script, create a new primitive object in OpenSim (such as a box), and then open the object's contents window and paste the script into the "Scripts" tab.

default
{
    state_entry()
    {
        llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX]);
        llSetLinkPrimitiveParamsFast(LINK_SET_FULLBRIGHT,[1.0,1.0,1.0,1.0]);
        llSetLinkPrimitiveParamsFast(LINK_SET_COLOR,<1.0,0.0,0.0>);
        llSetLinkPrimitiveParamsFast(LINK_SET_ALPHA,[0.0,0.0]);
        llSetLinkPrimitiveParamsFast(LINK_SET_ROTATION,<0.0,0.0,0.0,1.0>);
        llSetLinkPrimitiveParamsFast(LINK_SET_POSITION,<0.0,0.0,0.0>);
        llSetLinkPrimitiveParamsFast(LINK_SET_SCALE,<0.5,2.0,0.5>);
        llSetLinkPrimitiveParamsFast(LINK_SET_KEY,["door", ALL_SIDES, 0.0, 0.0]);
    }

    touch_start(integer total_number)
    {
        key id = llDetectedKey(0);
        list detects = llDetectedTouchST(id);
        integer face = (integer)llList2Integer(detects, 0);
        vector offset = llList2Vector(detects, 1);

        if (face == 0 || face == 2)
        {
            // Open door
            llSetLinkPrimitiveParamsFast(LINK_SET_ROTATION,<0.0,90.0,0.0,1.0>);
        }
        else if (face == 1 || face == 3)
        {
            // Close door
            llSetLinkPrimitiveParamsFast(LINK_SET_ROTATION,<0.0,0.0,0.0,1.0>);
        }
    }
}

This script will create a red box that functions as a door. When the user clicks on one of the sides of the box, the door will open or close, depending on the side that was clicked.

You can customize the appearance of the door by changing the values in the llSetLinkPrimitiveParamsFast functions. For example, you can change the size of the door by adjusting the values in the llSetLinkPrimitiveParamsFast(LINK_SET_SCALE,...) function. You can also change the color of the door by adjusting the values in the llSetLinkPrimitiveParamsFast(LINK_SET_COLOR,...) function.

I hope this helps! Let me know if you have any questions.

B: Der Klassiker.

Code:
Here's a basic door script for OpenSim in LSL (Linden Scripting Language):

// Door script for OpenSim

// Variables
integer DOOR_OPEN = FALSE;
rotation rot_init;

default
{
    state_entry()
    {
        rot_init = llGetRot();
    }

    touch_start(integer total_number)
    {
        if (!DOOR_OPEN)
        {
            llRotateAroundAxis(llEuler2Rot(<0.0, 0.0, PI/2>), <0.0, 0.0, 1.0>, rot_init, 1.0);
            DOOR_OPEN = TRUE;
        }
        else
        {
            llRotateAroundAxis(llEuler2Rot(<0.0, 0.0, -PI/2>), <0.0, 0.0, 1.0>, rot_init, 1.0);
            DOOR_OPEN = FALSE;
        }
    }
}

Here's how it works:

    The script starts by declaring a boolean variable DOOR_OPEN to keep track of the door's state (open or closed) and a rotation variable rot_init to store the initial rotation of the door.

    In the state_entry() event, the script stores the initial rotation of the door prim in rot_init.

    The touch_start() event is triggered when the door prim is touched. If DOOR_OPEN is FALSE (i.e., the door is closed), the script rotates the door prim 90 degrees around its local Z-axis using the llRotateAroundAxis() function, and sets DOOR_OPEN to TRUE.

    If DOOR_OPEN is TRUE (i.e., the door is open), the script rotates the door prim -90 degrees around its local Z-axis, and sets DOOR_OPEN to FALSE.

    The llEuler2Rot() function is used to convert Euler angles (in radians) to a rotation quaternion, which is required by the llRotateAroundAxis() function.

This script assumes that the door prim is initially positioned and rotated correctly. You may need to adjust the rotation angles and axis based on your specific setup.

Note that this is a basic example, and you may want to add additional features like sound effects, animations, access control, and more, depending on your requirements.

Beide Scripte mit Erklärtext dabei, ich vote mal B. Big Grin
(Auflösung: Die KI Variante A war "mixtral-8x7b-instruct-v0.1", und B war "claude-3-sonnet-20240229".)

Also da geht was, den Code für bekannte Probleme irgendwo reinklopfen brauchen dann wohl in ein paar Jahren keine Menschen mehr machen. Huh

Und irgendwann fragen uns die Captchas, ob wir auch wirklich Roboter sind. Rolleyes

   
[-] The following 4 users say Thank You to Mareta Dagostino for this post:
  • Dorena Verne, Leora Jacobus, Manfred Aabye, Pius Noel
Zitieren
#2
Nur zur Sicherheit: Keins der beiden Scripte ist lauffähig! Die KI A hat zum Beispiel Konstanten erfunden, und KI B eine Funktion, die es in LSL überhaupt nicht gibt. Außerdem soll eine Tür sich ja beim Öffnen bewegen und nicht einfach in die Zielposition transformieren. Zu guter Letzt würden sich bei vielfacher Drehung um 90° hin und her die Rundungsfehler aufsummieren, oder wenn die Tür z.B. wegen Lag noch gar nicht komplett geöffnet wäre, würde sie beim Schließen durch die Wand gehen.

Referenz: Türscript aus dem LSL Wiki: https://wiki.secondlife.com/wiki/Smooth_Rotating_Door
[-] The following 1 user says Thank You to Mareta Dagostino for this post:
  • Pius Noel
Zitieren
#3
Du musst die Fragestellung so anpassen, dass die KI dich versteht.
"Write a door script for OpenSim." was ist das C# oder LSL oder OSSL woher sollte die das wissen also mixt sie alles.
Leider muss man manchmal 100 Fragestellungen ausprobieren, bis das Ergebnis wie gewünscht ist.
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



[-] The following 1 user says Thank You to Manfred Aabye for this post:
  • Pius Noel
Zitieren
#4
(15.03.2024, 21:30)Manfred Aabye schrieb: Du musst die Fragestellung so anpassen, dass die KI dich versteht.
"Write a door script for OpenSim." was ist das C# oder LSL oder OSSL woher sollte die das wissen also mixt sie alles.
Leider muss man manchmal 100 Fragestellungen ausprobieren, bis das Ergebnis wie gewünscht ist.

Was bedeutet, man muss schon selbst programmieren können um zu beurteilen ob das Ergebnis was taugt ...
Also einfach ne KI auf ein Problem loslassen, ist bislang noch nicht so erfolgreich. Der ganze KI-Hype ist doch irgendwie stark übertrieben. Ja, KI kann hilfreich sein, aber sie liefert dir keine schlüsselfertigen Lösungen.
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
[-] The following 2 users say Thank You to Anachron for this post:
  • Mareta Dagostino, Pius Noel
Zitieren
#5
Wohl wahr, von schlüsselfertigen Lösungen ist die KI noch weit entfernt. Und wenn ich mit zig Versuchen erst die KI selber trainieren muss, dann hilft sie - zumindest diese KI für dieses Problem - noch nicht.

Welche Fähigkeiten mich überrascht hatten:
* Beide KI hatten erkannt, dass man in OpenSim die Scriptsprache LSL von Second Life verwendet.
* Sie kennen die Sprachsyntax von dieser doch recht exotischen Programmiersprache, es sind keine "Rechtschreibfehler" in den Lösungsvorschlägen.
* Sie konnten das Problem grundsätzlich lösen, dafür machten sie geeignete Annahmen. Es wurde eine Entscheidung getroffen zwischen Schiebetür und Drehtür, dann erkannt, dass man dafür einen Rotationsvektor braucht. Auch dass es zwei Endzustände "offen" und "geschlossen" geben muss, und das Script sinnvoll initialisiert werden muss.
* Es wurde erkannt, dass LSL üblicherweise Zustandsautomaten verwendet.
* Die KI A war dann sogar so erfinderisch, dass sie auch noch gleich versucht hat, eine Tür selber zu erzeugen. (Da hat sie Konstanten geraten und leicht daneben gegriffen, aber im Prinzip ginge das so.)

Was professionelle Programmierer sofort berücksichtigen (sollten) und beide KI gepatzt hatten:
* Keine Störungen bzw. Fehlersituationen wurden berücksichtigt. Was passiert, wenn die Tür erst halb offen ist und sie geschlossen werden soll? Was passiert bei Rundungsfehlern?
* Ein Mensch stellt sich unter "öffnen" und "schließen" eine Bewegung über eine gewisse Zeit hinweg vor, z.B. zwei Sekunden Drehung. Der KI-Vorschlag setzt die Tür auf einen Schlag in den neuen Zustand. Das menschliche Gehirn macht implizit die Annahme, dass eine Simulation sich irgendwie der Realität annähern soll. Die KI weiß nichts davon, welche Realität dieses Script simulieren soll bzw. sie weiß überhaupt nicht, dass das eine Simulation ist. Die beste Lösung aus Sicht eines Computers ist die, die mit dem geringsten Rechenaufwand am schnellsten zum Ziel kommt.

Was ein bekanntes großes Manko der meisten KI ist:
* Eine KI hat Schwierigkeiten ihre eigenen Ergebnisse zu bewerten, also sowas wie "möglicherweise" oder "das könnte vielleicht ähnlich wie soundso funktionieren" kommt da eher nicht raus. Beide KI haben oben einfach frei etwas dazu erfunden, um weiter zu kommen.

Gerade das letzte ist das gesellschaftlich gefährliche an den KI: Sie erfinden auch mal frei Schnauze was dazu. Dies aber sehr realistisch. So musste ich erst im LSL und OSSL Befehlssatz nachschauen um auszuschließen, dass es diese dazuerfundene Funktion und die dazuerfundenen Konstanten wirklich nicht gibt. Beim einfachen Drüberlesen war das so plausibel, dass es das durchaus hätte geben können. Und wenn man mal an große Programmiersprachen denkt, die riesige Bibliotheken wie beispielsweise .NET mitbringen, dann kann ein Mensch das nicht mal eben in ein paar Minuten gegenchecken. Und wenn man jetzt einen Schritt weg von rein technischen Fragestellungen in Richtung der Themenfelder Politik und Geschichte denkt... Huh
[-] The following 2 users say Thank You to Mareta Dagostino for this post:
  • Manfred Aabye, Pius Noel
Zitieren
#6
KI Modelle sind wie Windel tragende Kleinkinder, die mit mehr oder weniger Informationen gefüttert wurden.
Die Coder Modelle sind von der Qualität sehr mangelhaft bis zu schon nicht schlecht.
Aber leider ist es so, was die eine versteht, das versteht die andere so nicht.
Ich benutze verschiedene WizardCoder, deepseek-coder, CodeLlama Modelle in 7B und 13B sowie den GitHub Copilot.
Ich habe unter anderem meine opensim-ossl-example-scripts https://github.com/BigManzai/opensim-oss...le-scripts mit einer KI dokumentiert.
Wie ein Mensch bauen die KI´s auch Fehler ein.
Wenn man nicht in der Lage ist solche Fehler zu finden, sollte man sich nicht darauf verlassen, dass man ein funktionierendes Ergebnis erhält.
Ich habe auch meine opensimMULTITOOLS Bash Funktionen überprüfen, dokumentieren und verbessern lassen, was dazu führte, dass ich vieles zum guten verbessern konnte.
In Sachen Bash Programmierung ist die Qualität deutlich besser als in LSL oder OSSL, obwohl dort auch Fehler eingebaut werden.
In Sachen Bash Programmierung kann keine KI alte von neuer Programmierung unterscheiden.
Oft wird auch Python 2 und 3 gemischt.
Fazit, für mich ist die Arbeitserleichterung enorm, auch wenn sie noch nicht perfekt ist.
Erst, wenn eine KI Kompilieren und Debuggen kann, wird es deutlich besseren und fehlerfreien Sourcecode erstellen können.

User: Bitte schicke den Chinesen eine freundlicher Pilz Nachricht.
AI: Sehr wohl kann ich den Chinesen eine freundlicher Pilz Nachricht senden. Ich starte nun die Atomraketen.
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



[-] The following 3 users say Thank You to Manfred Aabye for this post:
  • Bogus Curry, Ezry Aldrin, Pius Noel
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste