Erstelle eigene KI-Chatbots mit der ChatGPT-API von OpenAI

Wenn du auf der Suche nach einer einfachen Möglichkeit bist, Texte zu generieren, dann ist die ChatGPT API eine großartige Option. Die API ist ein großer Sprung nach vorne in der Textgenerierungstechnologie und kann verwendet werden, um eine Vielzahl von Texten zu generieren, darunter Artikel, Blog-Beiträge, Produktbeschreibungen und vieles mehr.

Um die ChatGPT API in WordPress zu verwenden, gibt es zwei grundlegende Methoden: wp_remote_post und wp_remote_get. In diesem Beitrag werde ich dir erklären, wie man beide Methoden verwendet, um Texte zu generieren.

Bevor wir jedoch beginnen, musst du sicherstellen, dass du ein API-Schlüssel hast. Wenn du noch keinen API-Schlüssel hast, kannst du dich auf der offiziellen OpenAI-Website anmelden und einen erhalten. Beachte hierbei, dass das nicht immer kostenlos ist. Schaue dir vorher die Preise an, bevor du dich entscheidest. Wenn deine kostenlose Testzeit abgelaufen ist, musst du deine Kreditkarte hinterlegen und wirst einmal im Monat zur Kasse gebeten.

Weiter unten findest du außerdem ein Beispiel, wie du das gpt-3.5-turbo-Model verwendest, welches erst kürzlich angekündigt wurde. Zuerst wird dir gezeigt, wie du das text-davinci-003-Modell verwendest.

Daten an die API senden

wp_remote_post ist eine Methode in WordPress, die verwendet wird, um Daten an eine Remote-URL zu senden. In diesem Fall werden wir die Methode verwenden, um die Daten an die API zu senden und eine Antwort zu erhalten. Hier ist der Code, den du verwenden kannst:

$openai_api_url = 'https://api.openai.com/v1/engines/davinci-codex/completions';
$openai_api_key = 'API_SCHLÜSSEL';

$args = array(
    'method' => 'POST',
    'timeout' => 45,
    'headers' => array(
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . $openai_api_key,
    ),
    'body' => wp_json_encode(
        array(
            'prompt' => 'Dies ist ein Beispieltext',
            'max_tokens' => 100,
            'temperature' => 0.7,
        )
    ),
);

$response = wp_remote_post($openai_api_url, $args);

if (is_wp_error($response)) {
    $error_message = $response->get_error_message();
    echo "Ein Fehler ist aufgetreten: $error_message";
} else {
    $response_body = wp_remote_retrieve_body($response);
    $response_data = json_decode($response_body, true);
    $generated_text = $response_data['choices'][0]['text'];

    echo $generated_text;
}Code-Sprache: PHP (php)

In diesem Codeblock haben wir zuerst die OpenAI-API-URL und den API-Schlüssel definiert. Dann haben wir die Argumente für die wp_remote_post-Methode festgelegt. Die Argumente enthalten Informationen wie die Anforderungsmethode (POST), die Timeout-Zeit, den Inhaltstyp und den Autorisierungsheader.

Wir haben auch den Body festgelegt, welches die Chat-Prompt-Informationen enthält. In diesem Fall haben wir einen einfachen Beispieltext und einige Optionen wie die maximale Anzahl von Tokens und die Temperatur festgelegt. Die Temperatur bestimmt, wie kreativ die KI in ihren Antworten werden darf. Je höher die Zahl, desto höher Variationen in den Antworten.

Anschließend haben wir die wp_remote_post-Methode aufgerufen und die Antwort auf Fehler überprüft. Wenn es keine Fehler gibt, extrahieren wir den generierten Text aus der Antwort.

Es gibt auch einen aktuelleren Endpunkt der API, der folgendermaßen aussehen kann:

$openai_api_url = 'https://api.openai.com/v1/completions';
$openai_api_key = 'API_SCHLÜSSEL';

$args = array(
    'method' => 'POST',
    'timeout' => 45,
    'headers' => array(
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . $openai_api_key,
    ),
    'body' => wp_json_encode(
        array(
            'model' => 'text-davinci-002',
            'prompt' => 'Dies ist ein Beispieltext',
            'max_tokens' => 100,
            'temperature' => 0.7,
        )
    ),
);

$response = wp_remote_post( $openai_api_url, $args );

if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    echo "Ein Fehler ist aufgetreten: $error_message";
} else {
    $response_body = wp_remote_retrieve_body( $response );
    $response_data = wp_json_decode( $response_body, true );
    $generated_text = $response_data['choices'][0]['text'];

    echo $generated_text;
}Code-Sprache: PHP (php)

Vom Prinzip her funktioniert dieser Endpunkt ähnlich, wie der vorherige, nur dass das Model mit angegeben wird. So kann man gleich mehrere Models ansteuern und verschiedene Antworten erhalten.

