Dies ist der Quellcode von www.gptflix.ai
Wir werden einen GPTFLIX -QA -Bot mit OpenAI, Tinecone DB und Stromversorgung erstellen. Sie lernen, wie Sie Text an ein Einbettungsmodell vorbereiten. Sie erfassen die Einbettungen und Text, die aus dem Modell zum Upload in PineCone DB zurückgegeben wurden. Anschließend richten Sie einen Tinecone -DB -Index ein und laden die OpenAI -Einbettungen in den DB hoch, damit der Bot die Einbettungsdings suchen kann.
Schließlich werden wir eine QA -Bot -Frontend -Chat -App mit Streamlod einrichten. Wenn der Benutzer den Bot eine Frage stellt, sucht der Bot den Filmtext in Ihrem Tinecone DB. Es wird Ihre Frage zu einem Film beantworten, der auf Text aus der DB basiert.
Dies ist ein grundlegendes Gerüst, um Ihre eigenen wissensretrivischen Systeme aufzubauen. Es ist vorerst super grundlegend!
Dieses Repo enthält den GPTFLIX -Quellcode und ein Streamlit -Bereitstellungshandbuch.
Dieses Repo ist für die Bereitstellung auf Streamlit eingerichtet. Sie möchten Ihre Umgebungsvariablen wie folgt einstellen:
Geben Sie das GPTFLIX -Repo in Ihr Github -Konto.
Richten Sie ein Konto auf PineCone.io ein
Richten Sie ein Konto in Streamlit Cloud ein
Erstellen Sie eine neue App auf Streamlit. Verknüpfen Sie es mit Ihrer Gabel des Repo auf GitHub und verweisen Sie die App auf /chat/main.py
als Hauptausführung.
Gehen Sie zu Ihren App -Einstellungen und navigieren Sie zu Geheimnissen. Richten Sie das Geheimnis so ein:
[API_KEYS]
pinecone = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
openai = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
.env
-Datei im Root des Projekts mit Ihrem OpenAI -API -Schlüssel auf Ihrer lokalen Maschine. PINECONE_API_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Diese müssen natürlich Ihre Tinecone- und Openai -API -Schlüssel sein;)
Dieses Repo soll mit den MPST -Daten in /data_samples durch eine Demo gehen. Dies sind die Schritte:
p1.generate_index_mpst.py
aus, um den Text von ./data_sample/d0.mpst_1k_raw.csv
in ein Format vorzubereiten, das wir in ein Modell injizieren und ein Einbettung erhalten können. python p1.generate_index_mpst.py
p2.make_jsonl_for_requests_mpst.py
, um Ihre neue d1.mpst_1k_converted.csv
-Datei in eine JSONL -Datei mit Anweisungen zur Ausführung der Einbettungsanfragen gegen die OpenAI -API zu konvertieren. python p2.make_jsonl_for_requests_mpst.py
p3.api_request_parallel_processor.py
auf der JSONL -Datei von (2) aus, um Einbettung zu erhalten. python src/p3.api_request_parallel_processor.py
--requests_filepath data_sample/d2.embeddings_maker.jsonl
--save_filepath data_sample/d3.embeddings_maker_results.jsonl
--request_url https://api.openai.com/v1/embeddings
--max_requests_per_minute 1500
--max_tokens_per_minute 6250000
--token_encoding_name cl100k_base
--max_attempts 5
--logging_level 20
p4.convert_jsonl_with_embeddings_to_csv.py
mit der neuen JSONL -Datei, um einen hübschen CSV mit dem Text und den Einbettungen zu erstellen. python p4.convert_jsonl_with_embeddings_to_csv.py
p5.upload_to_pinecone.py
mit Ihren API -Schlüssel- und Datenbankeinstellungen aus, um alle Textdaten und Einbettungsdings hochzuladen. python p5.upload_to_pinecone.py
Sie können die App lokal ausführen, aber Sie müssen die Bilder entfernen (die Pfade sind in der streamlit -Cloud unterschiedlich).
Im Moment gibt es einige Daten in Sample_Data, die alle Kaggle als Beispiele entnommen haben.
[] Speicher hinzufügen: Fassen Sie frühere Fragen / Antworten zusammen und bereiten Sie die Eingabeaufforderung vor
[] Fügen Sie verschiedene Modi hinzu: breitere Suche in der Datenbank
[] Fügen Sie verschiedene Modi hinzu: AI -Töne / Zeichen für Antworten
[] Bessere Dokumente
Bessere Docs kommen bald! Fühlen Sie sich frei, sie beizutragen :)
#LIZENZ
MIT -Lizenz
Copyright (C) 2023 Stephan Sturges
Die Erlaubnis wird hiermit einer Person, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, kostenlos erteilt, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, und/oder Kopien der Software zu ermöglichen, um Personen zu beanstanden, an denen die Software zugänglich ist, um die folgenden Bedingungen zu beantragen.
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall haftet die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen, sei es in Vertragsmaßnahmen, unerlaubter Handlung oder anderweitig, aus oder im Zusammenhang mit der Software oder der Verwendung oder anderen Geschäften in der Software.