Was hat es damit auf sich?
Vor 6 Monaten hat OpenAI ChatGPT veröffentlicht, ein neues Sprachmodell, das eine verbesserte Version von GPT‑3 ist und uns möglicherweise einen Ausblick darauf gibt, wozu GPT‑4 fähig sein wird, wenn es Anfang nächsten Jahres veröffentlicht wird (wie gemunkelt wird). Mit ChatGPT ist es möglich, sich mit dem Modell zu unterhalten und dabei auf frühere Punkte in der Unterhaltung zurückzugreifen.
Ich wollte ausprobieren, ob ich dieses Modell als Paarprogrammierer verwenden kann, d. h. ich kann ihm einige Anweisungen geben, und es erstellt den Code für mich. Ich würde diese Codeschnipsel natürlich immer noch doppelt überprüfen, aber zumindest müsste ich sie nicht mehr von Grund auf neu schreiben.
In diesem Blogbeitrag beschreibe ich, wie ich ChatGPT verwendet habe, um eine einfache Anwendung zur Stimmungsanalyse von Grund auf zu erstellen. Die Anwendung sollte auf einer EC2-Instanz laufen und ein modernes NLP-Modell aus dem Hugging Face Model Hub verwenden. Die Ergebnisse waren verblüffend!
Disclaimer: Ich musste einige Male versuchen, die Eingabeaufforderungen zu verfeinern, um die gewünschten Ergebnisse zu erzielen. Allerdings waren in der Regel nur geringfügige Verfeinerungen erforderlich, um die gewünschten Ergebnisse zu erzielen. Meine Prompts und der vom Modell generierte Code sind in diesem GitHub Repo zu finden.
Los geht’s
Ok, fangen wir an! Prüfen wir zunächst, ob ChatGPT bereit ist zu helfen:
Ok, das ist ein vielversprechender Anfang. Lassen Sie uns in die Details eintauchen, wie von unserem Begleiter gewünscht!
Erstellen einer CloudFormation-Vorlage für die EC2-Instanz
Wir wollen diese Anwendung auf einer EC2-Instanz laufen lassen, aber wir wollen uns nicht durch die AWS-Konsole klicken, um diese EC2-Instanz zu erstellen. Daher besteht unsere erste Aufgabe für ChatGPT darin, eine CloudFormation-Vorlage zu erstellen, die die EC2-Instanz einrichtet:
Die Anweisungen sind ziemlich spezifisch (ich musste z. B. die AMI-ID selbst nachschlagen), aber dennoch war ich ziemlich überrascht, dass eine fast perfekte CF-Vorlage herauskam. Beachten Sie, dass ChatGPT auch einige Haftungsausschlüsse am Ende des Codes setzt:
Der gesamte von ChatGPT erzeugte Code:
AWSTemplateFormatVersion: '2010-09-09'
Description: A simple CloudFormation template for creating a security group and launching an EC2 instance
Resources:
SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: chatgpt-demo-sg
GroupDescription: Security group for chatgpt-demo EC2 instance
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 8501
ToPort: 8501
CidrIp: 0.0.0.0/0
EC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: g4dn.xlarge
ImageId: ami-09f85944838b438c5
SecurityGroups:
- Ref: SecurityGroup
UserData:
'Fn::Base64': |
#!/bin/bash
# Activate the pre-built pytorch environment
source activate pytorch_p36
# Install the libraries "transformers" and "streamlit" via pip
pip install transformers streamlit
Beachten Sie, dass die EC2-Instanz nicht den Namen erhält, den wir in der Eingabeaufforderung angegeben haben. Aber gut, damit können wir erst einmal leben. Ein weiterer „Fehler“ in dieser Vorlage ist, dass die vorinstallierte Pytorch-Umgebung auf dem AMI „pytorch“ und nicht „pytorch_36“ heißt. Wir beheben das, indem wir den Umgebungsnamen ersetzen.
Wie führen wir dies nun tatsächlich aus? Fragen wir ChatGPT:
Ok, mit dieser Zeile wurde die Stackerstellung mit der CF-Vorlage gestartet. Nach ein paar Minuten sehen wir, dass die EC2-Instanz betriebsbereit ist. Beachten Sie, dass die Vorlage eine Sicherheitsgruppe erstellt hat und die EC2-Instanz diese Sicherheitsgruppe wie angegeben verwendet:
Außerdem sollten wir uns per SSH in die EC2-Instanz einloggen, um zu sehen, ob die benötigten Pakete installiert sind:
Sieht aus, als wäre alles für die Streamlit-Anwendung vorbereitet 😊.
Streamlit-Anwendung
Jetzt brauchen wir eine Anwendung, die auf Streamlit läuft und die Stimmung des Textes analysiert. Zu meiner Überraschung war das sogar einfacher, als ich erwartet hatte:
Auch hier ein netter Disclaimer am Ende.
Der gesamte Code:
import streamlit as st
from transformers import pipeline
# Set the title of the application
st.title("A sentiment analyser written by ChatGPT")
# Create the input text field
text = st.text_input("Enter some text to analyse:")
# Use the Hugging Face Pipeline API to create a sentiment classifier
sentiment_classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")
# Evaluate the text entered by the user and display the result
if text:
result = sentiment_classifier(text)[0]
st.write(f"Predicted sentiment: {result['label']}")
Für mich sieht das eigentlich gut aus. Versuchen wir mal, das ohne Änderungen auszuführen. Kopieren Sie diesen Code und fügen Sie ihn in eine Datei auf EC2 namens „app.py“ ein. Aber wie können wir Streamlit-Apps wieder ausführen? Fragen wir doch mal unseren „Kollegen“:
Wir haben Streamlit bereits installiert, also führen wir „streamlit run app.py“ aus:
Scheint alles gut zu sein!
Testen der Anwendung
Jetzt kommt der Moment der Wahrheit. Wir schließen die URL streamlit an und sehen, ob die Anwendung läuft.
Wow, ChatGPT hat gerade eine ganze Text-Sentiment-App nur mit unserer Anleitung gebaut 🤯
Fazit
Ich bin wirklich sprachlos. Das hat so viel Spaß gemacht und die Möglichkeiten sind endlos. Ich werde versuchen, in Zukunft mehr mit diesem Modell zu experimentieren und würde auch gerne hören, was Sie damit gebaut haben.
Quelle: towardsdatascience.com
Erfahren Sie hier mehr über Lösungen im Bereich Data Engineering oder besuchen Sie eines unserer kostenlosen Webinare.