Laragenie é um chatbot da AI que é executado na linha de comando do seu aplicativo Laravel. Será capaz de ler e entender qualquer uma de suas bases de código após algumas etapas simples:
É tão simples assim! Acelere seu fluxo de trabalho instantaneamente e colabore perfeitamente com o 'colega' mais rápido e experiente que você já teve.
Este é um bot da CLI particularmente útil que pode ser usado para:
Você não está limitado à indexação de arquivos com base no seu projeto Laravel. Você pode usar isso para Monorepo, ou mesmo qualquer repo em qualquer idioma. É claro que você pode usar esta ferramenta para indexar arquivos que também não estão relacionados ao código.
Tudo o que você precisa fazer é executar esta ferramenta da CLI no diretório Laravel. Simples, certo?! ?

Observação
Se você estiver atualizando a partir de uma versão de Laragenie ^1.0.63 > 1.1 , há uma alteração nas variáveis de ambiente pneu. Por favor, consulte OpenAi e Pinecone.
Para versões específicas que correspondem às versões PHP, Laravel e Laragenie, consulte a tabela abaixo:
| Php | Versão do Laravel | Versão de Laragenie |
|---|---|---|
| ^8.1 | ^10.0 | > = 1,0 <1,2 |
| ^8.2 | ^10.0, ^11.0 | ^1.2.0 |
Este pacote usa avisos de Laravel que suporta MacOS, Linux e Windows com WSL. Devido a limitações na versão do Windows do PHP, atualmente não é possível usar os prompts do Laravel no Windows fora do WSL.
Por esse motivo, os avisos do Laravel suporta voltar a uma implementação alternativa, como o Helper Symfony Console.
Você pode instalar o pacote via compositor:
composer require joshembling/laragenieVocê pode publicar e executar as migrações com:
php artisan vendor:publish --tag= " laragenie-migrations "
php artisan migrateSe você não deseja publicar migrações, deve alternar as credenciais do banco de dados em sua configuração de Laragenie para false. (Consulte os detalhes do arquivo de configuração abaixo).
Você pode publicar o arquivo de configuração com:
php artisan vendor:publish --tag= " laragenie-config "Este é o conteúdo do arquivo de configuração 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 pacote usa o OpenAI para processar e gerar respostas e pientar para indexar seus dados.
Você precisará criar uma conta OpenAI com créditos, gerar uma chave da API e adicioná -la ao seu arquivo .env :
OPENAI_API_KEY=your-open-ai-key
Importante
Se você estiver usando uma versão Laragenie antes do 1.1 e não quiser atualizar, vá direto para o Legacy Pinecone.
Você precisará criar uma conta Pinecone. Existem dois tipos diferentes de conta que você pode configurar:
No início de 2024, o Pinecone recomenda que você comece com uma conta sem servidor. Opcionalmente, você pode configurar uma conta com um método de pagamento anexado para obter US $ 100 em créditos gratuitos, no entanto, uma conta gratuita permite até 100.000 índices - provavelmente mais do que suficientes para qualquer aplicativo de tamanho pequeno.
Crie um índice com 1536 dimensões e a métrica como 'cosseno'. Em seguida, gerar uma chave da API e adicione esses detalhes ao seu arquivo .env :
PINECONE_API_KEY=an-example-pinecone-api-key
PINECONE_INDEX_HOST='https://an-example-url.aaa.gcp-starter.pinecone.io'
Seu host pode ser visto na caixa de informações da sua página de índice, juntamente com a métrica, dimensões, tipo de pod, nuvem, região e ambiente.
Dica
Se você estiver atualizando para Laragenie ^1.1, poderá remover com segurança as variáveis de ambiente herdado: PINECONE_ENVIRONMENT e PINECONE_INDEX .
IMPORTANTE: Se você estiver usando o Laragenie 1.0.63 ou anterior, deve usar uma conta regular e não uma conta sem servidor. Quando você estiver sugerido para selecionar uma opção na criação da conta, verifique se você selecione 'Continue com o índice baseado em POD'.
Crie um ambiente com 1536 dimensões e nomeie -o, gerar uma chave da API e adicione esses detalhes ao seu arquivo .env :
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_ENVIRONMENT=gcp-starter
PINECONE_INDEX=your-index
Depois que estes forem configurados, você poderá executar o seguinte comando do seu diretório raiz:
php artisan laragenieVocê receberá 4 opções:
Use as teclas de seta para alternar as opções e digitar para selecionar o comando.

