Loz — это инструмент командной строки, который позволяет предпочитаемому вами LLM выполнять системные команды и использовать каналы Unix, интегрируя возможности искусственного интеллекта с другими инструментами Unix.
loz "find the largest file in the current directory"
, Loz
интерпретирует инструкцию и выполнит соответствующие команды Linux, такие как 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, поэтому вы можете легко переключаться между этими сервисами LLM, используя команду config
в интерактивном режиме.
Чтобы использовать 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
Или, если вы устанавливаете Loz с помощью команды npm, добавьте OPENAI_API_KEY=YOUR_KEY
в .bashrc.
export OPENAI_API_KEY=YOUR_KEY
Если вы столкнулись со следующей ошибкой, это означает, что вы превысили бесплатную квоту:
Request failed with status code 429:
API request limit reached
Чтобы продолжить использование API, необходимо настроить способ оплаты по следующей ссылке: https://platform.openai.com/account/billing/pay-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 позволяет пользователям выполнять команды Linux, используя естественный язык. Ниже приведены несколько примеров, демонстрирующих, как серверная часть LLM loz
преобразует естественный язык в команды 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
Обнаружение графических процессоров в системе:
loz "Detect GPUs on this system"
00:02.0 VGA compatible controller: Intel Corporation Device a780 (rev 04)
К вашему сведению, эта функция тестировалась только с API OpenAI.
Чтобы предотвратить непреднамеренные изменения системы, избегайте запуска команд, которые могут изменить или удалить системные файлы или конфигурации, таких как 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"
}
]
Если вы запустите loz commit
в своем репозитории Git, loz автоматически сгенерирует сообщение о фиксации с такими поэтапными изменениями:
$ git add --update
$ loz commit
Или скопируйте скрипт/prepare-commit-msg в .git/hooks.
$ chmod a+x .git/hooks/prepare-commit-msg
Loz использует переменную среды LOZ для генерации сообщений о фиксации путем чтения различий промежуточных файлов.
$ LOZ=true git commit
НАПОМИНАНИЕ: Если вы уже скопировали старую версию, обновите командуpreprere-commit-msg. Старая версия автоматически обновляет сообщения о фиксации во время перебазирования.
$ git diff HEAD~1 | loz -g
Или
$ git diff | loz -g
Обратите внимание, что строки автора, даты и идентификатора фиксации удаляются из сообщения о фиксации перед отправкой его на сервер OpenAI.
Чтобы получить доступ к истории чатов, найдите каталог .loz в своем домашнем каталоге или каталог журналов в клонированном репозитории git. Эти каталоги содержат историю чатов, которую вы можете просмотреть или обратиться к ней по мере необходимости.
Если вы хотите внести свой вклад в этот проект, отправьте запрос на включение.