Erstellen Sie Ihre Chat-GPT-3-Webanwendung mit Streamlit in Python

Jan 27 2023
Nicht nur wegen des Hypes Der ChatGPT-3 (Generative Pre-trained Transformer) von OpenAI ist einer der leistungsfähigsten Chatbots, die zum Zeitpunkt des Schreibens dieses Artikels verfügbar sind. Sie können alles fragen und erhalten genaue Antworten.

Nicht nur wegen des Hypes

Vom Autor mit Stable Diffusion erstelltes Bild

Der ChatGPT-3 (Generative Pre-trained Transformer) von OpenAI ist einer der leistungsfähigsten Chatbots, die zum Zeitpunkt des Schreibens dieses Artikels verfügbar sind. Sie können alles fragen und erhalten genaue Antworten. Darüber hinaus bietet OpenAI eine API zur Verwendung in der Programmierung. Wir ziehen Anwendungen in Betracht, die aufgrund dieser Funktionen unterstützt werden, obwohl dies für einen anderen Artikel ist. Zunächst schauen wir uns in diesem Tutorial an, wie Sie mit der Python-API eine Chat-GPT-3-Web-App erstellen. Zum Zeitpunkt der Erstellung dieses Tutorials ist die vollständige ChatGPT-API noch nicht veröffentlicht und es gibt eine Warteliste .

STREAMLIT

Streamlit ist ein Open-Source-App-Framework, das sich ideal für maschinelles Lernen und Data Science eignet. Damit können Entwickler interaktive, webbasierte Anwendungen zur Datenvisualisierung und -analyse erstellen, ohne umfangreichen HTML-, CSS- oder JavaScript-Code schreiben zu müssen. Streamlit verwendet Python zum Erstellen der Apps, sodass Datenwissenschaftler und Ingenieure ihr vorhandenes Wissen und ihre Fähigkeiten problemlos nutzen können, um benutzerdefinierte, interaktive Tools für die Datenexploration und -analyse zu erstellen. Es ist sehr einfach, Python-Code und sogar interaktive Matplotlib-ähnliche Diagramme zu integrieren. Ein bisschen nervig ist das Hochladen von Daten, die aus Sicherheitsgründen verwendet werden sollen.

Es gibt zwei Möglichkeiten, Streamlit zu nutzen: entweder in der eigenen Cloud oder durch lokale Installation (auf Ihrem Computer oder Ihrem eigenen Webserver).

Für die erste Option müssen Sie ein Konto auf streamlit.io erstellen und von dort aus ein Github-Repository verknüpfen. Es ist wichtig, die erforderlichen Bibliotheken in den Anforderungen.txt-Dateien aufzulisten, da sonst die Bereitstellung nicht erfolgreich ist. Wenn geplant ist, Streamlit Cloud mit dem OpenAI-Schlüssel zu verwenden, kann es zu weiteren Problemen kommen, da der private Schlüssel auf Github veröffentlicht wird (OpenAI wird dies sofort erkennen und sich beschweren).

Die zweite Lösung erfordert eigene Ressourcen, bietet aber mehr Freiheit. Sie müssen diese Bibliotheken auf dem definierten Computer installieren:

  • Streamlit ( pip install streamlit)
  • Streamlit-Chat ( pip install streamlit_chat)
  • Offene KI( pip install openai)
  • Dotenv( pip install python-dotenv) (optional)

Um den Chat GPT-3 nutzen zu können, benötigen Sie den API-Schlüssel. Um dies zu erhalten, müssen Sie die Website von OpenAI besuchen. Gehen Sie nach der Anmeldung zu „API-Schlüssel anzeigen“.

Screenshot des Autors

Jetzt müssen Sie ein Streamlit-Python-Skript erstellen.

Fügen Sie nach dem Importieren der erforderlichen Bibliotheken den in der Datei gespeicherten API-Schlüssel ein openai.api_key. Generieren Sie dann die Antwort von GPT-3 generate_response , indem Sie die Benutzeraufforderung als Parameter verwenden. Hier wird auch das GPT-3-Modell angegeben 'text-davinci-003', es können jedoch auch andere Modelle verwendet werden. Es ist auch möglich, eine Begrenzung für die Eingabeaufforderung festzulegen ( max_tokens).

Die Temperaturvariable ist sehr relevant, da sie im Wesentlichen den Grad der Kreativität in der Reaktion definiert ( obwohl niemand Kreativität damit gerne zu sehr vereinfacht ). Sie kann zwischen 0 und 1 eingestellt werden. 0 erzeugt stabile Ergebnisse, während 1 sehr kreativ ist. Formaler ausgedrückt bestimmt die Temperatur, wie gierig das generative Modell ist.

import openai
import streamlit as st
from streamlit_chat import message
import os 
from dotenv import load_dotenv
load_dotenv('api_key.env')
openai.api_key = os.environ.get('API_KEY')
def generate_response(prompt):
    completion=openai.Completion.create(
        engine='text-davinci-003',
        prompt=prompt,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.6,
    )
    message=completion.choices[0].text
    return message

st.title("ChatGPT-like Web App")
#storing the chat
if 'generated' not in st.session_state:
    st.session_state['generated'] = []
if 'past' not in st.session_state:
    st.session_state['past'] = []
user_input=st.text_input("You:",key='input')
if user_input:
    output=generate_response(user_input)
    #store the output
    st.session_state['past'].append(user_input)
    st.session_state['generated'].append(output)
if st.session_state['generated']:
    for i in range(len(st.session_state['generated'])-1, -1, -1):
        message(st.session_state["generated"][i], key=str(i))
        message(st.session_state['past'][i], is_user=True, key=str(i) + '_user')

Level-Up-Codierung

Vielen Dank, dass Sie Teil unserer Community sind! Bevor du gehst:

  • Klatschen Sie für die Geschichte und folgen Sie dem Autor
  • Weitere Inhalte finden Sie in der Level Up Coding-Publikation
  • Folgen Sie uns: Twitter | LinkedIn | Newsletter