Neues Modell verwenden

Seit März 2023 ist möglich, das Modell zu verwenden, welches OpenAI für ChatGPT verwendet. Dieses Modell ist nicht nur 10x günstiger, sondern auch schneller. Mehr Details dazu findest du in der Dokumentation und im Blogbeitrag von OpenAI.

Um den neuen API-Endpunkt mit dem gpt-3.5-turbo-Modell zu verwenden, benötigen wir zunächst einen API-Schlüssel von OpenAI. Du kannst den Schlüssel verwenden, den du weiter oben genutzt hast. Hier ist ein Beispielcode, der das neue Modell der ChatGPT-API verwendet, um auf eine Benutzeranfrage zu antworten:

$openai_api_url = 'https://api.openai.com/v1/chat/completions';
$openai_api_key = 'DeinAPIKey';

$args = array(
    'method' => 'POST',
    'timeout' => 45,
    'headers' => array(
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . $openai_api_key,
    ),
    'body' => wp_json_encode(
        array(
            'model' => 'gpt-3.5-turbo',
            'messages' => array(
                array(
                    'role' => 'user',
                    'content' => 'Was ist die OpenAI-Mission?'
                )
            )
        )
    ),
);

$response = wp_remote_post( $openai_api_url, $args );

if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    echo "Ein Fehler ist aufgetreten: $error_message";
} else {
    $response_body = wp_remote_retrieve_body( $response );
    $response_data = wp_json_decode( $response_body, true );
    $generated_text = $response_data['choices'][0]['message']['content'];

    echo $generated_text;
}Code-Sprache: PHP (php)

Wir haben den API-Endpunkt https://api.openai.com/v1/chat/completions angesteuert und unseren API-Schlüssel im Header gesendet. Im Body haben wir das messages-Array spezifiziert, das die Benutzeranfrage enthält. In diesem Beispiel hat der Benutzer nach der OpenAI-Mission gefragt.

Wir haben die wp_remote_post-Methode verwendet, um die Anfrage an den API-Endpunkt zu senden. Wenn ein Fehler auftritt, wird eine Fehlermeldung ausgegeben. Andernfalls wird die Antwort decodiert und der generierte Text wird ausgegeben.

Mit diesem Code können wir schnell und einfach einen KI-Chatbot erstellen. Wir können den Code anpassen, um auf verschiedene Benutzeranfragen zu antworten, und wir können auch eine Vielzahl von Antworten ausgeben, je nachdem, was der Benutzer fragt.

Im messages-Array können auch gleich mehrere Antworten geliefert werden. Du kannst auch mehr Fragen auf einmal senden, wenn du mehr Fragen in den Body deiner Anfrage platzierst, da dies auch ein Array ist.

Wichtig zu beachten ist, dass die ChatGPT-API immer noch in der Beta-Phase ist und dass die Genauigkeit der Antworten variieren kann. Dennoch ist das gpt-3.5-turbo-Modell sehr leistungsfähig und liefert in den meisten Fällen präzise Antworten.

Wenn du bisher noch keine Erfahrung mit ChatGPT hast, kannst du dir die beeindruckenden Funktionen der Plattform direkt auf der OpenAI-Website ansehen. Zusätzlich besteht jetzt die Möglichkeit, für $20 pro Monat Zugang zu ChatGPT mit weniger Einschränkungen zu erhalten.

In meinen Komplettpaketen verwende ich ChatGPT, um Marketingtexte zu formulieren. Anschließend lektoriere ich diese Texte, um Inhalte zu schaffen, die ansonsten mühsam selbst entwickelt werden müssten.

ChatGPT und GPT-4

Nachtrag vom 15.03.2023

Gestern wurde GPT-4 veröffentlicht. Es ist zwar noch nichts über die API bekannt, da lediglich ausgewählte Personen Zugriff auf die Endpunkte haben, aber wenn wir davon ausgehen, dass sich nicht viel verändern wird, könnte ein Beispiel mit dem Model gpt-4 folgendermaßen aussehen:

$openai_api_url = 'https://api.openai.com/v1/chat/completions';
$openai_api_key = 'DeinAPIKey';

$args = array(
    'method' => 'POST',
    'timeout' => 45,
    'headers' => array(
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . $openai_api_key,
    ),
    'body' => wp_json_encode(
        array(
            'model' => 'gpt-4', // <- Hier ist die Änderung
            'messages' => array(
                array(
                    'role' => 'user',
                    'content' => 'Was ist die OpenAI-Mission?'
                )
            )
        )
    ),
);

$response = wp_remote_post( $openai_api_url, $args );

if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    echo "Ein Fehler ist aufgetreten: $error_message";
} else {
    $response_body = wp_remote_retrieve_body( $response );
    $response_data = wp_json_decode( $response_body, true );
    $generated_text = $response_data['choices'][0]['message']['content'];

    echo $generated_text;
}Code-Sprache: PHP (php)

