Laragenie ist ein KI -Chatbot, der in der Befehlszeile aus Ihrer Laravel -App ausführt. Es wird in der Lage sein, eine Ihrer Codebasen nach ein paar einfachen Schritten zu lesen und zu verstehen:
Es ist so einfach so! Beschleunigen Sie Ihren Workflow sofort und arbeiten Sie nahtlos mit dem schnellsten und sachkundigsten "Kollegen" zusammen, den Sie jemals hatten.
Dies ist ein besonders nützlicher CLI -Bot, an den es verwendet werden kann:
Sie beschränken sich nicht auf die Indexierung von Dateien, die in Ihrem Laravel -Projekt basieren. Sie können dies für Monorepo oder in jeder Sprache verwenden. Sie können dieses Tool natürlich verwenden, um Dateien zu indexieren, die auch nicht mit Code zusammenhängen.
Alles, was Sie tun müssen, ist dieses CLI -Tool aus dem Laravel -Verzeichnis auszuführen. Einfach, richtig ?! ?

Notiz
Wenn Sie von einer Laragenie -Version ^1.0.63 > 1.1 aktualisieren, ändert sich die Variablen der Tinecone -Umgebungsvariablen. Bitte beachten Sie Openai und Pinecone.
Für bestimmte Versionen, die Ihren Versionen von PHP-, Laravel und Laragenie entsprechen, finden Sie in der folgenden Tabelle:
| Php | Laravel -Version | Laragenie -Version |
|---|---|---|
| ^8.1 | ^10.0 | > = 1,0 <1,2 |
| ^8.2 | ^10.0, ^11.0 | ^1.2.0 |
Dieses Paket verwendet Laravel -Eingabeaufforderungen, die MacOS, Linux und Windows mit WSL unterstützt. Aufgrund von Einschränkungen in der Windows -Version von PHP ist es derzeit nicht möglich, Laravel -Eingaben unter Windows außerhalb von WSL zu verwenden.
Aus diesem Grund unterstützt Laravel -Eingabeaufforderungen, die auf eine alternative Implementierung zurückzuführen sind, wie die Symfony Console Frage -Helfer.
Sie können das Paket über Komponist installieren:
composer require joshembling/laragenieSie können die Migrationen veröffentlichen und ausführen mit:
php artisan vendor:publish --tag= " laragenie-migrations "
php artisan migrateWenn Sie keine Migrationen veröffentlichen möchten, müssen Sie die Datenbank -Anmeldeinformationen in Ihrer Laragenie -Konfiguration auf false umschalten. (Siehe Details der Konfiguration Datei unten).
Sie können die Konfigurationsdatei mit:
php artisan vendor:publish --tag= " laragenie-config "Dies ist der Inhalt der veröffentlichten Konfigurationsdatei:
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
],
];In diesem Paket wird OpenAI verwendet, um Antworten zu verarbeiten und zu generieren, und Tinecone, um Ihre Daten zu indizieren.
Sie müssen ein OpenAI -Konto mit Credits erstellen, einen API -Schlüssel generieren und Ihrer .env -Datei hinzufügen:
OPENAI_API_KEY=your-open-ai-key
Wichtig
Wenn Sie vor 1.1 eine Laragenie -Version verwenden und nicht aktualisieren möchten, gehen Sie direkt zu Legacy Tinecone.
Sie müssen ein Tinecone -Konto erstellen. Es gibt zwei verschiedene Kontostypen, die Sie einrichten können:
Anfang 2024 empfehlen PineCone, dass Sie mit einem serverlosen Konto beginnen. Sie können optional ein Konto mit einer Zahlungsmethode einrichten, um 100 US -Dollar an kostenlosen Gutschriften zu erhalten. Ein kostenloses Konto ermöglicht jedoch bis zu 100.000 Indizes - wahrscheinlich mehr als genug für jede Anwendung in kleinem Medium.
Erstellen Sie einen Index mit 1536 Dimensionen und der Metrik als "Cosinus". Generieren Sie dann einen API -Schlüssel und fügen Sie diese Details Ihrer .env -Datei hinzu:
PINECONE_API_KEY=an-example-pinecone-api-key
PINECONE_INDEX_HOST='https://an-example-url.aaa.gcp-starter.pinecone.io'
Ihr Host ist neben den Metrik, den Abmessungen, dem Pod -Typ, der Cloud, der Region und der Umgebung im Informationsfeld auf Ihrer Indexseite zu sehen.
Tipp
Wenn Sie auf Laragenie ^1.1 aktualisieren, können Sie die Variablen der Legacy -Umgebung sicher entfernen: PINECONE_ENVIRONMENT und PINECONE_INDEX .
Wichtig: Wenn Sie Laragenie 1.0.63 oder Prior verwenden, müssen Sie ein reguläres Tinecone -Konto und kein serverloses Konto verwenden. Wenn Sie angedeutet werden, eine Option bei der Kontoerstellung auszuwählen, stellen Sie sicher, dass Sie „mit dem POD-basierten Index fortsetzen“ auswählen.
Erstellen Sie eine Umgebung mit 1536 Dimensionen und nennen Sie sie, generieren Sie einen API -Schlüssel und fügen Sie diese Details Ihrer .env -Datei hinzu:
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_ENVIRONMENT=gcp-starter
PINECONE_INDEX=your-index
Sobald diese Einrichtungen eingerichtet sind, können Sie den folgenden Befehl aus Ihrem Stammverzeichnis ausführen:
php artisan laragenieSie erhalten 4 Optionen:
Verwenden Sie die Pfeiltasten , um die Optionen durchzuschalten, und geben Sie den Befehl ein.

