SnakeAI – ChatGPT vs. Grok vs. Gemini
Lesedauer: 3 Minuten

Ich habe bereits vor einiger Zeit einmal ChatGPT genutzt, um das klassische Spiel Snake per AI als Python-Script erstellen zu lassen. Seitdem ist einiges an Zeit vergangen und man bekommt Zugriff auf neue Modelle und daher habe ich mir gedacht, dass ich einfach mal einen Prompt nutze und damit die bekannten Large Language Models füttere. In diesem Beitrag gibt es nun das Ergebnis.

Prompt

Zunächst möchte ich euch natürlich meinen Prompt zur Verfügung stellen.

Please create a complete Python script to implement the classic Snake game.

Game specifications:

  • The game should follow the traditional Snake game rules:
  • The player controls a snake that moves continuously on the screen.
  • The objective is to eat „food“ to grow the snake, and the game ends if the snake collides with itself or the screen boundaries.

Visual elements:

  • The background of the game should be black.
  • The snake should be green in color.
  • The food that the snake eats should be represented as red squares.

Control options:

  • The player should be able to control the snake using either the arrow keys (up, down, left, right) or the WASD keys (W = up, A = left, S = down, D = right).

General requirements:

  • The script should be self-contained, complete, and runnable.
  • Use any suitable Python libraries (e.g., Pygame) to create the game window and handle user input, movement, and game logic.
  • Ensure the snake moves in a grid-like fashion and can grow as it eats the food.

Ihr seht also, dass ich recht präzise bin mit meinen Anweisungen. Ich gehe kurz auf die Steuermöglichkeit des Nutzers drauf ein und bestimmte die Farben für den Hintergrund, die Schlange und das Essen. Darüber hinaus beschreibe ich noch kurz die Funktionsweise und gebe an, dass nur PyGame als Library verwendet werden soll.

OpenAI – GPT-4o

Zunächst lassen wir einen der Platzhirsche ran, nämlich GPT-4o aus dem Hause OpenAI. Das Ergebnis kann sich durchaus sehen lassen. Die Steuerung ist sowohl mit Pfeiltasten, als auch mit WASD möglich. Außerdem wurde direkt ein Punktesystem im linken oberen Bereich integriert.

Wenn man allerdings das Spiel verliert, so wird der Punktestand nicht zurückgesetzt und man zählt einfach die Punkte weiter hoch. Auch kann man den Bildschirmrand verlassen und taucht auf der anderen Seite wieder auf. Laut dem Prompt sollte dieses Vorgehen eigentlich nicht möglich sein.

OpenAI – o1-preview

Vor kurzem hat OpenAI eine neue LLM-Reihe angekündigt, die auf den o1 hört. Dieses LLM zeichnet sich dadurch aus, dass es zunächst nachdenket, bevor es eine Antwort präsentieren. Diese Gedanken werden dem Nutzer auch präsentiert, so dass man manche Schritte des Modells einfach besser nachvollziehen kann.

Hier nun ein paar Screenshots von der Version.

Auch hier wurde die Aufgabe schnell gelöst, allerdings wurde kein Score ausgeben. Dies war aber auch nicht explizit in den Anforderungen erwähnt. Außerdem beendet sich das Spiel, sobald der Spieler einen Fehler macht. Darüber hinaus wird das Spiel auch beendet, sobald man den Rand des Spielfeldes berührt.

xAI – Grok 2

Bei Grok handelt es sich um einen Chatbot, der von xAI entwickelt wurde. Gegründet wurde diese Firma von Elon Musk im März 2023. Das Large Language Model steht nur und seitdem steht eine Version für alle Premiumnutzer von X zur Verfügung.

Anders als bei den OpenAI-Modellen muss der Nutzer zunächst eine Taste drücken, um das Spiel zu starten. Dies empfinde ich als sehr praktisch, aber es war natürlich auch keine Anforderung. Die Schwierigkeit dieses Spiels ist deutlich höher, da die Geschwindigkeit einfach höher ist. Darüber hinaus hat man nachdem Verlieren noch die Möglichkeit das Spiel zu beenden oder aber eine neue Runde zu starten.

Google – Gemini

Abschließend wollen wir uns noch Gemini anschauen. Dabei handelt es sich um einen KI-basierter, multimodaler Chatbot von Google und DeepMind. Seit März 2023 steht diese in eingeschränkter Kapazität zur Verfügung, wurde seitdem in über 40 Sprachen veröffentlicht und ist jedem mit einem Google Konto offen.

Auch hier wurde die Aufgabe erfüllt, allerdings musste man nachhelfen. Sobald man nämlich die erste Version starten wollte, erschien eine Fehlermeldung, dass eine Variable nicht initialisiert sei. Durch eine weitere Anfrage konnte das Problem dann aber gelöst werden, und eine lauffähige Version bereitgestellt werden. Außerdem sind die Spielelemente im Vergleich zu den anderen Modellen recht klein gewählt.

Fazit

Alle hier getesteten Large Language Models konnten die Aufgabe erfüllen. Dabei ist aber schon spannend zu sehen, dass sich die Antworten unterscheiden. Teilweise wurden Regeln ignoriert, wie das Beenden des Spiels sobald man das Spielfeld verlässt. Andererseits wurde mehr implementiert, wie ein Mechanismus zum Beenden oder zum Neustarten des Spiels. Insgesamt sind die Antworten jedoch sehr ähnlich.

Ihr findet den Sourcecode zu allen Varianten in meinem GitHub Repository. Wenn ihr die einzelnen Varianten ausprobieren wollt, stellt sicher, dass ihr Python installiert habt. Anschließen müsst ihr noch PyGame installieren, nutzt dafür den folgenden Befehl

pip install -r requirements.txt

GitHub Copilot: Code mit der Hilfe von AI schreiben (lassen) Azure OpenAI verwenden, um einen Copiloten für eigenen Daten zu erstellen – Teil 1 Bereitstellen von Azure Open AI Services mit LLM Deployments mit Bicep