Entwicklung der Textzusammenfassung: Ein Python-Tutorial mit GPT-3.5

Entwicklung der Textzusammenfassung: Ein Python-Tutorial mit GPT-3.5

Quellknoten: 2571007

Entwicklung der Textzusammenfassung: Ein Python-Tutorial mit GPT-3.5
Bild von Frimufilme on Freepik
 

Dies ist eine Ära, in der der KI-Durchbruch täglich kommt. Vor ein paar Jahren hatten wir nicht viele KI-generierte Produkte in der Öffentlichkeit, aber jetzt ist die Technologie für jedermann zugänglich. Es eignet sich hervorragend für viele einzelne Entwickler oder Unternehmen, die die Technologie erheblich nutzen möchten, um etwas Komplexes zu entwickeln, was lange dauern kann.

Einer der unglaublichsten Durchbrüche, die unsere Arbeitsweise verändern, ist die Veröffentlichung des GPT-3.5-Modell von OpenAI. Was ist das GPT-3.5-Modell? Wenn ich das Model für sich sprechen lasse. In diesem Fall lautet die Antwort „Ein hochentwickeltes KI-Modell im Bereich der Verarbeitung natürlicher Sprache mit enormen Verbesserungen bei der Generierung von kontextgenauem und relevantem Textt ”.

OpenAI stellt eine API für das GPT-3.5-Modell bereit, mit der wir eine einfache App entwickeln können, z. B. eine Textzusammenfassung. Dazu können wir Python verwenden, um die Modell-API nahtlos in unsere beabsichtigte Anwendung zu integrieren. Wie sieht der Ablauf aus? Lassen Sie uns darauf eingehen.

Es gibt einige Voraussetzungen, bevor Sie diesem Tutorial folgen, einschließlich:

– Kenntnisse in Python, einschließlich Kenntnisse in der Verwendung externer Bibliotheken und IDE

– Verständnis von APIs und Umgang mit dem Endpunkt mit Python

– Zugriff auf die OpenAI-APIs haben

Um Zugriff auf die OpenAI-APIs zu erhalten, müssen wir uns bei der registrieren OpenAI-Entwicklerplattform und besuchen Sie die API-Schlüssel anzeigen in Ihrem Profil. Klicken Sie im Internet auf die Schaltfläche „Neuen geheimen Schlüssel erstellen“, um API-Zugriff zu erhalten (siehe Abbildung unten). Denken Sie daran, die Schlüssel zu speichern, da ihnen die Schlüssel danach nicht mehr angezeigt werden.
 

Entwicklung der Textzusammenfassung: Ein Python-Tutorial mit GPT-3.5
Bild vom Autor
 

Nachdem alle Vorbereitungen abgeschlossen sind, versuchen wir, die Grundlagen des OpenAI-APIs-Modells zu verstehen.

Das Modell der GPT-3.5-Familie wurde für viele Sprachaufgaben spezifiziert, und jedes Modell in der Familie zeichnet sich durch einige Aufgaben aus. Für dieses Tutorial-Beispiel würden wir die verwenden gpt-3.5-turbo da es aufgrund seiner Leistungsfähigkeit und Kosteneffizienz das empfohlene aktuelle Modell war, als dieser Artikel geschrieben wurde.

Wir verwenden oft die text-davinci-003 im OpenAI-Tutorial, aber wir würden das aktuelle Modell für dieses Tutorial verwenden. Wir würden uns auf die verlassen Chat-Abschluss endpoint anstelle von Completion, da das aktuell empfohlene Modell ein Chat-Modell ist. Auch wenn der Name ein Chat-Modell war, funktioniert er für jede Sprachaufgabe.

Versuchen wir zu verstehen, wie die API funktioniert. Zuerst müssen wir die aktuellen OpenAI-Pakete installieren. 

pip install openai

 

Nachdem wir die Installation des Pakets abgeschlossen haben, versuchen wir, die API zu verwenden, indem wir eine Verbindung über den ChatCompletion-Endpunkt herstellen. Wir müssen jedoch die Umgebung festlegen, bevor wir fortfahren.

