Laragenie est un chatbot AI qui s'exécute sur la ligne de commande de votre application Laravel. Il sera en mesure de lire et de comprendre l'une de vos bases de code en suivant quelques étapes simples:
C'est aussi simple que ça! Accélérez votre flux de travail instantanément et collaborez de manière transparente avec le «collègue» le plus rapide et le plus compétent que vous ayez jamais eu.
Il s'agit d'un CLI particulièrement utile qui peut être utilisé pour:
Vous n'êtes pas limité à l'indexation des fichiers basés dans votre projet Laravel. Vous pouvez l'utiliser pour les monorepo, ou même n'importe quel dépôt dans n'importe quelle langue. Vous pouvez bien sûr utiliser cet outil pour indexer des fichiers qui ne sont pas également liés au code.
Tout ce que vous avez à faire est d'exécuter cet outil CLI à partir du répertoire Laravel. Simple, non ?! ?

Note
Si vous améliorez une version de Laragenie ^1.0.63 > 1.1 , il y a un changement dans les variables d'environnement de Pinecone. Veuillez consulter Openai et Pinecone.
Pour des versions spécifiques qui correspondent à vos versions PHP, Laravel et Laragenie, veuillez consulter le tableau ci-dessous:
| Php | Version Laravel | Version de Laragenie |
|---|---|---|
| ^ 8.1 | ^ 10.0 | > = 1,0 <1,2 |
| ^ 8.2 | ^ 10.0, ^ 11.0 | ^ 1.2.0 |
Ce package utilise des invites Laravel qui prennent en charge MacOS, Linux et Windows avec WSL. En raison des limites de la version Windows de PHP, il n'est actuellement pas possible d'utiliser des invites Laravel sur Windows en dehors de WSL.
Pour cette raison, Laravel invite le retour à une implémentation alternative telle que le Symfony Console Question aide.
Vous pouvez installer le package via le compositeur:
composer require joshembling/laragenieVous pouvez publier et exécuter les migrations avec:
php artisan vendor:publish --tag= " laragenie-migrations "
php artisan migrateSi vous ne souhaitez pas publier des migrations, vous devez basculer les informations d'identification de la base de données dans votre configuration de Laragenie en false. (Voir les détails du fichier de configuration ci-dessous).
Vous pouvez publier le fichier de configuration avec:
php artisan vendor:publish --tag= " laragenie-config "Ceci est le contenu du fichier de configuration publié:
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
],
];Ce package utilise OpenAI pour traiter et générer des réponses et des pigans pour indexer vos données.
Vous devrez créer un compte OpenAI avec des crédits, générer une clé API et l'ajouter à votre fichier .env :
OPENAI_API_KEY=your-open-ai-key
Important
Si vous utilisez une version de Laragenie avant 1.1 et que vous ne souhaitez pas mettre à niveau, allez directement à l'héritage de pignon.
Vous devrez créer un compte PineCone. Il existe deux différents types de comptes que vous pouvez configurer:
Au début de 2024, Pinecone vous recommande de commencer par un compte sans serveur. Vous pouvez éventuellement configurer un compte avec un mode de paiement joint pour obtenir 100 $ en crédits gratuits, cependant, un compte gratuit autorise jusqu'à 100 000 indices - probablement plus que suffisant pour toute application à petite taille.
Créez un index avec 1536 dimensions et la métrique comme «cosinus». Générez ensuite une clé API et ajoutez ces détails à votre fichier .env :
PINECONE_API_KEY=an-example-pinecone-api-key
PINECONE_INDEX_HOST='https://an-example-url.aaa.gcp-starter.pinecone.io'
Votre hôte peut être vu dans la zone d'information sur votre page d'index, aux côtés de la métrique, des dimensions, du type de pod, du cloud, de la région et de l'environnement.
Conseil
Si vous passez à Laragenie ^ 1.1, vous pouvez supprimer en toute sécurité les variables d'environnement héritées: PINECONE_ENVIRONMENT et PINECONE_INDEX .
IMPORTANT: Si vous utilisez Laragenie 1.0.63 ou avant, vous devez utiliser un compte PineCone ordinaire et non un compte sans serveur. Lorsque vous êtes laissé entendre pour sélectionner une option sur la création de compte, assurez-vous de sélectionner «Continuer avec l'index basé sur les pods».
Créez un environnement avec 1536 dimensions et nommez-le, générez une clé API et ajoutez ces détails à votre fichier .env :
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_ENVIRONMENT=gcp-starter
PINECONE_INDEX=your-index
Une fois celles-ci configurées, vous pourrez exécuter la commande suivante à partir de votre répertoire racine:
php artisan laragenieVous obtiendrez 4 options:
Utilisez les touches fléchées pour basculer via les options et entrez pour sélectionner la commande.

