Inhaltsverzeichnis

Python ChatGPT API verwenden

Python ChatGPT API verwenden

Was ist ChatGPT?

ChatGPT ist ein Chatbot, der mit Hilfe von maschinellem Lernen und natürlicher Sprachverarbeitung interagiert. Es wurde von OpenAI entwickelt und ist Teil der GPT (Generative Pre-training Transformer) -Familie von Sprachmodellen. ChatGPT ist in der Lage, auf Nutzeranfragen zu antworten und Unterhaltungen zu führen, indem es auf bereits vorliegende Daten und Konversationshistorien zurückgreift.

Das ChatGPT-Modell wurde speziell für den Einsatz in Chatbots und Sprachassistenten entwickelt. Es ist in der Lage, die Absichten und Bedeutungen von Nutzeranfragen zu verstehen und entsprechende Antworten zu generieren. Durch den Einsatz von maschinellem Lernen und natürlicher Sprachverarbeitung kann ChatGPT die Qualität seiner Antworten verbessern, indem es aus Nutzerinteraktionen lernt und sich an die individuellen Vorlieben und Bedürfnisse der Nutzer anpasst.

Um ChatGPT zu nutzen, muss es zunächst auf einem Server oder einer Cloud-Plattform bereitgestellt werden. Anschließend können Nutzer über eine Text- oder Sprachschnittstelle mit dem Chatbot interagieren. ChatGPT eignet sich besonders für die Integration in Chatbots, die in sozialen Medien, Kundensupport-Plattformen oder anderen Online-Communities verwendet werden.

ChatGPT API Key und Subscription Plan

Auf folgender Seite müsst Ihr euch einen neuen Account erstellen https://openai.com/api/

ChatGPT Account

Danach auf View API keys klicken und einen neuen erstellen. Diesen Schlüssel nun sicher aufbewahren, man kann diesen danach nicht mehr abrufen.

CHatGPT APi Key python

Nun müssen wir noch den Subscription Plan ändern, dafür auf Manage Account und dann Billing. Nun den Account Plan in einen Paid Plan verändern. Dazu müssen Sie eine Kreditkarte angeben. Keine Sorge, Sie zahlen nur dafür was Sie auch wirklich nutzen. Die API ist kein Abo, wenn Sie sich einen Paid Account anlegen und dann diesen nicht nutzen zahlen Sie nichts.

ChatGPT APi Billing

Um nicht unerwartet eine große Rechnung zu bekommen stellen Sie sich am besten Usage Limits ein. Je nachdem wie viel Siedie API nutzen wollen, sollten Sie sich Ihr persönliches Limit setzen. Jetzt haben Sie einen API Key den Subscription Plan und können jetzt loslegen.

ChatGPT Api Usage Lmit

OpenAI Playground

Im OpenAI Playground können Sie die unterschiedlichen Engines und Parameter testen:

https://beta.openai.com/playground?model=text-davinci-003&prompt=%23%20Python%203%0A%23%20Calculate%20the%20mean%20distance%20between%20an%20array%20of%20points

Python Programm Schreiben

Zuerst müssen Sie das pip Paket installieren, dazu folgendes Kommando ausführen:

pip install openai

Beispiel Skript zur Verwendung von OpenAI Davinci Engine


import textwrap

import openai
from api_key import API_KEY


def wrap_text(text):
    wrapper = textwrap.TextWrapper(width=140)
    return wrapper.wrap(text=text)


if __name__ == '__main__':
    openai.api_key = API_KEY
    completion = openai.Completion.create(max_tokens=800, engine="text-davinci-003", prompt="Was ist Python?")
    lines = wrap_text(completion.choices[0].text)
    print("\n".join(lines))

Zusätzlich noch die Datei api_key in welcher die Variable API_KEY definiert wird:


API_KEY = "1234"

Um eine Completion Anfrage zu stellen muss folgender Code ausgeführt werden:


completion = openai.Completion.create(max_tokens=800, engine="text-davinci-003", prompt="Was ist Python?")

max_tokens gibt die Länge der Antwort an. Da man bei der API je Token zahlt, ist es wichtig kein zu großen Wert anzugeben.

text-davinci-03 ist eine von mehreren Engines von OpenAI. "text-davinci 3" ist die mächtigste und teuerste.

An den Parameter prompt kann man auch eine Liste übergeben, als Antwort erhält man daraufhin mehrere Texte.

Asynchron mehrere ChatGPT Anfragen senden

Um das asynchrone Feature von der openAI Python Bibliothek zu nutzen benötigen Sie Version 0.26. Der Vorteil beim asynchronen Programmieren ist, das man viele Begriffe gleichzeitig erledigen kann. So können wir in unserem Python Programm viele Fragen von ChatGPT beantworten lassen.

Dafür nutzen wir die Methode "openai.Completion.acreate".


async def aget_completion(question):
    openai.api_key = API_KEY
    completion_engine = await openai.Completion.acreate(max_tokens=100, engine="text-davinci-003", prompt=question)
    return completion_engine.choices[0].text

Zum vorherigen synchronen Beispiel wurde nur das async vorm def eingefügt sowie statt create acreate.

