Laragenie es un chatbot Ai que se ejecuta en la línea de comando desde su aplicación Laravel. Podrá leer y comprender cualquiera de sus bases de código siguiendo algunos pasos simples:
¡Es tan simple como eso! Acelere su flujo de trabajo al instante y colabore sin problemas con el 'colega' más rápido y conocedor que haya tenido.
Este es un bot CLI particularmente útil que puede usarse para:
No se limita a la indexación de archivos basados en su proyecto Laravel. Puede usar esto para Monorepo, o de hecho cualquier repositorio en cualquier idioma. Por supuesto, puede usar esta herramienta para indexar archivos que no están relacionados con el código.
Todo lo que necesita hacer es ejecutar esta herramienta CLI desde el directorio de Laravel. Simple, ¿verdad? ?

Nota
Si está actualizando desde una versión de Laragenie ^1.0.63 > 1.1 , hay un cambio en las variables de entorno de PineCone. Consulte OpenAI y Pinecone.
Para versiones específicas que coincidan con sus versiones PHP, Laravel y Laragenie, consulte la tabla a continuación:
| Php | Versión de Laravel | Versión de Laragenie |
|---|---|---|
| ^8.1 | ^10.0 | > = 1.0 <1.2 |
| ^8.2 | ^10.0, ^11.0 | ^1.2.0 |
Este paquete utiliza las indicaciones de Laravel que admiten macOS, Linux y Windows con WSL. Debido a las limitaciones en la versión de Windows de PHP, actualmente no es posible utilizar las indicaciones de Laravel en Windows fuera de WSL.
Por esta razón, Laravel indica que se vuelve a caer a una implementación alternativa, como el Symfony Console Pregunta Helper.
Puede instalar el paquete a través del compositor:
composer require joshembling/larageniePuede publicar y ejecutar las migraciones con:
php artisan vendor:publish --tag= " laragenie-migrations "
php artisan migrateSi no desea publicar migraciones, debe alternar las credenciales de la base de datos en su configuración de Laragenie a False. (Consulte los detalles del archivo de configuración a continuación).
Puede publicar el archivo de configuración con:
php artisan vendor:publish --tag= " laragenie-config "Este es el contenido del archivo de configuración publicado:
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
],
];Este paquete utiliza OpenAI para procesar y generar respuestas y pinecone para indexar sus datos.
Deberá crear una cuenta de OpenAI con créditos, generar una clave API y agregarla a su archivo .env :
OPENAI_API_KEY=your-open-ai-key
Importante
Si está utilizando una versión de Laragenie antes de 1.1 y no quiere actualizar, vaya directamente a Legacy Pinecone.
Deberá crear una cuenta de Pinecone. Hay dos tipos diferentes de cuenta que puede configurar:
A principios de 2024, Pinecone le recomiendo que comience con una cuenta sin servidor. Opcionalmente, puede configurar una cuenta con un método de pago adjunto para obtener $ 100 en créditos gratuitos, sin embargo, una cuenta gratuita permite hasta 100,000 índices, probablemente más que suficiente para cualquier aplicación de tamaño pequeño.
Cree un índice con 1536 dimensiones y la métrica como 'coseno'. Luego genere una clave API y agregue estos detalles a su archivo .env :
PINECONE_API_KEY=an-example-pinecone-api-key
PINECONE_INDEX_HOST='https://an-example-url.aaa.gcp-starter.pinecone.io'
Su host se puede ver en el cuadro de información en su página de índice, junto con la métrica, las dimensiones, el tipo de POD, la nube, la región y el entorno.
Consejo
Si está actualizando a Laragenie ^1.1, puede eliminar de manera segura las variables de entorno heredado: PINECONE_ENVIRONMENT y PINECONE_INDEX .
IMPORTANTE: Si está utilizando Laragenie 1.0.63 o anterior, debe usar una cuenta Pinecone regular y no una cuenta sin servidor. Cuando esté insinuado para seleccionar una opción en la creación de la cuenta, asegúrese de seleccionar 'Continuar con el índice basado en POD'.
Cree un entorno con 1536 dimensiones y asígnelo, genere una clave API y agregue estos detalles a su archivo .env :
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_ENVIRONMENT=gcp-starter
PINECONE_INDEX=your-index
Una vez que se configuren, podrá ejecutar el siguiente comando desde su directorio root:
php artisan laragenieObtendrá 4 opciones:
Use las teclas de flecha para alternar a través de las opciones e ingresar para seleccionar el comando.

