Skip to content

Erstellen Sie einen Streamlit Chatbot mit LLM-Modellen: Schnellstart

Updated on

Haben Sie sich schon einmal gefragt, wie Siri, Alexa oder Ihr Kundenservice-Chatbot funktionieren? Nun, Sie erhalten gleich einen Blick hinter die Kulissen. In diesem Artikel werfen wir einen kurzen Blick auf die Welt der Chatbots, dieser praktischen kleinen KI-gesteuerten Tools, die die digitale Kommunikation revolutionieren. Sie sind überall, vom Kundenservice bis hin zu interaktiven Erlebnissen, und sie verändern die Art und Weise, wie wir kommunizieren und auf Informationen zugreifen.

Aber hier ist der Clou - wir sprechen nicht nur über irgendeinen Chatbot. Wir konzentrieren uns darauf, einen Chatbot mit Hilfe von Streamlit zu erstellen, einem Open-Source-App-Framework, das bei Machine Learning- und Data Science-Enthusiasten beliebt ist. Und das ist noch nicht alles - wir werden auch erkunden, wie wir ihn mit LangChain und verschiedenen Sprachmodellen, einschließlich LLM-Modellen, integrieren können. Also schnallen Sie sich an, denn wir werden einen datenschutzkonformen Chatbot erstellen, der nicht nur effizient ist, sondern auch die Privatsphäre der Benutzer respektiert.

Was ist Streamlit?

Streamlit ist ein schnelles, einfaches und unterhaltsames Open-Source-Tool zum Erstellen von Webanwendungen. Es wurde entwickelt, um Machine Learning-Ingenieuren und Data Scientists zu helfen, interaktive Webanwendungen rund um ihre Projekte zu erstellen, ohne dass Webentwicklungswissen erforderlich ist. Die Einfachheit und Geschwindigkeit von Streamlit machen es zu einer ausgezeichneten Wahl für den Aufbau einer Chatbot-Benutzeroberfläche.

Was ist ein Chatbot?

Ein Chatbot ist eine Softwareanwendung, die dazu entwickelt wurde, Online-Chatgespräche per Text oder Text-to-Speech zu führen, anstelle einen direkten Kontakt mit einem Live-Menschen bereitzustellen. Chatbot-Systeme sind darauf ausgelegt, das Verhalten eines menschlichen Gesprächspartners überzeugend zu simulieren. Typischerweise erfordern Chatbot-Systeme kontinuierliche Anpassungen und Tests, und viele in der Produktion sind nicht in der Lage, angemessen zu konversieren oder den Industriestandard des Turing-Tests zu bestehen.

Erstellen Sie einen Chatbot mit Streamlit

Einrichten der Entwicklungsumgebung

Bevor wir uns in den eigentlichen Prozess des Chatbot-Baus stürzen, müssen wir zunächst unsere Entwicklungsumgebung mit den benötigten Bibliotheken und Tools einrichten. Dies stellt sicher, dass unser Code erfolgreich ausgeführt werden kann und unser Chatbot wie beabsichtigt funktioniert. Die Datei requirements.txt enthält eine Liste der für dieses Projekt erforderlichen Bibliotheken und Tools. Hier finden Sie, was sie enthält:

  • streamlit: Diese Bibliothek hilft uns dabei, interaktive Webanwendungen für Machine Learning und Data Science-Projekte zu erstellen.
  • streamlit_chat: Diese Streamlit-Komponente wird zur Erstellung der Chatbot-Benutzeroberfläche verwendet.
  • langchain: Dies ist ein Framework zur Entwicklung von Anwendungen, die von Sprachmodellen angetrieben werden. Es bietet eine standardisierte Schnittstelle für Ketten, viele Integrationen mit anderen Tools und end-to-end-Ketten für gängige Anwendungen.
  • sentence_transformers: Diese Bibliothek ermöglicht es uns, Transformer-Modelle wie BERT, RoBERTa usw. zur Erzeugung semantischer Repräsentationen von Text (d.h. Einbettungen) zu verwenden, die wir für die Indizierung unserer Dokumente verwenden werden.
  • openai: Dies ist die offizielle OpenAI-Bibliothek, mit der wir ihre Sprachmodelle wie GPT-3.5-turbo verwenden können, um textähnlichen Text zu generieren.
  • unstructured and unstructured[local-inference]: Diese werden zur Dokumentenverarbeitung und zur Verwaltung unstrukturierter Daten verwendet.
  • pinecone-client: Dies ist der Client für Pinecone, einen Vektordatendienst, der es uns ermöglicht, Ähnlichkeitssuche auf Vektordaten durchzuführen.

Um all diese Bibliotheken zu installieren, können Sie den folgenden Befehl in Ihrem Terminal ausführen:

pip install -r requirements.txt

Dieser Befehl sagt pip (das Paket-Installer von Python), die in der Datei requirements.txt genannten Bibliotheken zu installieren.

Dokumentenindizierung

