Analisis kode Anda secara lokal menggunakan GPT4All LLM. Tidak ada data yang dibagikan dan tidak diperlukan koneksi internet setelah mengunduh semua file yang diperlukan. Eunomia didasarkan pada proyek privateGPT asli imartinez. Eunomia membatasi dirinya untuk hanya menganalisis file kode sumber yang disediakan dan memberi Anda jawaban berdasarkan pertanyaan Anda.
Dengan proyek Django baru
Dengan Proyek C++
LLM | Unduh | Bagian belakang | Ukuran |
---|---|---|---|
? ggml-gpt4all-l13b-snoozy.bin | Unduh | lama | 8,0 GB |
?️ ggml-nous-gpt4-vicuna-13b.bin | Unduh | lama | 8,0 GB |
? ggml-gpt4all-j-v1.3-groovy.bin | Unduh | gptj | 3,7 GB |
Lang | Perpanjangan |
---|---|
ular piton | .py |
C++ | .cpp & .hpp |
Jawa | .java & .jar |
JS | .js |
Rubi | .rb |
Karat | .rs |
PERGI | .pergi |
Skala | .scala & .sc |
Cepat | .cepat |
PHP | .php |
Getah | .tex |
Berikut tautan ke kode sumber Kelas Bahasa Langchain dengan semua bahasa yang saat ini didukung oleh Langchain.
Eunomia menggunakan Chroma untuk membuat vectorstore dengan file-file di direktori tempat dijalankan dan kemudian menggunakan langchain untuk memasukkan vectorstore ke LLM pilihan Anda. Saat ini, hanya model GPT4All yang didukung karena saya tidak memiliki akses ke ChatGPT.
Pertama-tama kloning repositori dalam folder menggunakan:
https://github.com/Ngz91/Eunomia.git
Setelah repositori dikloning, Anda perlu menginstal dependensi di file requiremen.txt dengan menjalankan pip install -r requirements.txt
(saya sarankan Anda melakukan ini di dalam lingkungan Python).
Kemudian unduh salah satu model yang didukung di Bagian Model yang Diuji dan simpan di dalam folder di dalam folder Eunomia.
Ganti nama example.env
menjadi .env
dan edit variabel dengan tepat.
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
PENTING: Ada dua cara untuk menjalankan Eunomia, satu adalah dengan menggunakan python path/to/Eunomia.py arg1
dan yang lainnya adalah dengan membuat skrip batch dan menempatkannya di dalam folder Python Scripts Anda (Di Windows terletak di bawah UserAppDAta LocalProgamsPythonPythonxxxScripts) dan menjalankan eunomia arg1
secara langsung. Berdasarkan sifat cara kerja Eunomia, Anda disarankan untuk membuat skrip batch dan menjalankannya di dalam folder tempat Anda ingin kode dianalisis. Anda dapat menggunakan file example.bat
sebagai contoh untuk menyetel sendiri file batch Anda, tetapi ingatlah untuk mengedit jalur python pathtoEunomia.py %1
untuk menunjuk ke jalur di mana Eunomia.py berada di mesin Anda. Saya akan menggunakan skrip batch sebagai contoh mulai sekarang.
Aktifkan lingkungan Python Anda (jika Anda membuatnya), pindah ke folder tempat kode Anda berada dan serap file untuk membuat penyimpanan vektor yang akan digunakan oleh LLM yang dipilih sebagai konteks untuk menjawab pertanyaan Anda dengan menjalankan:
eunomia ingest
Saat pertama kali Anda menjalankan skrip, diperlukan koneksi internet untuk mengunduh model embeddings itu sendiri. Anda tidak memerlukan koneksi internet apa pun saat menjalankan ingest lagi.
Anda akan melihat sesuatu seperti ini jika semuanya berjalan dengan benar:
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!
Setelah vectorstore dibuat, Anda dapat memulai Eunomia dengan menjalankan:
eunomia start
Pertama kali akan memakan waktu beberapa detik. Setelah selesai memuat model, Anda akan disambut dengan prompt seperti ini jika model berhasil dimuat:
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:
Catatan: Jika Anda mengalami kesalahan saat memuat LLM, pastikan Anda menggunakan backend yang benar untuk LLM yang Anda gunakan. Selain itu, beberapa jawaban mungkin tidak lengkap atau salah. Saat pengujian saya menemukan bahwa ini dapat ditingkatkan dengan mencoba berbagai ukuran potongan, tumpang tindih potongan, n_ctx dan target_source_chunks. Anda dapat menggunakan model lain untuk menguji apakah responsnya lebih baik daripada yang diuji sejauh ini, ingatlah untuk mencari cara menggunakan model tersebut dengan langchain dan backendnya masing-masing.
Untuk menggunakan perangkat lunak ini, Anda harus menginstal Python 3.10 atau lebih baru. Versi Python sebelumnya tidak dapat dikompilasi.
Jika Anda mengalami kesalahan saat membuat roda selama proses pip install
, Anda mungkin perlu menginstal kompiler C++ di komputer Anda.
Untuk menginstal kompiler C++ di Windows 10/11, ikuti langkah-langkah berikut:
gcc
. Saat menjalankan Mac dengan perangkat keras Intel (bukan M1), Anda mungkin mengalami clang: error: compiler clang tidak mendukung '-march=native' selama instalasi pip.
Jika demikian, atur archflags Anda selama instalasi pip. misalnya: ARCHFLAGS="-arch x86_64" pip3 install -r persyaratan.txt
Ini adalah proyek uji untuk memvalidasi kelayakan solusi pribadi sepenuhnya untuk menjawab pertanyaan menggunakan LLM dan penyematan Vektor. Ini belum siap produksi, dan tidak dimaksudkan untuk digunakan dalam produksi. Pemilihan model tidak dioptimalkan untuk kinerja, tetapi untuk privasi; namun dimungkinkan untuk menggunakan model dan penyimpanan vektor yang berbeda untuk meningkatkan kinerja.