Laragenie adalah chatbot AI yang berjalan pada baris perintah dari aplikasi Laravel Anda. Ini akan dapat membaca dan memahami salah satu basis kode Anda mengikuti beberapa langkah sederhana:
Sesederhana itu! Akselerasi alur kerja Anda secara instan dan berkolaborasi mulus dengan 'kolega' tercepat dan paling berpengetahuan yang pernah Anda miliki.
Ini adalah bot CLI yang sangat berguna yang dapat digunakan untuk:
Anda tidak terbatas pada pengindeksan file yang berbasis di proyek Laravel Anda. Anda dapat menggunakan ini untuk Monorepo, atau bahkan repo apa pun dalam bahasa apa pun. Anda tentu saja dapat menggunakan alat ini untuk mengindeks file yang tidak terkait kode juga.
Yang perlu Anda lakukan adalah menjalankan alat CLI ini dari direktori Laravel. Sederhana, kan?! ?

Catatan
Jika Anda meningkatkan dari versi Laragenie ^1.0.63 > 1.1 , ada perubahan variabel lingkungan Pinecone. Silakan lihat OpenAi dan Pinecone.
Untuk versi tertentu yang cocok dengan versi PHP, Laravel dan Laragenie Anda, silakan lihat tabel di bawah ini:
| Php | Versi Laravel | Versi Laragenie |
|---|---|---|
| ^8.1 | ^10.0 | > = 1.0 <1.2 |
| ^8.2 | ^10.0, ^11.0 | ^1.2.0 |
Paket ini menggunakan petunjuk Laravel yang mendukung MacOS, Linux, dan Windows dengan WSL. Karena keterbatasan dalam versi Windows PHP, saat ini tidak mungkin untuk menggunakan petunjuk Laravel pada windows di luar WSL.
Untuk alasan ini, Laravel meminta dukungan jatuh kembali ke implementasi alternatif seperti pembantu pertanyaan konsol Symfony.
Anda dapat menginstal paket melalui komposer:
composer require joshembling/laragenieAnda dapat menerbitkan dan menjalankan migrasi dengan:
php artisan vendor:publish --tag= " laragenie-migrations "
php artisan migrateJika Anda tidak ingin mempublikasikan migrasi, Anda harus beralih kredensial basis data di konfigurasi Laragenie Anda ke False. (Lihat detail file konfigurasi di bawah).
Anda dapat mempublikasikan file konfigurasi dengan:
php artisan vendor:publish --tag= " laragenie-config "Ini adalah isi dari file konfigurasi yang diterbitkan:
return [
' bot ' => [
' name ' => ' Laragenie ' , // The name of your chatbot
' welcome ' => ' Hello, I am Laragenie, how may I assist you today? ' , // Your welcome message
' instructions ' => ' Write in markdown format. Try to only use factual data that can be pulled from indexed chunks. ' , // The chatbot instructions
],
' chunks ' => [
' size ' => 1000 , // Maximum number of characters to separate chunks
],
' database ' => [
' fetch ' => true , // Fetch saved answers from previous questions
' save ' => true , // Save answers to the database
],
' extensions ' => [ // The file types you want to index
' php ' ,
' blade.php ' ,
' js ' ,
],
' indexes ' => [
' directories ' => [], // The directores you want to index e.g. ['app/Models', 'app/Http/Controllers', '../frontend/src']
' files ' => [], // The files you want to index e.g. ['tests/Feature/MyTest.php']
' removal ' => [
' strict ' => true , // User prompt on deletion requests of indexes
],
],
' openai ' => [
' embedding ' => [
' model ' => ' text-embedding-3-small ' , // Text embedding model
' max_tokens ' => 5 , // Maximum tokens to use when embedding
],
' chat ' => [
' model ' => ' gpt-4-turbo-preview ' , // Your OpenAI GPT model
' temperature ' => 0.1 , // Set temperature between 0 and 1 (lower values will have less irrelevance)
],
],
' pinecone ' => [
' topK ' => 2 , // Pinecone indexes to fetch
],
];Paket ini menggunakan OpenAi untuk memproses dan menghasilkan respons dan Pinecone untuk mengindeks data Anda.
Anda perlu membuat akun OpenAI dengan kredit, menghasilkan kunci API dan menambahkannya ke file .env Anda:
OPENAI_API_KEY=your-open-ai-key
Penting
Jika Anda menggunakan versi Laragenie sebelum 1.1 dan tidak ingin meningkatkan, langsung ke pinecone warisan.
Anda perlu membuat akun Pinecone. Ada dua jenis akun yang berbeda yang dapat Anda atur:
Pada awal 2024, Pinecone merekomendasikan Anda mulai dengan akun tanpa server. Anda secara opsional dapat mengatur akun dengan metode pembayaran yang terlampir untuk mendapatkan kredit gratis $ 100, namun, akun gratis memungkinkan hingga 100.000 indeks - kemungkinan lebih dari cukup untuk aplikasi berukuran sedang.
Buat indeks dengan 1536 dimensi dan metrik sebagai 'cosine'. Kemudian buat kunci API dan tambahkan detail ini ke file .env Anda:
PINECONE_API_KEY=an-example-pinecone-api-key
PINECONE_INDEX_HOST='https://an-example-url.aaa.gcp-starter.pinecone.io'
Host Anda dapat dilihat di kotak informasi di halaman indeks Anda, di samping metrik, dimensi, jenis pod, cloud, wilayah dan lingkungan.
Tip
Jika Anda meningkatkan ke Laragenie ^1.1, Anda dapat dengan aman menghapus variabel lingkungan lama: PINECONE_ENVIRONMENT dan PINECONE_INDEX .
Penting: Jika Anda menggunakan Laragenie 1.0.63 atau sebelumnya, Anda harus menggunakan akun Pinecone biasa dan bukan akun tanpa server. Saat Anda diisyaratkan untuk memilih opsi pada pembuatan akun, pastikan Anda memilih 'Lanjutkan dengan indeks berbasis pod'.
Buat lingkungan dengan dimensi 1536 dan beri nama, hasilkan kunci API dan tambahkan detail ini ke file .env Anda:
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_ENVIRONMENT=gcp-starter
PINECONE_INDEX=your-index
Setelah ini diatur, Anda akan dapat menjalankan perintah berikut dari direktori root Anda:
php artisan laragenieAnda akan mendapatkan 4 opsi:
Gunakan tombol panah untuk beralih melalui opsi dan masukkan untuk memilih perintah.

