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。
请有关详细信息,请参阅贡献。
请查看我们有关如何报告安全漏洞的安全政策。
麻省理工学院许可证(麻省理工学院)。请参阅许可证文件以获取更多信息。