Erstellen Sie in Ihrer bevorzugten IDE (für mich ist es VS Code) zwei Dateien mit dem Namen .env und summarizer_app.py, ähnlich dem Bild unten.

 

Entwicklung der Textzusammenfassung: Ein Python-Tutorial mit GPT-3.5
Bild vom Autor
 

Das summarizer_app.py Hier würden wir unsere einfache Zusammenfassungsanwendung erstellen, und die .env Datei ist, wo wir unseren API-Schlüssel speichern würden. Aus Sicherheitsgründen wird immer empfohlen, unseren API-Schlüssel in einer anderen Datei zu trennen, anstatt sie in der Python-Datei fest zu codieren.

Im .env file geben Sie die folgende Syntax ein und speichern Sie die Datei. Ersetzen Sie your_api_key_here durch Ihren tatsächlichen API-Schlüssel. Ändern Sie den API-Schlüssel nicht in ein Zeichenfolgenobjekt; lass sie so wie sie ist. 

OPENAI_API_KEY=your_api_key_here

 

Um die GPT-3.5-API besser zu verstehen; Wir würden den folgenden Code verwenden, um den Wortzusammenfasser zu generieren.

openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages=[ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ],
)

 

Der obige Code zeigt, wie wir mit dem GPT-3.5-Modell der OpenAI-APIs interagieren. Mit der ChatCompletion-API erstellen wir eine Konversation und erhalten das beabsichtigte Ergebnis, nachdem wir die Eingabeaufforderung bestanden haben.

Lassen Sie uns jeden Teil aufschlüsseln, um sie besser zu verstehen. In der ersten Zeile verwenden wir die openai.ChatCompletion.create Code zum Erstellen der Antwort aus der Eingabeaufforderung, die wir an die API übergeben würden.

In der nächsten Zeile haben wir unsere Hyperparameter, die wir verwenden, um unsere Textaufgaben zu verbessern. Hier ist die Zusammenfassung jeder Hyperparameterfunktion:

  • model: Die Modellfamilie, die wir verwenden möchten. In diesem Tutorial verwenden wir das aktuell empfohlene Modell (gpt-3.5-turbo).
  • max_tokens: Die Obergrenze der vom Modell generierten Wörter. Es hilft, die Länge des generierten Textes zu begrenzen.
  • temperature: Die Zufälligkeit der Modellausgabe mit einer höheren Temperatur bedeutet ein vielfältigeres und kreativeres Ergebnis. Der Wertebereich liegt zwischen 0 und unendlich, obwohl Werte über 2 nicht üblich sind. 
  • top_p: Top-P- oder Top-k-Sampling oder Nucleus-Sampling ist ein Parameter zur Steuerung des Sampling-Pools aus der Ausgabeverteilung. Der Wert 0.1 bedeutet beispielsweise, dass das Modell nur die Ausgabe der obersten 10 % der Verteilung abtastet. Der Wertebereich lag zwischen 0 und 1; höhere Werte bedeuten ein vielfältigeres Ergebnis.
  • frequency_penalty: Die Strafe für das Wiederholungstoken aus der Ausgabe. Der Wertebereich liegt zwischen -2 und 2, wobei positive Werte das Modell daran hindern würden, Token zu wiederholen, während negative Werte das Modell dazu anregen, sich wiederholende Wörter zu verwenden. 0 bedeutet keine Strafe.
  • messages: Der Parameter, an den wir unsere Texteingabeaufforderung übergeben, die mit dem Modell verarbeitet werden soll. Wir übergeben eine Liste von Wörterbüchern, in denen der Schlüssel das Rollenobjekt ist (entweder „System“, „Benutzer“ oder „Assistent“), das dem Modell hilft, den Kontext und die Struktur zu verstehen, während die Werte der Kontext sind.
    •  Die Rolle „System“ ist die festgelegten Richtlinien für das Verhalten des Modells „Assistent“,
    •  Die Rolle „Benutzer“ stellt die Aufforderung der Person dar, die mit dem Modell interagiert,
    •  Die Rolle „Assistent“ ist die Antwort auf die Eingabeaufforderung „Benutzer“.

