Laragenie是一個AI聊天機器人,可從Laravel應用程序從命令行中運行。按照幾個簡單的步驟,它將能夠閱讀和理解您的任何代碼庫:
就像那樣簡單!立即加速您的工作流程,並與您有史以來最快,最知識淵博的“同事”無縫協作。
這是一個特別有用的CLI機器人,可用於:
您不僅限於在Laravel項目中索引文件。您可以將其用於MonorePo的,或實際上任何語言的回購。您當然可以使用此工具來索引與代碼相關的文件。
您需要做的就是從Laravel目錄運行此CLI工具。簡單,對吧? ?

筆記
如果您是從laragenie版本^1.0.63 > 1.1升級,則可以更改Pinecone環境變量。請參閱Openai和Pinecone。
有關與您的PHP,Laravel和Laragenie版本相匹配的特定版本,請參閱下表:
| php | Laravel版本 | Laragenie版本 |
|---|---|---|
| ^8.1 | ^10.0 | > = 1.0 <1.2 |
| ^8.2 | ^10.0, ^11.0 | ^1.2.0 |
該軟件包使用Laravel提示,該提示支持MACOS,Linux和Windows WSL。由於Windows版本的PHP限制,目前不可能在WSL外部的Windows上使用Laravel提示。
因此,Laravel提示支持回到諸如Symfony Console問題助手之類的替代實現。
您可以通過作曲家安裝軟件包:
composer require joshembling/laragenie您可以通過以下方式發布並運行遷移。
php artisan vendor:publish --tag= " laragenie-migrations "
php artisan migrate如果您不想發布遷移,則必須將Laragenie Config的數據庫憑據切換到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來處理和生成響應和Pinecone來索引您的數據。
您需要創建一個帶有信用的OpenAI帳戶,生成一個API密鑰並將其添加到.env文件中:
OPENAI_API_KEY=your-open-ai-key
重要的
如果您在1.1之前使用laragenie版本,並且不想升級,請直接轉到Legacy Pinecone。
您將需要創建一個Pinecone帳戶。您可以設置兩種不同類型的帳戶類型:
截至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'
您的主機可以在您的索引頁面上的信息框中看到,以及指標,尺寸,POD類型,雲,區域和環境。
提示
如果您要升級到Laragenie ^1.1,則可以安全地刪除舊的環境變量: PINECONE_ENVIRONMENT和PINECONE_INDEX 。
重要的是:如果您使用的是Laragenie 1.0.63或之前,則必須使用常規的Pinecone帳戶,而不是無服務器帳戶。提示您選擇一個帳戶創建選項時,請確保選擇“繼續基於POD的索引”。
創建一個具有1536個維度並命名的環境,生成一個API密鑰,然後將這些詳細信息添加到.env文件中:
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_ENVIRONMENT=gcp-starter
PINECONE_INDEX=your-index
設置這些設置後,您將能夠從根目錄中運行以下命令:
php artisan laragenie您將獲得4個選項:
使用箭頭鍵在選項上切換並輸入以選擇命令。

注意:只有將Pinecone 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數組。當您運行“索引文件”命令時,您將始終可以選擇重新索引這些文件。這將有助於使您的Laragenie機器人保持最新。
選擇“是”,當提示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.phpAppapp/Models索引所有模型app/Models, tests/Feature, app/Http/Controllers/Controller.php輸入多個文件或目錄app/Models/*.phplaragenie配置文件中的文件擴展名。 您可以以任何想要的方式使用Laragenie;您不僅限於索引基於Laravel的文件。
例如,您的Laravel項目可能生活在一個帶有兩個根條目的Monorepo中,例如frontend和backend 。在這種情況下,您可以向上移動一個級別,以索引更多目錄和文件,例如../frontend/src/或../frontend/components/Component.js 。
您可以在laragenie配置中添加這些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 Config中使用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。
請有關詳細信息,請參閱貢獻。
請查看我們有關如何報告安全漏洞的安全政策。
麻省理工學院許可證(麻省理工學院)。請參閱許可證文件以獲取更多信息。