Hinweis: Sie können diese Aktion nur ausführen, sobald Sie Dateien in Ihrer Pnecone -Vektor -Datenbank indiziert haben (überspringen Sie den Abschnitt "Indexdateien", wenn Sie herausfinden möchten, wie Sie mit der Indexierung beginnen möchten).
Wenn Ihre Vektor -Datenbank Indizes hat, können Sie Fragen zu Ihrer Codebasis stellen.
Antworten können im Markdown -Format mit Codebeispielen oder jedem Format Ihrer Wahl generiert werden. Verwenden Sie den bot.instructions Config, um AI -Anweisungen so detailliert zu schreiben.
Unter jeder Antwort sehen Sie die generierten Kosten (in US -Dollar), was dazu beiträgt, die Kosten genau zu verfolgen. Die Kosten für die Antwort werden Ihrer Datenbank hinzugefügt, wenn Migrationen aktiviert sind.
Die Kosten können variieren, aber die kleinen Antworten betragen weniger als 0,01 USD. Viel größere Antworten können zwischen 0,02 und 0,05 USD liegen.
Wie bereits erwähnt, werden Ihre Fragen in Ihrer Datenbank gespeichert, wenn Migrationen aktiviert sind.
Möglicherweise möchten Sie jedoch die KI -Verwendung erzwingen (verhindern, dass das Abholen aus der Datenbank abholt), wenn Sie mit der ersten Antwort nicht zufrieden sind. Dadurch wird die bereits in der Datenbank gespeicherte Antwort überschreiben.
Um eine AI -Antwort zu erzwingen, müssen Sie alle Fragen mit einer --ai -Flagge z.
Tell me how users are saved to the database --ai .
Dadurch wird sichergestellt, dass das KI-Modell Ihre Anfrage erneut bewertet und eine weitere Antwort ausgibt (dies kann je nach Verwendungsmodell dieselbe Antwort sein).