Nachdem wir den obigen Parameter erklärt haben, können wir sehen, dass die messages Der obige Parameter hat zwei Dictionary-Objekte. Das erste Wörterbuch ist, wie wir das Modell als Textzusammenfassung festlegen. Im zweiten würden wir unseren Text übergeben und die Zusammenfassungsausgabe erhalten. 

Im zweiten Wörterbuch sehen Sie auch die Variable person_type und promptdem „Vermischten Geschmack“. Seine person_type ist eine Variable, die ich verwendet habe, um den zusammengefassten Stil zu steuern, den ich im Tutorial zeigen werde. Während prompt Hier würden wir unseren zusammenzufassenden Text übergeben.

Fahren Sie mit dem Tutorial fort und platzieren Sie den folgenden Code in der summarizer_app.py Datei und wir werden versuchen, durchzuspielen, wie die Funktion unten funktioniert.

import openai
import os
from dotenv import load_dotenv load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY") def generate_summarizer( max_tokens, temperature, top_p, frequency_penalty, prompt, person_type,
): res = openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages= [ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ], ) return res["choices"][0]["message"]["content"]

 

Im obigen Code erstellen wir eine Python-Funktion, die verschiedene zuvor besprochene Parameter akzeptiert und die Textzusammenfassungsausgabe zurückgibt. 

Probieren Sie die obige Funktion mit Ihrem Parameter aus und sehen Sie sich die Ausgabe an. Lassen Sie uns dann mit dem Tutorial fortfahren, um eine einfache Anwendung mit dem Streamlit-Paket zu erstellen.

Stromlit ist ein Open-Source-Python-Paket, das zum Erstellen von Web-Apps für maschinelles Lernen und Data Science entwickelt wurde. Es ist einfach zu bedienen und intuitiv, daher wird es vielen Anfängern empfohlen. 

Lassen Sie uns das Streamlit-Paket installieren, bevor wir mit dem Tutorial fortfahren.

pip install streamlit

 

Nachdem die Installation abgeschlossen ist, fügen Sie den folgenden Code in die summarizer_app.py.

import streamlit as st #Set the application title
st.title("GPT-3.5 Text Summarizer") #Provide the input area for text to be summarized
input_text = st.text_area("Enter the text you want to summarize:", height=200) #Initiate three columns for section to be side-by-side
col1, col2, col3 = st.columns(3) #Slider to control the model hyperparameter
with col1: token = st.slider("Token", min_value=0.0, max_value=200.0, value=50.0, step=1.0) temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.0, step=0.01) top_p = st.slider("Nucleus Sampling", min_value=0.0, max_value=1.0, value=0.5, step=0.01) f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.0, step=0.01) #Selection box to select the summarization style
with col2: option = st.selectbox( "How do you like to be explained?", ( "Second-Grader", "Professional Data Scientist", "Housewives", "Retired", "University Student", ), ) #Showing the current parameter used for the model with col3: with st.expander("Current Parameter"): st.write("Current Token :", token) st.write("Current Temperature :", temp) st.write("Current Nucleus Sampling :", top_p) st.write("Current Frequency Penalty :", f_pen) #Creating button for execute the text summarization
if st.button("Summarize"): st.write(generate_summarizer(token, temp, top_p, f_pen, input_text, option))

 

Versuchen Sie, den folgenden Code in Ihrer Eingabeaufforderung auszuführen, um die Anwendung zu starten.

streamlit run summarizer_app.py

 

Wenn alles gut funktioniert, sehen Sie die folgende Anwendung in Ihrem Standardbrowser.

 

Entwicklung der Textzusammenfassung: Ein Python-Tutorial mit GPT-3.5
Bild vom Autor
 

