Laragenie는 Laravel 앱에서 명령 줄에서 실행되는 AI 챗봇입니다. 몇 가지 간단한 단계에 따라 코드베이스를 읽고 이해할 수 있습니다.
그렇게 간단합니다! 워크 플로를 즉시 가속화하고 가장 빠르고 지식이 풍부한 '동료'와 완벽하게 협력하십시오.
이것은 특히 유용한 CLI 봇입니다.
Laravel 프로젝트를 기반으로 한 인덱싱 파일에만 국한되지 않습니다. 당신은 이것을 Monorepo 또는 실제로 모든 언어로 Repo에 사용할 수 있습니다. 물론이 도구를 사용하여 코드 관련이 아닌 파일을 색인 할 수 있습니다.
Laravel 디렉토리 에서이 CLI 도구를 실행하기 만하면됩니다. 단순 해요?! ?

메모
Laragenie 버전에서 업그레이드하는 경우 ^1.0.63 > 1.1 이면 Pinecone 환경 변수가 변경됩니다. Openai 및 Pinecone을 참조하십시오.
PHP, Laravel 및 Laragenie 버전과 일치하는 특정 버전은 아래 표를 참조하십시오.
| PHP | 라 라벨 버전 | Laragenie 버전 |
|---|---|---|
| ^8.1 | ^10.0 | > = 1.0 <1.2 |
| ^8.2 | ^10.0, ^11.0 | ^1.2.0 |
이 패키지는 WSL이있는 MacOS, Linux 및 Windows를 지원하는 Laravel 프롬프트를 사용합니다. PHP의 Windows 버전의 제한으로 인해 현재 WSL 이외의 Windows에서 Laravel 프롬프트를 사용할 수 없습니다.
이러한 이유로 Laravel Prompts는 Symfony Console 질문 도우미와 같은 대체 구현으로 돌아가는 것을 지원합니다.
작곡가를 통해 패키지를 설치할 수 있습니다.
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 이전에 Laragenie 버전을 사용하고 업그레이드하고 싶지 않은 경우 레거시 피네콘으로 바로 이동하십시오.
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'
호스트는 인덱스 페이지의 정보 상자에서 메트릭, 크기, 포드 유형, 클라우드, 지역 및 환경과 함께 볼 수 있습니다.
팁
laragenie ^1.1 PINECONE_INDEX 업그레이드하는 경우 PINECONE_ENVIRONMENT 환경 변수를 안전하게 제거 할 수 있습니다.
중요 : 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 laragenie4 가지 옵션이 제공됩니다.
화살표 키를 사용하여 옵션을 전환하고 명령을 선택하려면 입력하십시오 .

참고 : Pinecone Vector 데이터베이스에 파일을 색인화 한 후에만이 작업을 실행할 수 있습니다 (인덱스를 시작하는 방법을 찾으려면 '인덱스 파일'섹션으로 건너 뜁니다).
벡터 데이터베이스에 인덱스가 있으면 코드베이스와 관련된 질문을 할 수 있습니다.
답변은 코드 예제 또는 선택한 형식으로 Markdown 형식으로 생성 될 수 있습니다. bot.instructions 구성을 사용하여 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/Modelsapp/Models, tests/Feature, app/Http/Controllers/Controller.phpapp/Models/*.phplaragenie 구성 파일의 파일 확장자와 일치해야합니다. 원하는 방식으로 Laragenie를 사용할 수 있습니다. Laravel 기반 파일을 인덱싱하는 것만으로는 국한되지 않습니다.
예를 들어, Laravel 프로젝트는 frontend 및 backend 와 같은 두 개의 루트 항목이있는 Monorepo에 살 수 있습니다. 이 경우 한 레벨로 이동하여 더 많은 디렉토리와 파일을 색인화 ../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 구성에서 directories 또는 files 배열을 사용하는 것 외에는 위에 나열된 동일한 방법을 사용하여 인덱스 된 파일을 제거 할 수 있습니다. 현재 인덱싱 목적으로 만 사용됩니다.
모든 파일을 제거하려면 모든 Remove all chunked data 수행 할 수 있습니다. 이것이 전체 벡터 데이터베이스를 자르고 반전 될 수 없다는 경고를받습니다.

쉼표로 분리 된 파일/디렉토리 목록을 제거하려면 Remove data associated with a directory or specific file 옵션으로 선택하십시오.
엄격한 제거, 즉 파일을 제거하기 전에 경고 메시지는 구성에서 'strict'속성을 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). 자세한 내용은 라이센스 파일을 참조하십시오.