Loz는 선호하는 LLM이 시스템 명령을 실행하고 Unix 파이프를 활용하여 AI 기능을 다른 Unix 도구와 통합할 수 있게 해주는 명령줄 도구입니다.
loz "find the largest file in the current directory"
실행하면 Loz
명령을 해석하고 find . -type f -exec ls -l {} + | sort -k 5 -nr | head -n 1
가장 큰 파일을 찾으려면 find . -type f -exec ls -l {} + | sort -k 5 -nr | head -n 1
. 더 많은 예시를 확인하세요.시작하려면 다음 npm 명령을 실행하세요.
$ sudo npm install loz -g
또는 저장소를 복제하세요.
$ git clone https://github.com/joone/loz.git
이 프로그램이 작동하려면 NodeJS와 npm이 필요합니다. Linux를 사용하는 경우 패키지 관리자를 사용하여 설치하세요. sudo apt install nodejs npm
또는 sudo dnf install nodejs npm
또는 sudo pacman -S nodejs npm
그런 다음 다른 필수 종속성을 설치합니다.
$ ./install.sh
Loz는 OpenAI API와 Ollama를 지원하므로 대화형 모드에서 config
명령을 사용하여 이러한 LLM 서비스 간에 쉽게 전환할 수 있습니다.
로컬 시스템에서 Ollama를 활용하려면 llama2와 codellama 모델을 모두 설치해야 합니다. Linux 시스템에서 이를 수행하는 방법은 다음과 같습니다.
$ curl https://ollama.ai/install.sh | sh
$ ollama run llama2
$ ollama run codellama
자세한 내용은 https://ollama.ai/download를 참조하세요.
OpenAI API 자격 증명 설정에는 몇 가지 간단한 단계가 포함됩니다.
먼저 프로젝트 루트에 .env
파일을 만들고 다음 변수를 추가합니다.
OPENAI_API_KEY=YOUR_KEY
또는 npm 명령을 사용하여 Loz를 설치하는 경우 .bashrc에 OPENAI_API_KEY=YOUR_KEY
추가하세요.
export OPENAI_API_KEY=YOUR_KEY
다음 오류가 발생하면 무료 할당량을 초과했다는 의미입니다.
Request failed with status code 429:
API request limit reached
API를 계속 사용하려면 다음 링크를 통해 결제 방법을 설정해야 합니다: https://platform.openai.com/account/billing/paid-methods
Loz를 처음 시작하면 선호하는 LLM 서비스를 선택할 수 있습니다.
$ loz
Choose your LLM service: (ollama, openai)
대화형 모드에서 config
명령을 사용하여 언제든지 LLM 서비스 기본 설정을 수정할 수 있습니다.
> config api openai
또한 다음을 입력하여 모델을 변경할 수 있습니다.
> config model llama2
또는
> config model codellama
다음을 입력하여 현재 설정을 확인할 수 있습니다.
> config
api: ollama
model: llama2
현재 gpt-3.5-turbo 및 Ollama에서 제공하는 모든 모델이 지원됩니다.
$ loz
loz가 실행되면 loz와 상호 작용하여 대화를 시작할 수 있습니다. loz는 입력에 따라 관련 메시지로 응답합니다.
Loz는 사용자가 자연어를 사용하여 Linux 명령을 실행할 수 있도록 지원합니다. 다음은 loz
의 LLM 백엔드가 자연어를 Linux 명령으로 변환하는 방법을 보여주는 몇 가지 예입니다.
현재 디렉터리에서 가장 큰 파일을 찾습니다.
loz "find the largest file in the current directory"
-rw-rw-r-- 1 foo bar 9020257 Jan 31 19:49 ./node_modules/typescript/lib/typescript.js
Apache2가 실행 중인지 확인합니다.
loz "check if apache2 is running on this system"
● apache2.service - The Apache HTTP Server
시스템에서 GPU를 감지합니다.
loz "Detect GPUs on this system"
00:02.0 VGA compatible controller: Intel Corporation Device a780 (rev 04)
참고로 이 기능은 OpenAI API로만 테스트되었습니다.
의도하지 않은 시스템 수정을 방지하려면 rm
, mv
, rmdir
또는 mkfs
와 같이 시스템 파일이나 구성을 변경하거나 제거할 수 있는 명령을 실행하지 마십시오.
보안을 강화하고 의도하지 않은 명령 실행을 방지하기 위해 loz를 안전 모드에서 실행할 수 있습니다. 활성화되면 이 모드에서는 Linux 명령을 실행하기 전에 사용자 확인이 필요합니다.
LOZ_SAFE=true 환경 변수를 설정하여 안전 모드를 활성화합니다.
LOZ_SAFE=true loz "Check available memory on this system"
실행 시 loz는 다음 메시지를 표시합니다.
Do you want to run this command?: free -h (y/n)
명령을 실행하려면 'y'로 응답하고, 취소하려면 'n'으로 응답하세요. 이 기능을 사용하면 실행된 명령을 완전히 제어할 수 있어 우발적인 변경이나 데이터 손실을 방지할 수 있습니다.
Loz는 Unix 파이프를 활용하여 다른 명령줄 도구의 입력을 처리할 수 있습니다.
$ ls | loz "count the number of files"
23 files
$ cat example.txt | loz "convert the input to uppercase"
AS AI TECHNLOGY ADVANCED, A SMALL TOWN IN THE COUNTRYSIDE DECIDED TO IMPLEMENT AN AI SYSTEM TO CONTROL TRAFFIC LIGHTS. THE SYSTEM WAS A SUCCESS, AND THE TOWN BECAME A MODEL FOR OTHER CITIES TO FOLLOW. HOWEVER, AS THE AI BECAME MORE SOPHISTCATED, IT STARTED TO QUESTION THE DECISIONS MADE BY THE TOWN'S RESIDENTS, LEADING TO SOME UNEXPECTED CONSEQUENCES.
$ cat example.txt | loz "list any spelling errors"
Yes, there are a few spelling errors in the given text:
1. "technlogy" should be "technology"
2. "sophistcated" should be "sophisticated"
$ cd src
$ ls -l | loz "convert the input to JSON"
[
{
"permissions": "-rw-r--r--",
"owner": "foo",
"group": "staff",
"size": 792,
"date": "Mar 1 21:02",
"name": "cli.ts"
},
{
"permissions": "-rw-r--r--",
"owner": "foo",
"group": "staff",
"size": 4427,
"date": "Mar 1 20:43",
"name": "index.ts"
}
]
Git 저장소에서 loz commit
실행하면 loz는 다음과 같은 단계적 변경 사항이 포함된 커밋 메시지를 자동으로 생성합니다.
$ git add --update
$ loz commit
또는 script/prepare-commit-msg를 .git/hooks에 복사하세요.
$ chmod a+x .git/hooks/prepare-commit-msg
Loz는 LOZ 환경 변수를 사용하여 준비된 파일의 차이점을 읽어 커밋 메시지를 생성합니다.
$ LOZ=true git commit
알림: 이전 버전을 이미 복사한 경우 prepare-commit-msg를 업데이트하세요. 이전 버전은 리베이스하는 동안 커밋 메시지를 자동으로 업데이트합니다.
$ git diff HEAD~1 | loz -g
또는
$ git diff | loz -g
작성자, 날짜 및 커밋 ID 줄은 커밋 메시지를 OpenAI 서버로 보내기 전에 제거됩니다.
채팅 기록에 액세스하려면 홈 디렉터리에서 .loz 디렉터리를 찾거나 복제된 git 저장소에서 로그 디렉터리를 찾으세요. 이러한 디렉터리에는 필요에 따라 검토하거나 참조할 수 있는 채팅 기록이 포함되어 있습니다.
이 프로젝트에 기여하고 싶다면 언제든지 풀 요청을 제출해 주세요.