Also, was ist im obigen Code passiert? Lassen Sie mich kurz jede Funktion erklären, die wir verwendet haben:

  • .st.title: Geben Sie den Titeltext der Webanwendung an.
  • .st.write: Schreibt das Argument in die Anwendung; es könnte alles sein, aber hauptsächlich ein Zeichenfolgentext.
  • .st.text_area: Stellen Sie einen Bereich für die Texteingabe bereit, der in der Variablen gespeichert und für die Eingabeaufforderung für unseren Textzusammenfasser verwendet werden kann
  • .st.columns: Objektcontainer, um eine Interaktion nebeneinander bereitzustellen.
  • .st.slider: Stellen Sie ein Schieberegler-Widget mit festgelegten Werten bereit, mit denen der Benutzer interagieren kann. Der Wert wird in einer Variablen gespeichert, die als Modellparameter verwendet wird.
  • .st.selectbox: Stellen Sie ein Auswahl-Widget bereit, mit dem Benutzer den gewünschten Zusammenfassungsstil auswählen können. Im obigen Beispiel verwenden wir fünf verschiedene Stile.
  • .st.expander: Stellen Sie einen Container bereit, den Benutzer erweitern und mehrere Objekte aufnehmen können.
  • .st.button: Stellen Sie eine Schaltfläche bereit, die die beabsichtigte Funktion ausführt, wenn der Benutzer sie drückt.

Da streamlit die Benutzeroberfläche automatisch nach dem vorgegebenen Code von oben nach unten gestalten würde, könnten wir uns mehr auf die Interaktion konzentrieren.  

Wenn alle Teile vorhanden sind, probieren wir unsere Zusammenfassungsanwendung mit einem Textbeispiel aus. Für unser Beispiel würde ich die verwenden Wikipedia-Seite zur Relativitätstheorie zusammenzufassender Text. Mit einem Standardparameter und einem Zweitklässlerstil erhalten wir das folgende Ergebnis.

Albert Einstein was a very smart scientist who came up with two important ideas about how the world works. The first one, called special relativity, talks about how things move when there is no gravity. The second one, called general relativity, explains how gravity works and how it affects things in space like stars and planets. These ideas helped us understand many things in science, like how particles interact with each other and even helped us discover black holes! 

 

Sie erhalten möglicherweise ein anderes Ergebnis als das obige. Probieren wir den Housewives-Stil aus und passen den Parameter ein wenig an (Token 100, Temperature 0.5, Nucleus Sampling 0.5, Frequency Penalty 0.3).

The theory of relativity is a set of physics theories proposed by Albert Einstein in 1905 and 1915. It includes special relativity, which applies to physical phenomena without gravity, and general relativity, which explains the law of gravitation and its relation to the forces of nature. The theory transformed theoretical physics and astronomy in the 20th century, introducing concepts like 4-dimensional spacetime and predicting astronomical phenomena like black holes and gravitational waves.

 

Wie wir sehen können, gibt es für denselben Text, den wir bereitstellen, einen Unterschied im Stil. Mit einer Änderungsaufforderung und einem Parameter kann unsere Anwendung funktionaler sein. 

Das Gesamtbild unserer Textzusammenfassungsanwendung ist im Bild unten zu sehen.

 

Entwicklung der Textzusammenfassung: Ein Python-Tutorial mit GPT-3.5
Bild vom Autor
 

Das ist das Tutorial zum Erstellen einer Textzusammenfassungsanwendungsentwicklung mit GPT-3.5. Sie könnten die Anwendung noch weiter optimieren und die Anwendung bereitstellen.

Generative KI ist auf dem Vormarsch, und wir sollten die Gelegenheit nutzen, indem wir eine fantastische Anwendung erstellen. In diesem Tutorial lernen wir, wie die GPT-3.5 OpenAI-APIs funktionieren und wie man sie verwendet, um mit Hilfe von Python und dem Streamlit-Paket eine Textzusammenfassungsanwendung zu erstellen.
 
 
Cornellius Yudha Wijaya ist Data Science Assistant Manager und Data Writer. Während er Vollzeit bei Allianz Indonesien arbeitet, liebt er es, Python- und Datentipps über soziale Medien zu teilen und Medien zu schreiben.
 

Zeitstempel:

Mehr von KDnuggets