Als Beispiel um zu zeigen wie man asynchron die ChatGPT Api nutzen kann, habe ich einige Anfragen geschrieben. Die Anfrage an ChatGPT ist "Beschreibe den Begriff " und dann der Name des Begriffs.


def get_description_question(name):
    return "Beschreibe den Begriff " + name


NAMES = ["Künstliche Intelligenz", "ChatGPT", "Python", "Design Pattern", "Informatik", "Laptop"]
QUESTIONS = map(get_description_question, NAMES)

Nun werden wir uns alle Begriffe von ChatGPT beschreiben lassen. Dafür nutzen wir asyncio:


async def get_answers_async():
    start = time.time()
    asyncs = list(map(lambda q: asyncio.create_task(aget_completion(q)), QUESTIONS))
    results = await asyncio.gather(*asyncs)
    with open("aresult.txt", "w") as f:
        f.write("\n".join(results))
    return time.time() - start

Um zu sehen, ob es wirklich asynchron abgelaufen ist, habe ich noch die Zeit gemessen. Die Asynchrone Methode ist deutlich schneller als die synchrone Methode. Der Unterschied wird immer größer desto mehr Anfragen an die Chat API gesendet werden. Die Laufzeit der synchronen Variante steigt linear, während die asynchrone etwa logarithmisch ansteigt.

Bei 20 Fragen an ChatGPT hat die synchrone Variante 90 Sekunden und die asynchrone 7 Sekunden benötigt.

Wie lange benötigt ChatGPT um auf Fragen zu antworten?

Ich habe eine Analyse der durchschnittlichen Antwortzeiten von ChatGPT durchgeführt. Dafür habe ich verschiedene Fragen genutzt:

"Write an article about ChatGPT",
"What is the highest building in Europe?",
"What is 3 plus 4 ?",
"Where are my car keys?"

Von denen wäre sicherlich Frage 3 für einen Menschen die einfachste. Die Frage 2 sollte für eine Menschen schwierig sein, aber für einen Computer sehr einfach.

Die Fragen haben folgendermaßen abgeschnitten:

ChatGPT python analyse Reaktionszeit Statistik

Wie man sieht war die 3+4 Frage die schnellste und "Write an article about ChatGPT" langsamste. Dies liegt unter anderem daran, dass die Antwort auf die Frage viel ausführlicher sein wird.

Als nächstes habe ich noch analysiert wie sich die Antwortzeit von ChatGPT verändert, wenn man die max_tokens erhöht.

Die eingezeichnete Regressions Linie hat einen r Score von 0.96, was bedeutet das es sich um eine positive lineare Beziehung handelt. Je höher die max_tokens sind desto länger braucht ChatGPT um die Frage zu beantworten.

Wenn man doppelt so viele Tokens anfragt, braucht die Antwort doppelt so lange.

In meinem Test haben Anfragen mit 300 Tokens durchschnittlich 5 Sekunden lang gedauert

CatGPT Text bearbeiten

Mit der ChatGPT Api kann man nicht nur Text vervollständigen sondern man kann auch Text bearbeiten. Dafür verwenden wir das text-davinci-edit-001 Modell.

Text-davinci-edit-001 ist eines der GPT-Modelle von OpenAI, es ist speziell für die Textbearbeitung und Text-Korrektur trainiert. Hier sind ein paar Beispiele, wie das Modell verwendet werden kann, um Text zu bearbeiten:

  1. Textkorrektur: Das Modell kann verwendet werden, um Rechtschreibfehler, Grammatikfehler und andere Arten von Fehlern in einem Text zu korrigieren. Beispiel: "Ich gehe heute abend auf die party" kann zu "Ich gehe heute Abend auf die Party" korrigiert werden.
  2. Textumformulierung: Das Modell kann verwendet werden, um einen gegebenen Text in eine andere Form zu bringen, ohne den ursprünglichen Sinn zu verändern. Beispiel: "Der Hund bellt" kann zu "Das Bellen des Hundes" umgeformuliert werden.
  3. Textsummarization: Das Modell kann verwendet werden, um einen langen Text auf die wichtigsten Punkte zusammenzufassen. Beispiel: Ein Artikel über eine neue Technologie kann auf die wichtigsten Funktionen und Anwendungen zusammengefasst werden.
  4. Text Übersetzung: Das Modell kann verwendet werden, um einen Text von einer Sprache in eine andere zu übersetzen.


openai.Edit.create(model="text-davinci-edit-001", input="What day of the wek is it?", instruction="Fix the spelling mistakes")

Das Ergebnis ist: "What day of the week is it?"

Fazit

Um schnell viele Anfragen an die OpenAI API zu machen, sollte man asynchron programmieren.

No items found.

Häufig gestellte Fragen:

Weitere Artikel:

Tobias Bück

Ich bin einer der Geschäftsführer der Softoft GbR und ich studiere Wirtschaftsinformatik. Aktuell beschäftige ich mich viel mit dem OTOBO-Helpdesk.
tobias.bueck@softoft.de
Zuletzt Aktualisiert
21.1.2023

Kontakt:

Gerne vereinbaren wir ein Beratungsgespräch

info@softoft.de
Wir Freuen Uns Über Deine Nachricht!
Bitte gebe Kontaktdaten an über die wir dich erreichen können
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Email Schreiben