Catatan: Anda hanya dapat menjalankan tindakan ini setelah Anda memiliki file yang diindeks di database vektor Pinecone Anda (lewati ke bagian 'file indeks' jika Anda ingin mengetahui cara memulai pengindeksan).
Ketika database vektor Anda memiliki indeks, Anda dapat mengajukan pertanyaan yang berkaitan dengan basis kode Anda.
Jawaban dapat dihasilkan dalam format markdown dengan contoh kode, atau format apa pun yang Anda pilih. Gunakan konfigurasi bot.instructions
Di bawah setiap respons Anda akan melihat biaya yang dihasilkan (dalam dolar AS), yang akan membantu menjaga biaya yang dekat. Biaya respons ditambahkan ke database Anda, jika migrasi diaktifkan.
Biaya dapat bervariasi, tetapi respons kecil akan kurang dari $ 0,01. Respons yang jauh lebih besar bisa antara $ 0,02-0,05.
Seperti yang disebutkan sebelumnya, ketika Anda memiliki migrasi yang mengaktifkan pertanyaan Anda akan menyimpan ke database Anda.
Namun, Anda mungkin ingin memaksa penggunaan AI (mencegah pengambilan dari database) jika Anda tidak puas dengan jawaban awal. Ini akan menimpa jawaban yang sudah disimpan ke database.
Untuk memaksakan respons AI, Anda harus mengakhiri semua pertanyaan dengan --ai flag misalnya
Tell me how users are saved to the database --ai .
Ini akan memastikan model AI akan menilai kembali permintaan Anda, dan menghasilkan jawaban lain (ini bisa menjadi jawaban yang sama tergantung pada model GPT yang Anda gunakan).

