Analysieren Sie Ihren Code lokal mit einem GPT4All LLM. Nach dem Herunterladen aller erforderlichen Dateien ist keine Datenweitergabe und keine Internetverbindung erforderlich. Eunomia basiert auf dem ursprünglichen privateGPT-Projekt von imartinez. Eunomia beschränkt sich darauf, nur die bereitgestellten Quellcodedateien zu analysieren und Ihnen auf der Grundlage Ihrer Anfrage eine Antwort zu geben.
Mit einem neuen Django-Projekt
Mit einem C++-Projekt
LLM | Herunterladen | Backend | Größe |
---|---|---|---|
? ggml-gpt4all-l13b-snoozy.bin | Herunterladen | Lama | 8,0 GB |
?️ ggml-nous-gpt4-vicuna-13b.bin | Herunterladen | Lama | 8,0 GB |
? ggml-gpt4all-j-v1.3-groovy.bin | Herunterladen | gptj | 3,7 GB |
Lang | Verlängerung |
---|---|
Python | .py |
C++ | .cpp & .hpp |
Java | .java & .jar |
JS | .js |
Rubin | .rb |
Rost | .rs |
GEHEN | .gehen |
Scala | .scala & .sc |
Schnell | .schnell |
PHP | .php |
Latex | .tex |
Hier ist der Link zum Quellcode der Langchain-Sprachklasse mit allen Sprachen, die derzeit von Langchain unterstützt werden.
Eunomia verwendet Chroma, um einen Vectorstore mit den Dateien in dem Verzeichnis zu erstellen, in dem es ausgeführt wird, und verwendet dann Langchain, um den Vectorstore dem LLM Ihrer Wahl zuzuführen. Derzeit werden nur GPT4All-Modelle unterstützt, da ich keinen Zugriff auf ChatGPT habe.
Klonen Sie zunächst das Repository in einen Ordner mit:
https://github.com/Ngz91/Eunomia.git
Nachdem das Repository geklont wurde, müssen Sie die Abhängigkeiten in der Datei „requirements.txt“ installieren, indem Sie pip install -r requirements.txt
ausführen (ich würde empfehlen, dies in einer Python-Umgebung zu tun).
Laden Sie dann eines der unterstützten Modelle im Abschnitt „Getestete Modelle“ herunter und speichern Sie es in einem Ordner im Eunomia-Ordner.
Benennen Sie example.env
in .env
um und bearbeiten Sie die Variablen entsprechend.
PERSIST_DIRECTORY: is the folder you want your vectorstore in
LLM: Path to your GPT4All or LlamaCpp supported LLM
BACKEND: Backend for your model (refer to models tested section)
EMBEDDINGS_MODEL_NAME: SentenceTransformers embeddings model name (see https://www.sbert.net/docs/pretrained_models.html)
MODEL_N_CTX: Maximum token limit for the LLM model
TARGET_SOURCE_CHUNKS: The amount of chunks (sources) that will be used to answer a question
IGNORE_FOLDERS: List of folders to ignore
WICHTIG: Es gibt zwei Möglichkeiten, Eunomia auszuführen: Eine besteht darin, python path/to/Eunomia.py arg1
zu verwenden, und die andere darin, ein Batch-Skript zu erstellen und es in Ihrem Python-Skriptordner abzulegen (in Windows befindet es sich unter „BenutzerAppDAta“) LocalProgamsPythonPythonxxxScripts) und führen Sie eunomia arg1
direkt aus. Aufgrund der Funktionsweise von Eunomia empfiehlt es sich, ein Batch-Skript zu erstellen und es in dem Ordner auszuführen, in dem der Code analysiert werden soll. Sie können die Datei example.bat
als Beispiel für die Einrichtung Ihrer Batchdatei selbst verwenden. Denken Sie jedoch daran, die Pfade python pathtoEunomia.py %1
so zu bearbeiten, dass sie auf den Pfad verweisen, in dem sich Eunomia.py auf Ihrem Computer befindet. Ich werde von nun an das Batch-Skript als Beispiel verwenden.
Aktivieren Sie Ihre Python-Umgebung (sofern Sie eine erstellt haben), wechseln Sie in den Ordner, in dem sich Ihr Code befindet, und nehmen Sie die Dateien auf, um den Vektorspeicher zu erstellen, den das ausgewählte LLM als Kontext für die Beantwortung Ihrer Fragen verwendet, indem Sie Folgendes ausführen:
eunomia ingest
Wenn Sie das Skript zum ersten Mal ausführen, ist eine Internetverbindung erforderlich, um das Einbettungsmodell selbst herunterzuladen. Sie benötigen keine Internetverbindung, wenn Sie die Aufnahme erneut ausführen.
Wenn alles richtig gelaufen ist, sehen Sie etwa Folgendes:
Creating new vectorstore
Loading documents from D:FolderSomeTest
Loading new documents: 100%|██████████████████████████████| 7/7 [00:00<?, ?it/s]
Loaded 7 new documents from D:Projectstests
Split into 14 chunks of text (max. 1000 tokens each)
Creating embeddings. May take some minutes...
Vectorstore created, you can now run 'eunomia start' to use the LLM to interact with your code!
Sobald der Vectorstore erstellt ist, können Sie Eunomia starten, indem Sie Folgendes ausführen:
eunomia start
Beim ersten Mal dauert es einige Sekunden. Sobald das Laden des Modells abgeschlossen ist, werden Sie mit einer Meldung wie dieser begrüßt, wenn das Modell erfolgreich geladen wurde:
Found model file.
gptj_model_load: loading model from 'models\ggml-gpt4all-j-v1.3-groovy.bin' - please wait ...
gptj_model_load: n_vocab = 50400
gptj_model_load: n_ctx = 2048
gptj_model_load: n_embd = 4096
gptj_model_load: n_head = 16
gptj_model_load: n_layer = 28
gptj_model_load: n_rot = 64
gptj_model_load: f16 = 2
gptj_model_load: ggml ctx size = 5401.45 MB
gptj_model_load: kv self size = 896.00 MB
gptj_model_load: ................................... done
gptj_model_load: model size = 3609.38 MB / num tensors = 285
______ __ __ __ __ ______ __ __ __ ______
/ ___ / / / "-. / __ / "-./ / / __
__ _ \ -. \ / \ -./ \ \ __
_____\ _____\ _\"_\ _____\ _ _\ _\ _ _
/_____/ /_____/ /_/ /_/ /_____/ /_/ /_/ /_/ /_//_/
Enter a query:
Hinweis: Sollten beim Laden des LLM Fehler auftreten, stellen Sie sicher, dass Sie das richtige Backend für das von Ihnen verwendete LLM verwenden. Außerdem könnten einige Antworten unvollständig oder falsch sein. Beim Testen habe ich festgestellt, dass dies verbessert werden kann, indem man verschiedene Chunk-Größen, Chunk-Überlappungen, n_ctx und target_source_chunks ausprobiert. Sie können andere Modelle verwenden, um zu testen, ob ihre Reaktion besser ist als die bisher getesteten. Denken Sie daran, zu suchen, wie Sie diese Modelle mit Langchain und ihren jeweiligen Backends verwenden können.
Um diese Software verwenden zu können, muss Python 3.10 oder höher installiert sein. Frühere Versionen von Python lassen sich nicht kompilieren.
Wenn beim Erstellen eines Rads während des pip install
-Installationsprozesses ein Fehler auftritt, müssen Sie möglicherweise einen C++-Compiler auf Ihrem Computer installieren.
Gehen Sie folgendermaßen vor, um einen C++-Compiler unter Windows 10/11 zu installieren:
gcc
Komponente aus. Wenn Sie einen Mac mit Intel-Hardware (nicht M1) verwenden, kann es sein, dass bei der Pip-Installation clang: error: the clang compiler has not support '-march=native' auftritt.
Wenn ja, legen Sie Ihre Archflags während der Pip-Installation fest. Beispiel: ARCHFLAGS="-arch x86_64" pip3 install -r Anforderungen.txt
Dies ist ein Testprojekt zur Validierung der Machbarkeit einer vollständig privaten Lösung zur Beantwortung von Fragen mithilfe von LLMs und Vector-Einbettungen. Es ist noch nicht produktionsbereit und nicht für die Verwendung in der Produktion gedacht. Die Auswahl der Modelle ist nicht auf Leistung, sondern auf Datenschutz optimiert. Es ist jedoch möglich, verschiedene Modelle und Vektorspeicher zu verwenden, um die Leistung zu verbessern.