Analysez votre code localement à l'aide d'un LLM GPT4All. Aucune donnée partagée et aucune connexion Internet requise après avoir téléchargé tous les fichiers nécessaires. Eunomia est basé sur le projet privateGPT original d'imartinez. Eunomia se limite à analyser uniquement les fichiers de code source fournis et à vous donner une réponse basée sur votre requête.
Avec un nouveau projet Django
Avec un projet C++
LLM | Télécharger | Back-end | Taille |
---|---|---|---|
? ggml-gpt4all-l13b-snoozy.bin | Télécharger | lama | 8,0 Go |
?️ ggml-nous-gpt4-vicuna-13b.bin | Télécharger | lama | 8,0 Go |
? ggml-gpt4all-j-v1.3-groovy.bin | Télécharger | gptj | 3,7 Go |
Lang | Extension |
---|---|
Python | .py |
C++ | .cpp et .hpp |
Java | .java et .jar |
JS | .js |
Rubis | .rb |
Rouiller | .rs |
ALLER | .aller |
Échelle | .scala et .sc |
Rapide | .rapide |
PHP | .php |
Latex | .Texas |
Voici le lien vers le code source de la classe de langue de Langchain avec toutes les langues actuellement prises en charge par Langchain.
Eunomia utilise Chroma pour créer un vectorstore avec les fichiers du répertoire où est exécuté, puis utilise langchain pour alimenter le vectorstore vers le LLM de votre choix. Pour l'instant, seuls les modèles GPT4All sont pris en charge puisque je n'ai pas accès à ChatGPT.
Clonez d'abord le référentiel dans un dossier en utilisant :
https://github.com/Ngz91/Eunomia.git
Une fois le référentiel cloné, vous devez installer les dépendances dans le fichier Requirements.txt en exécutant pip install -r requirements.txt
(je vous recommande de le faire dans un environnement Python).
Téléchargez ensuite l'un des modèles pris en charge dans la section Modèles testés et enregistrez-le dans un dossier du dossier Eunomia.
Renommez example.env
en .env
et modifiez les variables de manière appropriée.
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
IMPORTANT : Il existe deux façons d'exécuter Eunomia, l'une consiste à utiliser python path/to/Eunomia.py arg1
et l'autre à créer un script batch et à le placer dans votre dossier Python Scripts (sous Windows, il se trouve sous UserAppDAta LocalProgamsPythonPythonxxxScripts) et en exécutant directement eunomia arg1
. De par la nature du fonctionnement d'Eunomia, il est recommandé de créer un script batch et de l'exécuter dans le dossier dans lequel vous souhaitez que le code soit analysé. Vous pouvez utiliser le fichier example.bat
comme exemple pour définir vous-même votre fichier batch, mais n'oubliez pas de modifier les chemins python pathtoEunomia.py %1
pour pointer vers le chemin où se trouve Eunomia.py sur votre machine. J'utiliserai désormais le script batch comme exemple.
Activez votre environnement Python (si vous en avez créé un), déplacez-vous vers le dossier où se trouve votre code et ingérez les fichiers pour créer le vectorstore que le LLM sélectionné utilisera comme contexte pour répondre à vos questions en exécutant :
eunomia ingest
La première fois que vous exécutez le script, une connexion Internet sera nécessaire pour télécharger le modèle d'intégration lui-même. Vous n’aurez besoin d’aucune connexion Internet lorsque vous exécuterez à nouveau l’ingestion.
Vous verrez quelque chose comme ceci si tout s'est bien passé :
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!
Une fois le vectorstore créé, vous pouvez démarrer Eunomia en exécutant :
eunomia start
La première fois, cela prendra quelques secondes. Une fois le chargement du modèle terminé, vous serez accueilli par une invite comme celle-ci si le modèle a été chargé avec succès :
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:
Remarque : Si vous rencontrez des erreurs lors du chargement du LLM, assurez-vous que vous utilisez le bon backend pour le LLM que vous utilisez. De plus, certaines réponses peuvent être incomplètes ou fausses. Lors des tests, j'ai découvert que cela pouvait être amélioré en essayant différentes tailles de morceaux, chevauchement de morceaux, n_ctx et target_source_chunks. Vous pouvez utiliser d'autres modèles pour tester si leur réponse est meilleure que celles testées jusqu'à présent, n'oubliez pas de rechercher comment utiliser ces modèles avec langchain et leurs backends respectifs.
Pour utiliser ce logiciel, vous devez avoir installé Python 3.10 ou version ultérieure. Les versions antérieures de Python ne seront pas compilées.
Si vous rencontrez une erreur lors de la création d'une roue pendant le processus pip install
, vous devrez peut-être installer un compilateur C++ sur votre ordinateur.
Pour installer un compilateur C++ sur Windows 10/11, procédez comme suit :
gcc
. Lorsque vous exécutez un Mac avec du matériel Intel (pas M1), vous pouvez rencontrer une erreur clang : : le compilateur clang ne prend pas en charge "-march=native" lors de l'installation de pip.
Si tel est le cas, définissez vos archflags lors de l'installation de pip. Par exemple : ARCHFLAGS="-arch x86_64" pip3 install -r conditions.txt
Il s'agit d'un projet de test visant à valider la faisabilité d'une solution entièrement privée de réponse aux questions utilisant des LLM et des intégrations vectorielles. Il n’est pas prêt pour la production et n’est pas destiné à être utilisé en production. La sélection de modèles n'est pas optimisée pour les performances, mais pour la confidentialité ; mais il est possible d'utiliser différents modèles et magasins vectoriels pour améliorer les performances.