Der nächste Schritt auf unserer Reise zum Aufbau des Chatbots besteht darin, die Dokumente vorzubereiten und zu indizieren, die unser Chatbot zur Beantwortung von Anfragen verwenden wird. Hierfür verwenden wir das Skript indexing.py.

Laden von Dokumenten aus einem Verzeichnis mit LangChain

Der erste Schritt im Skript indexing.py besteht darin, die Dokumente aus einem Verzeichnis zu laden. Hierzu verwenden wir die von LangChain bereitgestellte Klasse DirectoryLoader. Diese Klasse akzeptiert ein Verzeichnis als Eingabe und lädt alle darin befindlichen Dokumente.

from langchain.document_loaders import DirectoryLoader
 
directory = '/content/data'
 
def load_docs(directory):
 loader = DirectoryLoader(directory)
 documents = loader.load()
 return documents
 
documents = load_docs(directory)
len(documents)

Aufteilen der Dokumente

Nach dem Laden der Dokumente werden diese in kleinere Abschnitte aufgeteilt. Die Größe der Abschnitte und die Überlappung zwischen ihnen können vom Benutzer definiert werden. Dies dient dazu, sicherzustellen, dass die Größe der Dokumente handhabbar ist und dass keine relevanten Informationen aufgrund der Aufteilung verloren gehen. Hierfür wird die Klasse RecursiveCharacterTextSplitter von LangChain verwendet.

from langchain.text_splitter import RecursiveCharacterTextSplitter
 
def split_docs(documents,chunk_size=500,chunk_overlap=20):
 text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)
 docs = text_splitter.split_documents(documents)
 return docs
 
docs = split_docs(documents)
print(len(docs))

Erstellen von Einbettungen

Sobald die Dokumente aufgeteilt sind, müssen wir diese Textabschnitte in ein Format umwandeln, das unser KI-Modell verstehen kann. Dies geschieht durch Erzeugen von Einbettungen des Textes mithilfe der von LangChain bereitgestellten Klasse SentenceTransformerEmbeddings.

from langchain.embeddings import SentenceTransformerEmbeddings
 
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")

Einbettungen in Pinecone speichern

Nachdem die Einbettungen erstellt wurden, müssen sie an einem Ort gespeichert werden, von dem aus sie einfach abgerufen und durchsucht werden können. Pinecone ist ein Vektordatenbankservice, der sich perfekt für diese Aufgabe eignet. Der Mustercode lautet wie folgt:

from langchain.pinecone import PineconeIndexer
 
def index_embeddings(embeddings, docs):
    indexer = PineconeIndexer(api_key='your-pinecone-api-key', index_name='your-index-name')
    indexer.index(embeddings, docs)
 
index_embeddings(embeddings, docs)

Dieses Skript erstellt einen Index in Pinecone und speichert die Einbettungen zusammen mit dem entsprechenden Text. Nun kann der Chatbot bei jeder Frage eines Benutzers diesen Index durchsuchen, um den ähnlichsten Text zu finden und die entsprechende Antwort zurückzugeben.

Erstellen der Chatbot-Schnittstelle mit Streamlit

Mit unseren indizierten und zur Suche bereiten Dokumenten können wir uns nun auf den Aufbau der Chatbot-Schnittstelle konzentrieren. Streamlit bietet eine einfache und intuitive Möglichkeit, interaktive Webanwendungen zu erstellen, und ist perfekt für unsere Chatbot-Benutzeroberfläche.

Streamlit Chat-Komponente

Die Streamlit-Chat-Komponente ist eine neue Möglichkeit, Chatbots zu erstellen. Sie bietet eine Chat-App-ähnliche Benutzeroberfläche und ermöglicht es einem auf Streamlit bereitgestellten Chatbot, eine coole Benutzeroberfläche zu haben. Um diese Komponente zu verwenden, müssen Sie sie separat mit pip installieren:

pip install streamlit-chat

Nach der Installation können Sie sie in Ihrer Streamlit-App importieren:

import streamlit as st
from streamlit_chat import chat
 
@st.cache(allow_output_mutation=True)
def get_chat():
    return chat()
 
chat = get_chat()

Dieser Code erstellt eine neue Chat-Benutzeroberfläche in Ihrer Streamlit-App. Sie können diesem Chat mit Hilfe der add_message-Methode Nachrichten hinzufügen:

chat.add_message("Hallo, wie kann ich Ihnen heute helfen?", "bot")

Integration des Chatbots mit LangChain

LangChain ist ein Framework zur Entwicklung von Anwendungen, die von Sprachmodellen unterstützt werden. Es bietet eine standardisierte Schnittstelle für Chains, viele Integrationen mit anderen Tools und End-to-End-Chains für gängige Anwendungen. Um unseren Chatbot mit LangChain zu integrieren, müssen wir die Funktion load_chain in main.py ändern.

from langchain import LangChain
 
def load_chain():
    chain = LangChain(api_key='your-openai-api-key')
    return chain
 
