Hier der Code aus der KI-Presentation: https://pitch.com/public/bc7eaebb-5fb1-4e6f-bf84-ce9363c7abc0
Folgender Code ist hier zu finden
Dieser Python-Code demonstriert eine Funktionalität zum Extrahieren von Sätzen aus einer Webseite und dem anschließenden Einbetten der Sätze mithilfe des OpenAI-Modells "embedding-adda-002". Die extrahierten Sätze und ihre Embeddings werden dann in einer CSV-Datei gespeichert.
- Der Code extrahiert Sätze aus einer zuvor generierten CSV-Datei (
sentences.csv
). Diese CSV-Datei sollte Sätze enthalten, die zuvor aus Webseiten extrahiert wurden. - Die Funktion
embed_text(text)
verwendet den OpenAI API-Schlüssel, um den gegebenen Text mit dem Modell "embedding-adda-002" einzubetten und gibt das Embedding zurück. - Die Funktion
embed_csv(input_file, output_file)
liest die Sätze aus der Eingabe-CSV-Datei ein und embeddet sie einzeln mithilfe derembed_text()
-Funktion. Die Sätze und ihre Embeddings werden dann in einer Ausgabe-CSV-Datei (embedded_sentences.csv
) gespeichert. - Der Code kann durch Ausführen der
main()
-Funktion gestartet werden. Dabei werden die zuvor generierte CSV-Datei (sentences.csv
) eingelesen, die Embeddings berechnet und in der Ausgabe-CSV-Datei (embedded_sentences.csv
) gespeichert.
- Erstelle eine CSV-Datei (
sentences.csv
) mit zuvor extrahierten Sätzen aus Webseiten. - Füge deinen OpenAI API-Schlüssel in den Code ein.
- Führe den Code aus, um die Sätze einzubetten und die Embeddings in einer Ausgabe-CSV-Datei (
embedded_sentences.csv
) zu speichern.
Bitte beachte, dass du die OpenAI Python-Bibliothek installieren und deinen API-Schlüssel in den Code einfügen musst, um die OpenAI-Funktionalität nutzen zu können.
Die Funktionalität in diesem Codeausschnitt besteht aus den folgenden Schritten:
- Importiere die Funktion
get_embedding
aus dem Modulopenai.embeddings_utils
. - Setze den Index des DataFrames
df
zurück und aktualisiere den DataFrame, sodass der Index neu nummeriert wird. - Füge eine neue Spalte namens 'embedding' zum DataFrame
df
hinzu. - Verwende die Methode
apply
auf die Spalte 'Sentence' des DataFrames, um die Funktionget_embedding
auf jeden Wert der Spalte anzuwenden. - Die Funktion
get_embedding
nimmt den Textwertx
und den optionalen Parameterengine
entgegen und gibt das entsprechende Embedding zurück. - Das Embedding wird mit dem Wert 'text-embedding-ada-002' generiert, der als Engine angegeben ist.
- Das generierte Embedding wird der 'embedding'-Spalte des DataFrames
df
zugewiesen. - Speichere den aktualisierten DataFrame
df
als CSV-Datei mit dem Namen 'embeddings.csv' im aktuellen Verzeichnis. - Gib den aktualisierten DataFrame
df
aus.
Dieser Q&A-Bot basiert auf dem GPT-3.5-Turbo-Modell von OpenAI und verwendet eine vorgefertigte Liste von Embeddings, um Fragen zu beantworten. Hier ist eine Übersicht über den Code und seine Funktionalität:
-
Importieren der benötigten Bibliotheken und Module:
openai
,pandas
,numpy
,sys
,os
unddotenv
. -
Laden der Umgebungsvariablen aus der
.env
-Datei mithilfe vonload_dotenv()
. -
Lesen der Embedding-Daten aus der CSV-Datei und Speichern in einem Pandas DataFrame (
df
). -
Setzen des OpenAI-API-Schlüssels aus der Umgebungsvariable
OPENAI_API_KEY
. -
Definieren von Regeln (
regel1
undregel2
) und einer Prompt-Vorlage (prepromt
), die dem Bot helfen, die Antworten strukturiert und formatiert zurückzugeben. -
Erstellen der Funktion
get_response(message, df, model)
, die die eigentliche Verarbeitung der Frage und Generierung der Antwort durchführt:-
Berechnen der Ähnlichkeiten zwischen der Frage (
message
) und den Embeddings im DataFrame mithilfe dercosine_similarity
-Funktion. -
Extrahieren der drei besten Übereinstimmungen (
top_3_answers
) aus dem DataFrame basierend auf den Ähnlichkeiten. -
Erstellen eines KONTEXT-Textes (
sim_kontext
), der die drei besten Antworten enthält. -
Anzeigen der top 3 Antworten und des KONTEXT-Textes als Loggings.
-
Erstellen von Systemnachrichten (
role: system
) und Benutzernachrichten (role: user
) für die Kommunikation mit dem GPT-3.5-Turbo-Modell. -
Verwenden der
openai.ChatCompletion.create()
-Methode, um eine Antwort vom Modell zu erhalten. -
Extrahieren des Antworttexts aus der API-Antwort.
-
Rückgabe der generierten Antwort.
-
Bitte beachten Sie, dass der Bot die Antwort basierend auf den Informationen im KONTEXT formuliert. Wenn die Antwort nicht im KONTEXT zu finden ist, wird eine Standardmeldung zurückgegeben.
Wenn Sie den Code verwenden möchten, stellen Sie sicher, dass Sie den OpenAI-API-Schlüssel in der .env
-Datei hinterlegt haben und die erforderlichen Bibliotheken installiert sind.
Diese Streamlit-Anwendung ermöglicht es Ihnen, eine Frage einzugeben und eine Antwort zu erhalten. Der Bot verwendet die OpenAI GPT-3.5-Turbo-Modell, um die Frage zu analysieren und basierend auf dem vorhandenen Kontext die beste Antwort zu generieren.
- Geben Sie Ihre Frage in das Eingabefeld ein.
- Klicken Sie auf "Antwort erhalten", um die Frage an den Bot zu senden.
- Der Bot analysiert Ihre Frage und den vorhandenen Kontext, um eine passende Antwort zu generieren.
- Die generierte Antwort wird unterhalb des Eingabefelds angezeigt.
- Stellen Sie sicher, dass Ihre Frage präzise und verständlich formuliert ist, um genauere Antworten zu erhalten.
- Der Bot verwendet den vorhandenen Kontext, um die Antworten zu generieren. Die Qualität der Antworten hängt daher von der Qualität und Relevanz des Kontexts ab.
- Wenn die Antwort nicht im Kontext zu finden ist, wird der Bot keine Daten liefern und eine entsprechende Nachricht anzeigen.