Nota: Solo puede ejecutar esta acción una vez que tenga archivos indexados en su base de datos Vector Pinecone (omita a la sección 'Index Archivos' si desea averiguar cómo comenzar a indexación).
Cuando su base de datos Vector tenga índices, podrá hacer cualquier pregunta relacionada con su base de código.
Las respuestas se pueden generar en formato de Markdown con ejemplos de código, o cualquier formato de su elección. Use la configuración bot.instructions para escribir instrucciones de IA tan detalladas como sea necesario.
Debajo de cada respuesta verá el costo generado (en dólares estadounidenses), lo que ayudará a mantener un seguimiento cercano de los gastos. El costo de la respuesta se agrega a su base de datos, si las migraciones están habilitadas.
Los costos pueden variar, pero las pequeñas respuestas serán inferiores a $ 0.01. Las respuestas mucho más grandes pueden estar entre $ 0.02-0.05.
Como se mencionó anteriormente, cuando tenga migraciones habilitadas, sus preguntas se ahorrarán en su base de datos.
Sin embargo, es posible que desee forzar el uso de AI (evitar obtener la obtención de la base de datos) si no está satisfecho con la respuesta inicial. Esto sobrescribirá la respuesta ya guardada en la base de datos.
Para forzar una respuesta de IA, deberá terminar todas las preguntas con una bandera --ai por ejemplo,
Tell me how users are saved to the database --ai .
Esto asegurará que el modelo AI vuelva a evaluar su solicitud y emite otra respuesta (esta podría ser la misma respuesta dependiendo del modelo GPT que esté utilizando).

La forma más rápida de indexar archivos es pasar en valores singulares a los directories o matriz files en la configuración de Laragenie. Cuando ejecute el comando 'archivos de índice', siempre tendrá la opción de reindexar estos archivos. Esto ayudará a mantener actualizado a su Bot Laragenie.
Seleccione 'Sí', cuando se le solicite 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 selecciona 'No', también puede indexar archivos de las siguientes maneras:
app/Models/User.phpAppapp/Models para indexar todos sus modelosapp/Models, tests/Feature, app/Http/Controllers/Controller.phpapp/Models/*.phplaragenie . Puede usar Laragenie de cualquier manera que desee; No se limita a simplemente indexar archivos basados en Laravel.
Por ejemplo, su proyecto Laravel puede vivir en un monorepo con dos entradas de raíz, como frontend y backend . En este caso, puede subir un nivel para indexar más directorios y archivos, por ejemplo, EG ../frontend/src/ o ../frontend/components/Component.js .
Puede agregarlos a sus directories y files en la configuración de Laragenie:
' indexes ' => [
' directories ' => [ ' app/Models ' , ' app/Http/Controllers ' , ' ../frontend/src/ ' ],
' files ' => [ ' tests/Feature/MyTest.php ' , ' ../frontend/components/Component.js ' ],
' removal ' => [
' strict ' => true ,
],
],Usando este mismo método, técnicamente puede indexar cualquier archivo o directorios a los que tenga acceso en su servidor o máquina local.
Asegúrese de que sus extensiones en su configuración Laragenie coincidan con todos los tipos de archivos que desea indexar.
' extensions ' => [
' php ' , ' blade.php ' , ' js ' , ' jsx ' , ' ts ' , ' tsx ' , // etc...
],Nota: Si cambian sus directorios, rutas o nombres de archivos, Laragenie no podrá encontrar el índice si decide actualizarlo/eliminarlo más adelante (a menos que trunce toda su base de datos vectorial, o vaya a Pinecone y los elimine manualmente).

Puede eliminar archivos indexados utilizando los mismos métodos enumerados anteriormente, excepto de usar sus directories o matriz files en la configuración de Laragenie; esto es actualmente solo para fines de indexación.
Si desea eliminar todos los archivos, puede hacerlo seleccionando Remove all chunked data . Tenga en cuenta que esto truncará toda su base de datos vectorial y no se puede revertir.

Para eliminar una lista separada por comas de archivos/directorios, seleccione los Remove data associated with a directory or specific file como opción.
La extracción estricta, es decir, los mensajes de advertencia antes de eliminar los archivos, se pueden activar/desactivar cambiando el atributo 'estricto' a False en su configuración.
' indexes ' => [
' removal ' => [
' strict ' => true ,
],
],Puede detener a Laragenie utilizando los siguientes métodos:
ctrl + c (Linux/Mac)No thanks, goodbye en el menú de usuario después de que se haya ejecutado al menos 1 mensaje.¡Diviértete usando Laragenie! ?
.env requeridas, pero obtenga un error como "No proporcionó una clave API", es posible que deba borrar su caché y configuración: php artisan config:clear
php artisan cache:clearConsulte ChangeLog para obtener más información sobre lo que ha cambiado recientemente.
Consulte contribuyendo para obtener más detalles.
Revise nuestra política de seguridad sobre cómo informar vulnerabilidades de seguridad.
La licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.