chain = load_chain()

Dieser Code erstellt eine neue Instanz von LangChain mit Ihrem OpenAI API-Schlüssel. Sie können diese Instanz verwenden, um Antworten auf Benutzeranfragen zu generieren.

Erstellen einer No-Code-Datenvisualisierungsanwendung mit PyGWalker

PyGWalker (opens in a new tab) ist ein weiteres großartiges Tool ohne Code. Sie können diese Open Source Python Library verwenden, um ganz einfach Streamlit-Datenvisualisierungsanwendungen zu erstellen.

PyGWalker + Streamlit Online Demo (opens in a new tab)

PyGWalker (opens in a new tab) ist eine Python-Bibliothek, mit der Sie eine Tableau-ähnliche Benutzeroberfläche in Ihrer eigenen Streamlit-Anwendung mühelos einbetten können.

Schauen Sie sich dieses erstaunliche Video von Wie man Daten mit PyGWalker in Python erkundet (opens in a new tab) an, in dem die detaillierten Schritte für die Stärkung Ihrer Streamlit-Anwendung mit dieser leistungsstarken Datenvisualisierungs-Python-Bibliothek gezeigt werden!


Ein besonderer Dank geht an Sven und seinen großartigen Beitrag (opens in a new tab) zur PyGWalker-Community!

Zusätzlich können Sie auch diese Ressourcen überprüfen:

Data in Streamlit mit PyGWalker visualisieren (opens in a new tab)

Datenschutzorientierte Funktionen

In der heutigen digitalen Zeit sind Datenverstöße und Datenschutzbedenken weit verbreitet. Es ist wichtig sicherzustellen, dass unser Chatbot nicht nur ein nahtloses Benutzererlebnis bietet, sondern auch den Datenschutz des Benutzers respektiert. Wie erreichen wir das?

Zunächst können wir sicherstellen, dass unser Chatbot keinerlei personenbezogene Daten des Benutzers speichert. Die Streamlit-Chatbot-Komponente wurde mit dem Datenschutz im Hinterkopf entwickelt - sie speichert standardmäßig keine Benutzerdaten. Dies bedeutet, dass alle Gespräche, die Sie mit dem Chatbot führen, nur zwischen Ihnen und dem Bot bleiben, ohne dass Daten gespeichert oder für andere Zwecke verwendet werden.

Aber wir können noch weiter gehen. Wir können datenschutzorientierte Sprachmodelle verwenden, um sicherzustellen, dass unser Chatbot keine sensiblen Informationen behält. Diese Modelle werden so trainiert, dass sie sensible Daten nicht behalten. Zum Beispiel ist GPT-3.5-turbo von OpenAI ein Sprachmodell, das entwickelt wurde, um menschenähnlichen Text zu generieren, ohne sensible Informationen aus den eingegebenen Daten zu behalten. Dies bedeutet, dass selbst wenn ein Benutzer versehentlich sensible Informationen teilt, wird sich das Modell nicht an diese Daten erinnern oder sie in zukünftigen Interaktionen verwenden.

Fazit

Das Erstellen eines Chatbots mit Streamlit und LangChain ist ein einfacher Prozess, der das Einrichten der Umgebung, das Indizieren von Dokumenten, das Erstellen der Chatbot-Schnittstelle und das Einbinden datenschutzorientierter Funktionen umfasst. Mit der Leistungsfähigkeit von LLM-Modellen und Open-Source-Tools können Sie einen Chatbot erstellen, der nicht nur effizient und benutzerfreundlich ist, sondern auch den Datenschutz des Benutzers respektiert.

FAQs

  1. Wie erstellt man einen Chatbot auf Streamlit? Die Erstellung eines Chatbots auf Streamlit umfasst mehrere Schritte, einschließlich der Einrichtung Ihrer Entwicklungsumgebung, der Indizierung Ihrer Dokumente, der Erstellung der Chatbot-Benutzeroberfläche und der Gewährleistung von datenschutzbewussten Funktionen. Dieser Artikel bietet eine umfassende Anleitung zur Erstellung eines Chatbots mit Streamlit.

  2. Was ist die Verwendung von Streamlit Chat? Streamlit Chat wird verwendet, um eine benutzerfreundliche Chatbot-Benutzeroberfläche in Ihrer Streamlit-App zu erstellen. Es bietet eine Chat-App-ähnliche Oberfläche, die Ihren Chatbot interaktiver und ansprechender für Benutzer macht.

  3. Was ist der fortschrittlichste KI-Chatbot? Die fortschrittlichsten KI-Chatbots nutzen ausgeklügelte Sprachmodelle wie GPT-3.5-turbo von OpenAI. Diese Chatbots können menschenähnlichen Text generieren, Kontext verstehen und relevante Antworten liefern. Sie sind auch mit Datenschutz im Hinterkopf entworfen und stellen sicher, dass sie sensible Benutzerinformationen nicht speichern.