Der schnellste Weg zum Indexdateien besteht darin, Singularwerte an das directories oder files -Array in der Laragenie -Konfiguration weiterzugeben. Wenn Sie den Befehl "Indexdateien" ausführen, haben Sie immer die Option, diese Dateien zu neu zu rücken. Dies wird dazu beitragen, Ihren Laragenie -Bot auf dem Laufenden zu halten.
Wählen Sie 'Ja', wenn Sie aufgefordert werden 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 ,
],
],Wenn Sie "Nein" auswählen, können Sie Dateien auch auf folgende Weise indexieren:
app/Models/User.phpAppapp/Models indexierenapp/Models, tests/Feature, app/Http/Controllers/Controller.phpapp/Models/*.phplaragenie -Konfigurationsdatei übereinstimmen müssen. Sie können Laragenie in irgendeiner Weise verwenden, die Sie wünschen. Sie sind nicht darauf beschränkt, nur Laravel -basierte Dateien zu indizieren.
Zum Beispiel kann Ihr Laravel -Projekt in einem Monorepo mit zwei Wurzeleinträgen wie frontend und backend leben. In dieser Instanz können Sie eine Ebene aufbauen, um mehr Verzeichnisse und Dateien zu indexieren ../frontend/components/Component.js z ../frontend/src/
Sie können diese zu Ihren directories und files in der Laragenie -Konfiguration hinzufügen:
' indexes ' => [
' directories ' => [ ' app/Models ' , ' app/Http/Controllers ' , ' ../frontend/src/ ' ],
' files ' => [ ' tests/Feature/MyTest.php ' , ' ../frontend/components/Component.js ' ],
' removal ' => [
' strict ' => true ,
],
],Mit derselben Methode können Sie technisch alle Dateien oder Verzeichnisse auf Ihrem Server oder lokalen Maschine zugreifen.
Stellen Sie sicher, dass Ihre Erweiterungen in Ihrer Laragenie -Konfiguration alle Dateitypen entsprechen, die Sie indexieren möchten.
' extensions ' => [
' php ' , ' blade.php ' , ' js ' , ' jsx ' , ' ts ' , ' tsx ' , // etc...
],HINWEIS: Wenn sich Ihre Verzeichnisse, Pfade oder Dateinamen ändern, kann Laragenie den Index nicht finden, wenn Sie ihn später aktualisieren/entfernen möchten (es sei denn, Sie verkürzen Ihre gesamte Vektordatenbank oder gehen Sie sie manuell in PineCone und löschen Sie sie).

Sie können indizierte Dateien mit denselben Methoden entfernen, die oben aufgeführt sind, außer aus der Verwendung Ihres directories oder files Array in der Laragenie -Konfiguration - dies dient derzeit nur zu Indexierungszwecken.
Wenn Sie alle Dateien entfernen möchten, können Sie dies tun, indem Sie Remove all chunked data . Seien Sie gewarnt, dass dies Ihre gesamte Vektor -Datenbank abschneiden wird und kann nicht umgekehrt werden.

Um eine von der Kommas getrennte Liste von Dateien/Verzeichnissen zu entfernen, wählen Sie die Remove data associated with a directory or specific file .
Strikte Entfernung, dh Warnmeldungen vor dem Entfernen von Dateien können eingeschaltet werden, indem das Attribut "Strict" in Ihrer Konfiguration auf False geändert wird.
' indexes ' => [
' removal ' => [
' strict ' => true ,
],
],Sie können Laragenie mit den folgenden Methoden stoppen:
ctrl + c (Linux/Mac)No thanks, goodbye im Benutzermenü nach mindestens 1 Eingabeaufforderung aus.Viel Spaß mit Laragenie! ?
.env -Variablen korrekt hinzugefügt haben, jedoch einen Fehler wie "Sie haben keine API -Taste angegeben", müssen Sie möglicherweise Ihren Cache und Ihre Konfiguration löschen: php artisan config:clear
php artisan cache:clearWeitere Informationen zu dem, was sich in letzter Zeit geändert hat, finden Sie in ChangeLog.
Weitere Informationen finden Sie unter Beitrag.
Bitte überprüfen Sie unsere Sicherheitsrichtlinien, wie Sie Sicherheitslücken melden können.
Die MIT -Lizenz (MIT). Weitere Informationen finden Sie unter Lizenzdatei.