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
実行すると、最大のファイルが見つかります。さらに例を参照してください。まず、次の 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/payment-methods
Loz を初めて起動するときに、好みの LLM サービスを選択する機会があります。
$ loz
Choose your LLM service: (ollama, openai)
LLM サービス設定は、対話モードでconfig
コマンドを使用していつでも変更できます。
> 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 リポジトリ内のログ ディレクトリを探します。これらのディレクトリにはチャット履歴が含まれており、必要に応じて確認または参照できます。
このプロジェクトに貢献したい場合は、お気軽にプル リクエストを送信してください。