NOTA: Você só pode executar essa ação depois de ter arquivos indexados no banco de dados do vetor pinecone (pule para a seção 'Index Arquivos', se desejar descobrir como começar a indexar).
Quando seu banco de dados vetorial tiver índices, você poderá fazer qualquer pergunta relacionada à sua base de código.
As respostas podem ser geradas no formato de marcação com exemplos de código ou em qualquer formato de sua escolha. Use a configuração bot.instructions para escrever instruções de IA tão detalhadas quanto necessário.
Sob cada resposta, você verá o custo gerado (em dólares americanos), o que ajudará a acompanhar de perto a despesa. O custo da resposta é adicionado ao seu banco de dados, se as migrações estiverem ativadas.
Os custos podem variar, mas pequenas respostas serão inferiores a US $ 0,01. Respostas muito maiores podem estar entre US $ 0,02 e 0,05.
Como mencionado anteriormente, quando você tiver migrações, suas perguntas salvarão no seu banco de dados.
No entanto, convém forçar o uso de IA (impeça a busca do banco de dados) se estiver insatisfeito com a resposta inicial. Isso substituirá a resposta já salva ao banco de dados.
Para forçar uma resposta de IA, você precisará encerrar todas as perguntas com uma bandeira --ai por exemplo
Tell me how users are saved to the database --ai .
Isso garantirá que o modelo de IA reavalie sua solicitação e produza outra resposta (essa pode ser a mesma resposta, dependendo do modelo GPT que você está usando).

A maneira mais rápida de indexar arquivos é passar em valores singulares para os directories ou files da matriz na configuração de Laragenie. Quando você executa o comando 'Index Arquivos', você sempre terá a opção de reindexar esses arquivos. Isso ajudará a manter seu bot de Laragenie atualizado.
Selecione 'SIM', quando solicitado com 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 ,
],
],Se você selecionar 'não', também poderá indexar arquivos das seguintes maneiras:
app/Models/User.phpAppapp/Models para indexar todos os seus modelosapp/Models, tests/Feature, app/Http/Controllers/Controller.phpapp/Models/*.phplaragenie . Você pode usar Laragenie da maneira que desejar; Você não está limitado a apenas indexar arquivos baseados em Laravel.
Por exemplo, seu projeto Laravel pode morar em um monorepo com duas entradas de raiz, como frontend e backend . Nesse caso, você pode subir um nível para indexar mais diretórios e arquivos, por exemplo ../frontend/src/ src/ ou ../frontend/components/Component.js .
Você pode adicioná -los aos seus directories e files na configuração de Laragenie:
' indexes ' => [
' directories ' => [ ' app/Models ' , ' app/Http/Controllers ' , ' ../frontend/src/ ' ],
' files ' => [ ' tests/Feature/MyTest.php ' , ' ../frontend/components/Component.js ' ],
' removal ' => [
' strict ' => true ,
],
],Usando esse mesmo método, você pode indexar tecnicamente quaisquer arquivos ou diretórios a que você tenha acesso no seu servidor ou máquina local.
Verifique se suas extensões em sua configuração de Laragenie correspondem a todos os tipos de arquivos que você deseja indexar.
' extensions ' => [
' php ' , ' blade.php ' , ' js ' , ' jsx ' , ' ts ' , ' tsx ' , // etc...
],NOTA: Se seus diretórios, caminhos ou nomes de arquivos alterarem, Laragenie não poderá encontrar o índice se você decidir atualizá -lo mais tarde (a menos que você truncem todo o banco de dados do vetor ou entre em pinecone e exclua -os manualmente).

Você pode remover arquivos indexados usando os mesmos métodos listados acima, exceto o uso de seus directories ou arquivos de files na configuração de Laragenie - atualmente é apenas para fins de indexação.
Se você deseja remover todos os arquivos, pode fazê -lo selecionando Remove all chunked data . Esteja avisado de que isso truncará todo o banco de dados do vetor e não poderá ser revertido.

Para remover uma lista separada por vírgula de arquivos/diretórios, selecione os Remove data associated with a directory or specific file como uma opção.
Remoção estrita, ou seja, as mensagens de aviso antes que os arquivos sejam removidas, podem ser ativadas/desligadas alterando o atributo 'rigoroso' para false em sua configuração.
' indexes ' => [
' removal ' => [
' strict ' => true ,
],
],Você pode parar Laragenie usando os seguintes métodos:
ctrl + c (Linux/Mac)No thanks, goodbye no menu do usuário após pelo menos 1 prompt de execução.Divirta -se usando Laragenie! ?
.env necessárias, mas receba um erro como "Você não forneceu uma chave da API", pode ser necessário limpar seu cache e configuração: php artisan config:clear
php artisan cache:clearConsulte Changelog para obter mais informações sobre o que mudou recentemente.
Por favor, consulte a contribuição para obter detalhes.
Revise nossa política de segurança sobre como relatar vulnerabilidades de segurança.
A licença do MIT (MIT). Consulte o arquivo de licença para obter mais informações.