Laragenieは、Laravelアプリからコマンドラインで実行されるAIチャットボットです。いくつかの簡単な手順に従って、コードベースのいずれかを読み、理解することができます。
それはそれと同じくらい簡単です!ワークフローを即座に加速し、あなたが今まで持っていた最も速く、最も知識のある「同僚」とシームレスに協力します。
これは、以下に使用できる特に便利なCLIボットです。
Laravelプロジェクトに基づいてファイルのインデックス作成に限定されません。これをMonorepo、または実際にはあらゆる言語のリポジトリに使用できます。もちろん、このツールを使用して、コード関連のファイルもインデックスを付けます。
必要なのは、LaravelディレクトリからこのCLIツールを実行することだけです。シンプルですよね?! ?

注記
Laragenieバージョン^1.0.63 > 1.1からアップグレードしている場合、Pinecone環境変数に変更があります。 OpenaiとPineconeをご覧ください。
PHP、Laravel、およびLaragenieバージョンに一致する特定のバージョンについては、以下の表を参照してください。
| Php | Laravelバージョン | ララゲニーバージョン |
|---|---|---|
| ^8.1 | ^10.0 | > = 1.0 <1.2 |
| ^8.2 | ^10.0、 ^11.0 | ^1.2.0 |
このパッケージでは、WSLでmacOS、Linux、およびWindowsをサポートするLaravelプロンプトを使用します。 WindowsバージョンのPHPの制限により、WSL以外のWindowsでLaravelプロンプトを使用することは現在不可能です。
このため、Laravelsは、Symfony Consoleの質問ヘルパーなどの代替実装に戻ることをサポートしています。
Composer経由でパッケージをインストールできます。
composer require joshembling/laragenie次のように移行を公開して実行できます。
php artisan vendor:publish --tag= " laragenie-migrations "
php artisan migrate移行を公開したくない場合は、Laragenie構成のデータベース資格情報をFalseに切り替える必要があります。 (以下の構成ファイルの詳細を参照)。
構成ファイルを次のように公開できます。
php artisan vendor:publish --tag= " laragenie-config "これは、公開されている構成ファイルの内容です。
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
],
];このパッケージでは、OpenAIを使用して応答を処理および生成し、松ぼっくりを生成してデータをインデックス化します。
クレジットを使用してOpenAIアカウントを作成し、APIキーを生成し、 .envファイルに追加する必要があります。
OPENAI_API_KEY=your-open-ai-key
重要
1.1より前にララゲニーバージョンを使用していて、アップグレードを希望しない場合は、レガシーPineconeに直接移動してください。
Pineconeアカウントを作成する必要があります。セットアップできる2つの異なるタイプのアカウントがあります。
2024年初頭、Pineconeはサーバーレスアカウントから始めることをお勧めします。オプションで、無料クレジットで100ドルの支払い方法を添付したアカウントを設定できますが、無料のアカウントでは最大100,000のインデックスを許可します。
1536の寸法を持つインデックスを作成し、メトリックを「コサイン」として作成します。次に、APIキーを生成し、これらの詳細を.envファイルに追加します。
PINECONE_API_KEY=an-example-pinecone-api-key
PINECONE_INDEX_HOST='https://an-example-url.aaa.gcp-starter.pinecone.io'
ホストは、メトリック、寸法、ポッドタイプ、クラウド、地域、環境に加えて、インデックスページの情報ボックスに表示できます。
ヒント
Laragenie ^1.1にアップグレードする場合は、Legacy環境変数( PINECONE_ENVIRONMENTおよびPINECONE_INDEXを安全に削除できます。
重要:Laragenie 1.0.63以前を使用している場合は、サーバーレスアカウントではなく、通常のPineconeアカウントを使用する必要があります。アカウント作成のオプションを選択するように示唆されたら、「ポッドベースのインデックスを継続する」を選択してください。
1536の寸法の環境を作成して名前を付け、APIキーを生成し、これらの詳細を.envファイルに追加します。
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_ENVIRONMENT=gcp-starter
PINECONE_INDEX=your-index
これらがセットアップされると、ルートディレクトリから次のコマンドを実行できます。
php artisan laragenie4つのオプションが表示されます。
矢印キーを使用してオプションを切り替え、入力してコマンドを選択します。

注:Pinecone Vector Databaseでファイルをインデックス作成した場合にのみこのアクションを実行できます(インデックスを開始する方法を見つけたい場合は、「インデックスファイル」セクションにスキップします)。
Vectorデータベースにインデックスがある場合、コードベースに関連する質問をすることができます。
回答は、コードの例、または選択した任意の形式でマークダウン形式で生成できます。 bot.instructions configを使用して、必要に応じて詳細なAI命令を記述します。
各応答の下で、生成されたコスト(米ドルで)が表示されます。これは、費用を密接に追跡するのに役立ちます。移行が有効になっている場合、応答のコストがデータベースに追加されます。
コストは異なる場合がありますが、小さな応答は0.01ドル未満になります。はるかに大きな応答は、0.02〜0.05ドルです。
前述のように、移行が可能になった場合、質問はデータベースに保存されます。
ただし、最初の回答に満足していない場合は、AIの使用を強制し(データベースからのフェッチを防ぐ)ことをお勧めします。これにより、データベースに既に保存されている回答が上書きされます。
AI応答を強制するには、すべての質問を--aiフラグなどで終了する必要があります。
Tell me how users are saved to the database --ai 。
これにより、AIモデルがリクエストを再評価し、別の答えを出力します(これは、使用しているGPTモデルに応じて同じ答えになる可能性があります)。

ファイルをインデックスする最も簡単な方法は、Laragenie構成のdirectoriesまたはfiles配列に特異値を渡すことです。 「インデックスファイル」コマンドを実行すると、常にこれらのファイルを再インド化するオプションがあります。これは、ララゲニーのボットを最新の状態に保つのに役立ちます。
「はい」を選択します。プロンプトが表示されたときは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 ,
],
],「いいえ」を選択した場合、次の方法でファイルをインデックスすることもできます。
app/Models/User.phpで入力しますAppapp/Modelsなどのパスを明示的に通過して、すべてのモデルをインデックスする必要がありますapp/Models, tests/Feature, app/Http/Controllers/Controller.phpなどapp/Models/*.php入力しますlaragenie構成ファイルのファイル拡張子と一致する必要があることに注意してください。 希望する方法でララゲニーを使用できます。 Laravelベースのファイルのインデックス作成だけに限定されません。
たとえば、Laravelプロジェクトは、 frontendとbackendなどの2つのルートエントリを備えたモノレポに住むことができます。この例では、1 ../frontend/src/のレベルを上に移動して、より多くのディレクトリ../frontend/components/Component.jsファイルなどをインデックスすることができます。
これらをLaragenie Configのdirectoriesとfilesに追加できます。
' indexes ' => [
' directories ' => [ ' app/Models ' , ' app/Http/Controllers ' , ' ../frontend/src/ ' ],
' files ' => [ ' tests/Feature/MyTest.php ' , ' ../frontend/components/Component.js ' ],
' removal ' => [
' strict ' => true ,
],
],この同じ方法を使用して、サーバーまたはローカルマシンでアクセスできるファイルまたはディレクトリを技術的にインデックスすることができます。
laragenie構成の拡張機能が、インデックスを作成するすべてのファイルタイプと一致するようにします。
' extensions ' => [
' php ' , ' blade.php ' , ' js ' , ' jsx ' , ' ts ' , ' tsx ' , // etc...
],注:ディレクトリ、パス、またはファイル名の変更が変更された場合、Laragenieは後で更新/削除することにした場合にインデックスを見つけることができません(ベクトルデータベース全体を切り捨てたり、Pineconeに移動して手動で削除したりしない限り)。

Laragenie構成でdirectoriesまたはfiles配列を使用することを除いて、上記の同じ方法を使用してインデックス付きファイルを削除できます。これは現在、インデックスのみを目的としています。
すべてのファイルを削除する場合は、 Remove all chunked dataことでそうすることができます。これにより、ベクトルデータベース全体が切り捨てられ、逆転できないことに注意してください。

ファイル/ディレクトリのコンマ分離リストを削除するには、オプションとしてRemove data associated with a directory or specific file 。
厳密な削除、すなわちファイルが削除される前の警告メッセージは、構成内の「厳格」属性をfalseに変更することでオン/オフにすることができます。
' indexes ' => [
' removal ' => [
' strict ' => true ,
],
],次の方法を使用して、Laragenieを停止できます。
ctrl + c (Linux/Mac)No thanks, goodbye 。Laragenieを使って楽しんでください! ?
.env変数を正しく追加したが、「APIキーを提供しなかった」などのエラーが発生した場合は、キャッシュと構成をクリアする必要がある場合があります。 php artisan config:clear
php artisan cache:clear最近変更されたものの詳細については、Changelogをご覧ください。
詳細については、寄付をご覧ください。
セキュリティの脆弱性を報告する方法についてのセキュリティポリシーを確認してください。
MITライセンス(MIT)。詳細については、ライセンスファイルをご覧ください。