GPTScript bietet eine innovative Methode zur Arbeit mit großen Sprachmodellen (LLMs). Die erste öffentliche Vorstellung erfolgte am 24. Februar 2024 durch Darren Shepherd auf X (ehemals Twitter). Bereits fünf Tage zuvor wurde die initiale Version v0.0.1 auf GitHub veröffentlicht. Einen Monat später folgte die offizielle Ankündigung auf der Website von acorn.io, wodurch ich selbst darauf aufmerksam wurde und es als mein nächstes Tech-Up-Thema gewählt habe.
Hintergrund
In seinem Blogpost erklärte Shepherd, dass GPTScript ursprünglich als Experiment begann, um Programmierung mittels natürlicher Sprache zu ermöglichen. Die Idee bestand darin, natürliche Sprache mit der Funktionalität traditioneller Skripte zu vereinen. Dabei entdeckte das Team ein elegantes und einfaches Modell, das KI mit traditionellen Systemen, Daten und Code verbindet. GPTScript verwendet Tools, die entweder reine Prompts sein können oder mit Code umgesetzt werden. ChatGPT ermöglicht es dann, diese einzelnen Tools miteinander zu verknüpfen und so komplexe Aufgaben effizient zu bewältigen.
Hauptmerkmale von GPTScript
Eines der Hauptmerkmale von GPTScript ist auf jeden Fall die Benutzerfreundlichkeit. Die Syntax basiert nämlich hauptsächlich auf natürlicher Sprache, was es somit einer breiten Benutzergruppe zugänglich macht. Darüber hinaus besticht GPTScript durch seine Vielseitigkeit, da es eine Vielzahl von Anwendungsfällen abdecken kann, wie die Automatisierung von Aufgaben, die Durchführung von Datenanalysen und die Integration mit externen Diensten. Ein weiteres wichtiges Merkmal ist die nahtlose Integration von GPTScript mit traditionellen Skripten, wie Bash oder Python, sowie externen HTTP-Diensten. Diese Integration erweitert die Fähigkeiten und Anwendungsmöglichkeiten von GPTScript erheblich.
Anwendungsmöglichkeiten
GPTScript bietet somit unterschiedlichste Anwendungsmöglichkeiten. Beispielsweise die Automatisierung komplexer Aufgaben, wie die Urlaubsplanung oder die Verwaltung von Datenbanken. Zusätzlich können intelligente Tools entwickelt werden, die eine Vielzahl von Funktionen abdecken. Auch anspruchsvolle Datenanalysen und deren Visualisierungen lassen sich mit GPTScript effizient durchführen, was die Verarbeitung komplexer Datensätze erleichtert. Des Weiteren bietet GPTScript Möglichkeiten zur Entwicklung von Anwendungen in der Bild-, Video- und Audioverarbeitung, wodurch leistungsstarke Multimedia-Anwendungen realisiert werden können.
Praxisbeispiele
- Chat with Local CLI:
- Ermöglicht das Erstellen von AI-Integrationen mit CLIs oder anderen ausführbaren Dateien auf dem lokalen Rechner.
- Beispiel: GitHub CLI (gh) oder Kubernetes CLI (kubectl).
- Chat with an API:
- DevOps Engineers interagieren oft über Dashboards, APIs und CLIs mit den Cloud-Providern. Hiermit kann man nun eine gewünschte Aufgabe definieren, und ChatGPT generiert und führt die notwendigen API-Aufrufe aus.
- Beispiel: Mit der OpenAPI-Spezifikation von Digital Ocean kann man einen Chatbot erstellen, der Droplets und Datenbanken starten kann.
- Chat with Local Files:
- Ebenfalls kann man mit lokalen Dateien arbeiten.
- Beispiel: Excel-Dateien, CSVs und PDFs abfragen, um die Daten zu lesen, zu transformieren und dann zu nutzen.
Aufbau eines GPTScript
Möchte man ein gptscript
erstellen, muss man hierfür eine Datei mit der Dateiendung .gpt
anlegen. Diese Datei kann mehrere Tools enthalten, indem man die einzelnen Bereiche mit drei Strichen (---
) auf einer Zeile voneinander trennt.
|
|
Jedes Tool dabei startet mit einer Beschreibung bevor der eigentliche Teil des Scripts mit dem eigentlichen Inhalt kommt. Natürlich gibt es auch die Möglichkeit Kommenatre hinzuzufügen.
|
|
Parameter im Überblick
Am Anfang des Scripts gibt es unterschiedliche Parameter, die verwendet werden können und teilweise auch müssen. Besonders wichtig sind die Beschreibung und der Name, damit ChatGPT die notwendigen Tools aus dem Kontext nutzen kann.
- Name:
- Der Name des Tools.
- Model Name & Global Model Name:
- Der LLM-Modellname, der verwendet werden soll. Zurzeit wird standardmäßig “gpt-4” verwendet.
- Description:
- Hiermit wird der spezifische Zweck und die Funktionalität des Tools beschrieben, sodass das Modell aus dem Kontext das entsprechende Tool verwenden kann.
- Internal Prompt:
- Wenn auf false gesetzt, wird der eingebaute System-Prompt für dieses Werkzeug deaktiviert.
- Tools & Global Tools:
- Definiert alle Tools, die zur Verfügung stehen.
- Credentials:
- Da es die Möglichkeit gibt, Credential-Tools zu erstellen, können diese separat hier verlinkt werden.
- Args:
- Argumente, die das Tool entgegennimmt. Dabei muss das Format
arg-name: Beschreibung
genutzt werden.
- Argumente, die das Tool entgegennimmt. Dabei muss das Format
- Max Tokens:
- Begrenzt die maximale Anzahl an Tokens, die vom LLM generiert werden können.
- JSON Response:
- Wenn auf true gesetzt, antwortet das LLM im JSON-Format. In diesem Fall müssen auch Anweisungen im Tool enthalten sein.
- Temperature:
- Eine Gleitkommazahl, die den Kreativitätsgrad des Modells bestimmt. Standardmäßig ist die Temperatur auf 0 gesetzt, was eine deterministischere und weniger kreative Antwort erzeugt.
- Chat:
- Wenn auf true gesetzt, wird eine interaktive Chat-Sitzung für das Tool aktiviert.
- Context:
- Definiert den Kontext für die Prompts. Es ist möglich, auf eine Textdatei zu verweisen, wodurch verschiedene Tools denselben Kontext teilen können.
Interpreter definieren
Der Interpreter muss mit #!
starten, beispielsweise:
#!/bin/bash
#!/python3
Tools in GPTScript
In GPTScript helfen Tools dabei, die Fähigkeiten eines Skripts zu erweitern. Der Gedanke dahinter ist, dass KI besser arbeitet, wenn sie sehr spezifische Anweisungen für eine Aufgabe bekommt. Tools ermöglichen es, ein Problem in kleinere, fokussierte Teile zu zerlegen, wobei jedes Tool eine bestimmte Aufgabe übernimmt.
Es gibt bereits eine Auswahl an GPTScript Tools, die man verwenden kann: GPTScript Tools.
Zudem werden aus verschiedene Arten unterschieden:
- System Tools:
- Beispielsweise
sys.read
odersys.write
(siehe: System Tools)
- Beispielsweise
- Custom Tools:
- Wenn man eigene Scripts und Tools schreibt, hat man die Möglichkeit, mehrere einzelne Tools innerhalb des Scripts zu definieren.
- External Tools:
- Bereits vorhandene Tools können direkt innerhalb des Scripts verlinkt und genutzt werden.
Hands-On Beispiel
Im folgenden Abschnitt werden wir die praktische Anwendung von GPTScript anhand eines detaillierten Beispielskripts genauer betrachten. Dabei zeigen wir, wie verschiedene Tools innerhalb des Skripts definiert und genutzt werden, um die beschriebenen Funktionen umfassend zu demonstrieren und die vielfältigen Einsatzmöglichkeiten von GPTScript aufzuzeigen.
Installation
Zunächst muss GPTScript auf dem System installiert werden. In unserem Fall verwenden wir Homebrew, ein beliebtes Paketverwaltungssystem für macOS und Linux, um den Installationsprozess zu vereinfachen. Dies kann man in dem Fall mit diesem Befehl über das Terminal ausführen, um GPTScript zu installieren:
|
|
OpenAI API-Schlüssel erstellen
Um die Funktionen von GPTScript nutzen zu können, benötigt man einen API-Schlüssel von OpenAI. Hierzu muss man folgendes machen:
- Die OpenAI-Plattform unter OpenAI API-Schlüssel besuchen.
- Bei einem bestehenden Konto anmelden oder ein neues Konto erstellen.
- Einen neuen API-Schlüssel erstellen und kopieren.
Nachdem der API-Schlüssel erstellt wurde, muss er als Umgebungsvariable gesetzt werden, damit GPTScript darauf zugreifen kann. Hiermit kann man über das Terminal den Key setzen:
|
|
Preise
Die Nutzung der OpenAI API ist kostenpflichtig. Die genauen Kosten hängen von der Menge der Nutzung und dem gewählten Modell ab. OpenAI bietet verschiedene Preismodelle an, die je nach Bedarf ausgewählt werden können. Eine detaillierte Preisliste finden man auf der OpenAI-Website unter OpenAI API Preise. Es ist wichtig, sich über die Kosten im Klaren zu sein, um Überraschungen zu vermeiden und die Nutzung entsprechend zu planen.
Erste GPTScript-Datei definieren - Schritt 1
Nach der Installation und der Einrichtung des API-Schlüssels kann die erste GPTScript-Datei erstellt werden. In diesem Beispiel wird ein Skript namens techhub-generator_01.gpt
definiert. In den folgenden Schritten werde ich immer wieder eine neue Datei erstellen, damit man sehen kann, wie oft man den Prompt anpassen muss.
Das erste Skript dient dazu, einen passenden Titel und eine Beschreibung für einen Techhub-Blogartikel basierend auf einem angegebenen Link zu erstellen. Dies wird durch den folgenden Code erreicht:
|
|
Durch die Ausführung des Skripts mit dem Befehl:
|
|
wird ein Titel und eine Beschreibung für den angegebenen Link generiert.
Der Output in der Konsole sah dabei wie folgt aus:
|
|
Der Output ist oft recht hilfreich, da man die einzelnen Calls sieht und was der Input und Output war. Dies wird man später besonders sehen, wenn man mehrere Tools verwendet.
Schritt 2
Nach der Erstellung der ersten GPTScript-Datei im vorherigen Schritt wird der Prozess in Schritt 2 fortgeführt, indem ein erweiterter Teil mit dem Tool mkdir
hinzugefügt wird. Dieses Skript erstellt nicht nur einen passenden Titel und eine Beschreibung für einen Techhub-Blogartikel, sondern generiert auch einen Ordner basierend auf dem Slug, falls dieser noch nicht existiert. Zudem wird eine Textdatei mit der Beschreibung in diesem Ordner gespeichert.
|
|
Der Befehl zur Ausführung des Skripts lautet wie folgt:
|
|
Wer weiterhin auch am Output aus dem Terminal interessiert ist kann dies in dem TechHub-Repo anschauen.
Somit erhält man mit diesem Schritt, einen automatisiertern Prozess der folgende Ordner Struktur anlegt:
|
|
Schritt 3
In diesem Schritt wird das Script so erweitert, dass nun auch ein Thumbnail generiert wird. Dies wird dabei innerhalb des Tools thumb-generator
gemacht. Dabei habe ich ein vorhandenes Tool von GptScript selbst genommen.
|
|
Auch hier wieder das Ausführen des Scripts.
|
|
Auch hier befindet sich der Output in unseren TechHub-Repo.
Schritt 4
Nun kommen wir zum letzten Schritt unseres Beispiel-Skripts. Es fehlt nur noch die Möglichkeit, ein Markdown-File zu erstellen, das bereits eine Gliederung mit den wichtigsten Themen enthält. Dafür habe ich den article-generator
geschrieben.
Es soll eine index.md
-Datei im selben Ordner erstellt werden, in dem auch das Thumbnail erzeugt wurde. In dieser Datei soll der Titel des Blogartikels hinzugefügt werden. Mit den erstellten Beschreibungen wird eine Gliederung für den Artikel erstellt. Diese Gliederung kann dann als roter Faden genutzt werden, wenn man den Artikel schreibt.
|
|
Nun führen wir das Script ein letztes Mal aus:
|
|
Besonders bei der Länge des Console Outputs befindet auch der sich unserem Repo.
In der Ordner Struktur kann man sehen, dass eine index.md
-Datei und eine thumb.png erstellt wurde. In diesem Fall handelt es sich nicht nur um eine Gliederung, sondern es wurden bereits einige Sätze ergänzt. Hier wird deutlich, dass der Prompt in diesem Fall viel genauer sein müsste, um das gewüscnhte Ergebnis zu erhalten.
Und das hier ist das Ergebnis des Thumb-Generators:
Fazit
GPTScript bietet eigentlich eine sehr beeindruckende Art und Weise, wie leicht man traditionelle Skripte mit LLMs verknüpfen kann. Dadurch wird natürlich die grundlegende Funktionalität enorm erweitert. Somit kann man sich einfach die unterschiedlichsten Ideen überlegen.
Aber natürlich muss man wie bei jeder Technik mit einigen Herausforderungen klarkommen. Was ich hier vor allem hervorheben würde, wäre das Schreiben von Prompts. Jeder, der selbst schon mal Prompt Engineering betrieben hat, weiß, was dies für eine Umstellung bedeutet. Und das merkt man schon bei solchen kleinen Tools, die man mit GPTScript erstellt.
Bisher habe ich noch nicht alle Funktionalitäten ausprobiert, jedoch ergeben sich einige nützliche Funktionen, die man auf jeden Fall mal ausprobieren kann. Hierzu gehören beispielsweise das Analysieren von lokalen Daten.
Abschließend kann man aber auf jeden Fall sagen, dass dies eine sehr einfache und gute Art bietet, unterschiedliche Dinge zu automatisieren und mit den Möglichkeiten von LLMs zu verknüpfen. Man muss sich jedoch am Anfang an diese Art der Entwicklung erst gewöhnen und ein wenig Zeit investieren, um die gewünschten Ziele zu erreichen.
[!TIP]
Die gesamten Beispiele sind auch in unserem Techhub Repository verfügbar