Remarque: vous ne pouvez exécuter cette action qu'une fois que vous avez des fichiers indexés dans votre base de données de vecteur de pinecone (passez à la section des «fichiers d'index» si vous souhaitez savoir comment démarrer l'indexation).
Lorsque votre base de données vectorielle a des index, vous pourrez poser toutes les questions relatives à votre base de code.
Les réponses peuvent être générées au format Markdown avec des exemples de code, ou tout format de votre choix. Utilisez la configuration de bot.instructions pour écrire des instructions AI aussi détaillées que vous en avez besoin.
Sous chaque réponse, vous verrez le coût généré (en dollars américains), ce qui aidera à garder une trace étroite des dépenses. Le coût de la réponse est ajouté à votre base de données, si les migrations sont activées.
Les coûts peuvent varier, mais les petites réponses seront inférieures à 0,01 $. Les réponses beaucoup plus importantes peuvent se situer entre 0,02 et 0,05 $.
Comme mentionné précédemment, lorsque les migrations ont permis de vous enregistrer dans votre base de données.
Cependant, vous voudrez peut-être forcer l'utilisation de l'IA (empêcher la récupération de la base de données) si vous n'êtes pas satisfait de la réponse initiale. Cela écrasera la réponse déjà enregistrée dans la base de données.
Pour forcer une réponse AI, vous devrez mettre fin à toutes les questions avec un drapeau --ai par exemple
Tell me how users are saved to the database --ai .
Cela garantira que le modèle d'IA réévaluera votre demande et publiera une autre réponse (cela pourrait être la même réponse en fonction du modèle GPT que vous utilisez).

Le moyen le plus rapide d'indexer les fichiers consiste à transmettre des valeurs singulières au tableau des directories ou files dans la configuration de Laragenie. Lorsque vous exécutez la commande «Index Files», vous aurez toujours la possibilité de réindexer ces fichiers. Cela aidera à garder votre bot de Laragenie à jour.
Sélectionnez «Oui», lorsque 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 ,
],
],Si vous sélectionnez «non», vous pouvez également indexer les fichiers de la manière suivante:
app/Models/User.phpAppapp/Models pour indexer tous vos modèlesapp/Models, tests/Feature, app/Http/Controllers/Controller.phpapp/Models/*.phplaragenie . Vous pouvez utiliser Laragenie de toutes les manières que vous souhaitez; Vous n'êtes pas limité à l'indexation des fichiers basés sur Laravel.
Par exemple, votre projet Laravel peut vivre dans un Monorepo avec deux entrées racine telles que frontend et backend . Dans ce cas, vous pouvez monter un niveau pour indexer plus de répertoires et de fichiers, par exemple ../frontend/src/ ou ../frontend/components/Component.js .
Vous pouvez les ajouter à vos directories et files dans la configuration de Laragenie:
' indexes ' => [
' directories ' => [ ' app/Models ' , ' app/Http/Controllers ' , ' ../frontend/src/ ' ],
' files ' => [ ' tests/Feature/MyTest.php ' , ' ../frontend/components/Component.js ' ],
' removal ' => [
' strict ' => true ,
],
],En utilisant cette même méthode, vous pouvez techniquement indexer tous les fichiers ou répertoires auxquels vous avez accès sur votre serveur ou votre machine locale.
Assurez-vous que vos extensions dans votre configuration de Laragenie correspondent à tous les types de fichiers que vous souhaitez indexer.
' extensions ' => [
' php ' , ' blade.php ' , ' js ' , ' jsx ' , ' ts ' , ' tsx ' , // etc...
],Remarque: Si vos répertoires, chemins ou noms de fichiers changent, Laragenie ne pourra pas trouver l'index si vous décidez de le mettre à jour / supprimer plus tard (sauf si vous tronquez votre base de données vectorielle entière, ou allez dans Pinecone et supprimez-les manuellement).

Vous pouvez supprimer des fichiers indexés en utilisant les mêmes méthodes répertoriées ci-dessus, sauf en utilisant votre directories ou votre tableau files dans la configuration de Laragenie - il s'agit actuellement de fins d'indexation uniquement.
Si vous souhaitez supprimer tous les fichiers, vous pouvez le faire en sélectionnant Remove all chunked data . Soyez averti que cela tronquera l'ensemble de votre base de données vectorielle et ne peut pas être inversé.

Pour supprimer une liste séparée de fichiers / répertoires, sélectionnez les Remove data associated with a directory or specific file en option.
La suppression stricte, c'est-à-dire les messages d'avertissement avant la suppression des fichiers, peut être activé / désactivé en modifiant l'attribut «strict» à false dans votre configuration.
' indexes ' => [
' removal ' => [
' strict ' => true ,
],
],Vous pouvez arrêter Laragenie en utilisant les méthodes suivantes:
ctrl + c (Linux / Mac)No thanks, goodbye dans le menu utilisateur après qu'au moins 1 invite a fonctionné.Amusez-vous à utiliser Laragenie! ?
.env requises, mais obtenez une erreur telle que "vous n'avez pas fourni de clé d'API", vous devrez peut-être effacer votre cache et votre configuration: php artisan config:clear
php artisan cache:clearVeuillez consulter Changelog pour plus d'informations sur ce qui a changé récemment.
Veuillez consulter la contribution pour plus de détails.
Veuillez consulter notre politique de sécurité sur la façon de signaler les vulnérabilités de sécurité.
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.