Loz é uma ferramenta de linha de comando que permite que seu LLM preferido execute comandos do sistema e utilize pipes Unix, integrando recursos de IA com outras ferramentas Unix.
loz "find the largest file in the current directory"
, Loz
interpretará a instrução e executará os comandos Linux correspondentes, como find . -type f -exec ls -l {} + | sort -k 5 -nr | head -n 1
para encontrar o maior arquivo. Veja mais exemplos.Para começar, execute o seguinte comando npm:
$ sudo npm install loz -g
Ou clone o repositório:
$ git clone https://github.com/joone/loz.git
NodeJS e npm são necessários para que este programa funcione. Se você estiver no Linux, instale-os usando seu gerenciador de pacotes. sudo apt install nodejs npm
ou sudo dnf install nodejs npm
ou sudo pacman -S nodejs npm
Em seguida, instale as outras dependências necessárias:
$ ./install.sh
Loz suporta OpenAI API e Ollama para que você possa alternar facilmente entre esses serviços LLM, usando o comando config
no modo interativo.
Para utilizar o Ollama em seu sistema local, você precisará instalar os modelos llama2 e codellama. Veja como você pode fazer isso em um sistema Linux:
$ curl https://ollama.ai/install.sh | sh
$ ollama run llama2
$ ollama run codellama
Para obter mais informações, consulte https://ollama.ai/download
Configurar suas credenciais da API OpenAI envolve algumas etapas simples:
Primeiro, crie um arquivo .env
na raiz do projeto e adicione as seguintes variáveis:
OPENAI_API_KEY=YOUR_KEY
Ou se você instalar o Loz usando o comando npm, adicione OPENAI_API_KEY=YOUR_KEY
em .bashrc
export OPENAI_API_KEY=YOUR_KEY
Se você encontrar o seguinte erro, significa que excedeu sua cota gratuita:
Request failed with status code 429:
API request limit reached
Para continuar utilizando a API é necessário configurar uma forma de pagamento através do seguinte link: https://platform.openai.com/account/billing/payment-methods
Após o lançamento inicial do Loz, você terá a oportunidade de selecionar seu serviço LLM preferido.
$ loz
Choose your LLM service: (ollama, openai)
Você pode modificar sua preferência de serviço LLM a qualquer momento usando o comando config
no modo interativo:
> config api openai
Além disso, você pode alterar o modelo inserindo:
> config model llama2
ou
> config model codellama
Você pode verificar as configurações atuais digitando:
> config
api: ollama
model: llama2
Atualmente, o gpt-3.5-turbo e todos os modelos fornecidos pela Ollama são suportados.
$ loz
Quando o loz estiver em execução, você poderá iniciar uma conversa interagindo com ele. loz responderá com uma mensagem relevante com base na entrada.
Loz capacita os usuários a executar comandos do Linux usando linguagem natural. Abaixo estão alguns exemplos que demonstram como o backend LLM de loz
traduz a linguagem natural em comandos do Linux:
Encontre o maior arquivo no diretório atual:
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
Verifique se o Apache2 está em execução:
loz "check if apache2 is running on this system"
● apache2.service - The Apache HTTP Server
Detecte GPUs no sistema:
loz "Detect GPUs on this system"
00:02.0 VGA compatible controller: Intel Corporation Device a780 (rev 04)
Para sua informação, este recurso só foi testado com a API OpenAI.
Para evitar modificações não intencionais do sistema, evite executar comandos que possam alterar ou remover arquivos ou configurações do sistema, como rm
, mv
, rmdir
ou mkfs
.
Para aumentar a segurança e evitar a execução não intencional de comandos, o loz pode ser executado no Modo de Segurança. Quando ativado, este modo requer a confirmação do usuário antes de executar qualquer comando do Linux.
Ative o modo de segurança definindo a variável de ambiente LOZ_SAFE=true:
LOZ_SAFE=true loz "Check available memory on this system"
Após a execução, loz solicitará:
Do you want to run this command?: free -h (y/n)
Responda com 'y' para executar o comando ou 'n' para cancelar. Esse recurso garante que você tenha controle total sobre os comandos executados, evitando alterações acidentais ou perda de dados.
Loz é capaz de processar entradas de outras ferramentas de linha de comando utilizando um canal 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"
}
]
Se você executar loz commit
em seu repositório Git, loz gerará automaticamente uma mensagem de commit com as alterações preparadas como esta:
$ git add --update
$ loz commit
Ou copie script/prepare-commit-msg para .git/hooks
$ chmod a+x .git/hooks/prepare-commit-msg
Loz usa a variável de ambiente LOZ para gerar mensagens de commit lendo a comparação dos arquivos preparados.
$ LOZ=true git commit
LEMBRETE: Se você já copiou a versão antiga, atualize prepare-commit-msg. A versão antiga atualiza automaticamente as mensagens de commit durante o rebase.
$ git diff HEAD~1 | loz -g
Ou
$ git diff | loz -g
Observe que as linhas de autor, data e ID de commit são removidas da mensagem de commit antes de enviá-la ao servidor OpenAI.
Para acessar os históricos de bate-papo, procure o diretório .loz em seu diretório inicial ou o diretório logs em seu repositório git clonado. Esses diretórios contêm o histórico de bate-papo que você pode revisar ou consultar conforme necessário.
Se você quiser contribuir com este projeto, sinta-se à vontade para enviar uma solicitação pull.