Cara tercepat untuk mengindeks file adalah dengan meneruskan nilai tunggal ke directories atau array files di konfigurasi Laragenie. Saat Anda menjalankan perintah 'File Indeks', Anda akan selalu memiliki opsi untuk membenarkan kembali file -file ini. Ini akan membantu menjaga agar bot Laragenie Anda tetap up to date.
Pilih 'Ya', ketika diminta dengan Do you want to index your directories and files saved in your config?
' indexes ' => [
' directories ' => [ ' app/Models ' , ' app/Http/Controllers ' ],
' files ' => [ ' tests/Feature/MyTest.php ' ],
' removal ' => [
' strict ' => true ,
],
],Jika Anda memilih 'Tidak', Anda juga dapat mengindeks file dengan cara berikut:
app/Models/User.phpAppapp/Models untuk mengindeks semua model Andaapp/Models, tests/Feature, app/Http/Controllers/Controller.phpapp/Models/*.phplaragenie Anda. Anda dapat menggunakan Laragenie dengan cara apa pun yang Anda inginkan; Anda tidak terbatas hanya untuk mengindeks file berbasis Laravel.
Misalnya, proyek Laravel Anda dapat hidup dalam monorepo dengan dua entri root seperti frontend dan backend . Dalam hal ini, Anda dapat naik satu tingkat untuk mengindeks lebih banyak direktori dan file misalnya ../frontend/src/ atau ../frontend/components/Component.js .
Anda dapat menambahkan ini ke directories dan files Anda di konfigurasi Laragenie:
' indexes ' => [
' directories ' => [ ' app/Models ' , ' app/Http/Controllers ' , ' ../frontend/src/ ' ],
' files ' => [ ' tests/Feature/MyTest.php ' , ' ../frontend/components/Component.js ' ],
' removal ' => [
' strict ' => true ,
],
],Dengan menggunakan metode yang sama ini, Anda dapat secara teknis mengindeks file atau direktori apa pun yang Anda akses di server atau mesin lokal Anda.
Pastikan ekstensi Anda di konfigurasi Laragenie Anda cocok dengan semua jenis file yang ingin Anda indeks.
' extensions ' => [
' php ' , ' blade.php ' , ' js ' , ' jsx ' , ' ts ' , ' tsx ' , // etc...
],Catatan: Jika direktori, jalur, atau nama file Anda berubah, Laragenie tidak akan dapat menemukan indeks jika Anda memutuskan untuk memperbarui/menghapusnya nanti (kecuali jika Anda memotong seluruh database vektor Anda, atau masuk ke Pinecone dan menghapusnya secara manual).

Anda dapat menghapus file yang diindeks menggunakan metode yang sama yang tercantum di atas, kecuali dari menggunakan directories atau array files Anda di konfigurasi Laragenie - ini saat ini hanya untuk tujuan pengindeksan.
Jika Anda ingin menghapus semua file yang dapat Anda lakukan dengan memilih Remove all chunked data . Berhati -hatilah bahwa ini akan memotong seluruh basis data vektor Anda dan tidak dapat dibalik.

Untuk menghapus daftar file/direktori yang terpisah koma, pilih Remove data associated with a directory or specific file sebagai opsi.
Penghapusan ketat, yaitu pesan peringatan sebelum file dihapus, dapat dinyalakan/dimatikan dengan mengubah atribut 'ketat' menjadi false di konfigurasi Anda.
' indexes ' => [
' removal ' => [
' strict ' => true ,
],
],Anda dapat menghentikan Laragenie menggunakan metode berikut:
ctrl + c (Linux/Mac)No thanks, goodbye di menu pengguna setelah setidaknya 1 prompt telah berjalan.Bersenang -senang menggunakan Laragenie! ?
.env yang diperlukan, tetapi dapatkan kesalahan seperti "Anda tidak memberikan kunci API", Anda mungkin perlu menghapus cache dan konfigurasi: php artisan config:clear
php artisan cache:clearSilakan lihat Changelog untuk informasi lebih lanjut tentang apa yang telah berubah baru -baru ini.
Silakan lihat berkontribusi untuk detailnya.
Harap tinjau kebijakan keamanan kami tentang cara melaporkan kerentanan keamanan.
Lisensi MIT (MIT). Silakan lihat file lisensi untuk informasi lebih lanjut.