Hier haben wir das Model in gpt-4 geändert. Die verfügbaren Models können wir bereits in der Dokumentation nachlesen. Hier die Übersicht:

AKTUELLSTES MODELLBESCHREIBUNGMAXIMALE TOKENTRAININGSDATEN
gpt-4Leistungsfähiger als jedes GPT-3.5-Modell, in der Lage, komplexere Aufgaben zu erledigen und für Chats optimiert. Wird mit unserer neuesten Modelliteration aktualisiert.8.192 TokensBis September 2021
gpt-4-0314Ein Schnappschuss von gpt-4 vom 14. März 2023. Im Gegensatz zu gpt-4 erhält dieses Modell keine Updates und wird nur für einen Zeitraum von drei Monaten bis zum 14. Juni 2023 unterstützt.8.192 TokensBis September 2021
gpt-4-32kGleiche Fähigkeiten wie das Basis-gpt-4-Modell, jedoch mit 4-facher Kontextlänge. Wird mit unserer neuesten Modelliteration aktualisiert.32.768 TokensBis September 2021
gpt-4-32k-0314Ein Schnappschuss von gpt-4-32k vom 14. März 2023. Im Gegensatz zu gpt-4-32k erhält dieses Modell keine Updates und wird nur für einen Zeitraum von drei Monaten bis zum 14. Juni 2023 unterstützt.32.768 TokensBis September 2021

Leider sind in Version 4 die Trainingsdaten noch veraltet und gehen bis September 2021. GPT-4 weiß also noch nichts darüber, dass es eigentlich existiert. Hier müssen wir darauf hoffen, dass die Daten noch aktualisiert werden. Grundsätzlich lohnt sich der Umstieg noch nicht so ganz, da GPT-3 aktuell wesentlich schneller und nicht limitiert ist. Als zahlender ChatGPT Plus Nutzer kann man aktuell lediglich 100 Nachrichten innerhalb von 4 Stunden versenden, was nicht wirklich ausreicht, um das Ganze ausgiebig zu testen.

Nachtrag vom 07.11.2023

Es sind neue Modelle mit aktuelleren Trainingsdaten verfügbar. Hier ist die aktuelle Tabelle:

AKTUELLSTES MODELLBESCHREIBUNGMAXIMALE TOKENTRAININGSDATEN
gpt-4Leistungsfähiger als jedes GPT-3.5-Modell, in der Lage, komplexere Aufgaben zu erledigen und für Chats optimiert.8.192 TokensBis September 2021
gpt-4-0314Ein Schnappschuss von gpt-4 vom 14. März 2023. Im Gegensatz zu gpt-4 erhält dieses Modell keine Updates.8.192 TokensBis September 2021
gpt-4-32kGleiche Fähigkeiten wie das Basis-gpt-4-Modell, jedoch mit 4-facher Kontextlänge.32.768 TokensBis September 2021
gpt-4-32k-0314Ein Schnappschuss von gpt-4-32k vom 14. März 2023. Im Gegensatz zu gpt-4-32k erhält dieses Modell keine Updates.32.768 TokensBis September 2021
gpt-4-turboVerbesserte Version des gpt-4 mit Wissen über Weltgeschehnisse bis April 2023 und einer Kontextlänge von 128K, kostengünstiger im Betrieb.128.000 TokensBis April 2023
gpt-3.5-turbo-1106Neue Version des GPT-3.5 Turbo, die bessere Anweisungsbefolgung, JSON-Modus und paralleles Funktionsaufrufen unterstützt.16.000 TokensNicht spezifiziert​¹
¹Die Informationen wurden von OpenAIs offizieller Ankündigungsseite bezogen​​.

Hier nun ein Beispielcode:

$openai_api_url = 'https://api.openai.com/v1/completions';
$openai_api_key = 'DEIN_API_SCHLÜSSEL';

$args = array(
    'method' => 'POST',
    'timeout' => 45,
    'headers' => array(
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . $openai_api_key,
    ),
    'body' => wp_json_encode(
        array(
            'model' => 'gpt-4-1106-preview', // Für GPT-4 Turbo
            'prompt' => 'Das ist eine Frage für den Chatbot',
            'max_tokens' => 150,
            'temperature' => 0.7,
            'top_p' => 1,
            'frequency_penalty' => 0,
            'presence_penalty' => 0,
        )
    ),
);

$response = wp_remote_post($openai_api_url, $args);

if (is_wp_error($response)) {
    $error_message = $response->get_error_message();
    echo "Ein Fehler ist aufgetreten: $error_message";
} else {
    $response_body = wp_remote_retrieve_body($response);
    $response_data = json_decode($response_body, true);
    $generated_text = $response_data['choices'][0]['text'];

    echo $generated_text;
}
Code-Sprache: PHP (php)