Exercise: Chuck Norris Joke GPT

Ziel der Übung

In dieser Übung lernst du, wie man einen Custom GPT mit Actions erstellt, der externe APIs nutzt. Du wirst einen "Chuck Norris Joke GPT" bauen, der auf Anfrage zufällige Chuck Norris Witze von der Chuck Norris APIarrow-up-right abruft.

Was du lernen wirst

  • ✅ OpenAPI-Schemas für Actions erstellen

  • ✅ APIs ohne Authentifizierung anbinden

  • ✅ Query-Parameter für API-Requests nutzen

  • ✅ Actions testen und debuggen

  • ✅ GPT-Instructions für Action-Nutzung schreiben


Voraussetzungen

  • ChatGPT Plus, Pro oder Team Account

  • Zugang zum GPT Builder

  • Grundverständnis von APIs und JSON


Die Chuck Norris API verstehen

Verfügbare Endpoints

Die Chuck Norris API bietet mehrere Endpoints:

Endpoint
Beschreibung
Beispiel

/jokes/random

Zufälliger Witz

GET https://api.chucknorris.io/jokes/random

/jokes/random?category=dev

Witz aus Kategorie

GET https://api.chucknorris.io/jokes/random?category=dev

/jokes/categories

Liste aller Kategorien

GET https://api.chucknorris.io/jokes/categories

/jokes/search?query=kung

Suche nach Stichwort

GET https://api.chucknorris.io/jokes/search?query=kung

Beispiel-Response

Die wichtigsten Felder:

  • value – Der Witz-Text

  • categories – Kategorien (z.B. ["dev", "movie"])

  • id – Eindeutige ID des Witzes


Aufgabe 1: Basis-GPT mit zufälligen Witzen

Schritt 1: GPT erstellen

  1. Gehe zu ChatGPT → Explore GPTs → Create a GPT

  2. Gib dem GPT einen Namen: "Chuck Norris Joke Master"

  3. Beschreibung: "Delivers the funniest Chuck Norris jokes on demand, powered by the official Chuck Norris API."

Schritt 2: Instructions schreiben

Wechsle zum Configure-Tab und füge folgende Instructions ein:

Schritt 3: OpenAPI-Schema erstellen

Scrolle zu Actions → Create new action und füge folgendes Schema ein:

Schritt 4: Authentication konfigurieren

Die Chuck Norris API benötigt keine Authentifizierung. Stelle sicher, dass bei Authentication die Option "None" ausgewählt ist.

Schritt 5: Testen

Klicke auf Test und stelle folgende Fragen im Test-Chat:

  • "Tell me a Chuck Norris joke"

  • "Another one!"

  • "Give me a random Chuck Norris fact"

Erwartetes Verhalten:

  • Der GPT ruft die getRandomJoke Action auf

  • Du siehst die Meldung "Used getRandomJoke"

  • Der Witz wird in Anführungszeichen mit Emoji präsentiert

Schritt 6: Speichern und Veröffentlichen

  1. Klicke auf Save (oben rechts)

  2. Wähle Only me (oder Anyone with a link, wenn du teilen möchtest)

  3. Bestätige mit Confirm


Aufgabe 2: Erweitert mit Kategorien

Jetzt erweitern wir den GPT um die Fähigkeit, Witze aus spezifischen Kategorien abzurufen.

Schritt 1: Verfügbare Kategorien verstehen

Die Chuck Norris API hat folgende Kategorien:

Schritt 2: OpenAPI-Schema erweitern

Bearbeite dein bestehendes Schema und füge einen Query-Parameter hinzu:

Wichtige Änderung: Das parameters-Array enthält jetzt den category-Parameter mit allen verfügbaren Kategorien im enum.

Schritt 3: Instructions erweitern

Aktualisiere die Instructions:

Schritt 4: Testen mit Kategorien

Teste mit folgenden Anfragen:

  • "Tell me a programming joke" → sollte category=dev nutzen

  • "Give me a movie joke" → sollte category=movie nutzen

  • "Random sports joke" → sollte category=sport nutzen

  • "Any Chuck Norris joke" → sollte keinen category-Parameter senden


Aufgabe 3: Conversation Starters hinzufügen

Mache es Usern einfacher, den GPT zu nutzen, indem du Conversation Starters hinzufügst.

Im Configure-Tab unter "Conversation starters":


Aufgabe 4: Profilbild und Beschreibung optimieren

Profilbild erstellen

Nutze DALL-E, um ein passendes Bild zu generieren:

Prompt:

Lade das generierte Bild als Profilbild hoch.

Öffentliche Beschreibung

Falls du den GPT teilen möchtest, schreibe eine einladende Beschreibung:


Bonus-Aufgaben

Bonus 1: Mehrere Actions hinzufügen

Erweitere den GPT um eine zweite Action für Joke-Suche:

Endpoint: GET /jokes/search?query={query}

Beispiel-Schema-Ergänzung:

Test: "Find Chuck Norris jokes about 'kung fu'"

Bonus 2: Error Handling

Teste, was passiert, wenn:

  • Die API offline ist (Tipp: teste mit falschem URL)

  • Eine ungültige Kategorie übergeben wird

  • Der User nach etwas fragt, das nicht API-bezogen ist

Verbessere die Instructions, um diese Fälle elegant zu handhaben.

Bonus 3: Statistik-Feature

Erweitere den GPT um die Fähigkeit, zu tracken, wie viele Witze in einer Session abgerufen wurden:


Reflexion

Beantworte nach Abschluss der Übung folgende Fragen:

  1. Wie entscheidet der GPT, wann er die Action aufrufen soll?

    • Ist die description im Schema ausschlaggebend?

    • Spielen die Instructions eine Rolle?

  2. Was passiert, wenn der User eine Frage stellt, die nichts mit Chuck Norris zu tun hat?

    • Ruft der GPT trotzdem die API auf?

    • Wie verhindert man unnötige API-Calls?

  3. Wie würdest du den GPT erweitern, um auch andere Joke-APIs zu integrieren?

    • z.B. Dad Jokes, Puns, etc.

    • Wie würdest du dem GPT beibringen, die richtige API zu wählen?

  4. Welche Herausforderungen gibt es bei APIs mit Authentifizierung?

    • Wie würdest du einen API-Key sicher speichern?

    • Was sind die Unterschiede zwischen API-Key und OAuth?


Weiterführende Aufgaben

  • Multi-API-GPT: Kombiniere mehrere Joke-APIs (Chuck Norris, Dad Jokes, Cat Facts)

  • API mit POST: Baue einen GPT, der Daten sendet (z.B. Formular-Submission)

  • Authentifizierte API: Integriere eine API, die einen API-Key benötigt (z.B. Weather API)

  • Complex Response Parsing: Arbeite mit APIs, die verschachtelte JSON-Strukturen zurückgeben


Ressourcen


Erfolgskriterien

Du hast die Übung erfolgreich abgeschlossen, wenn:

  • ✅ Dein GPT auf "Tell me a joke" mit einem Chuck Norris Witz antwortet

  • ✅ Die Action im Chat sichtbar aufgerufen wird ("Used getRandomJoke")

  • ✅ Kategorien korrekt erkannt und genutzt werden

  • ✅ Der GPT auch ohne Action-Aufruf auf normale Fragen antwortet

  • ✅ Das Verhalten den Instructions entspricht (Tonalität, Format, Emojis)

Last updated