Loz es una herramienta de línea de comandos que permite a su LLM preferido ejecutar comandos del sistema y utilizar canalizaciones Unix, integrando capacidades de IA con otras herramientas Unix.
loz "find the largest file in the current directory"
, Loz
interpretará la instrucción y ejecutará los comandos de Linux correspondientes como find . -type f -exec ls -l {} + | sort -k 5 -nr | head -n 1
para encontrar el archivo más grande. Ver más ejemplos.Para comenzar, ejecute el siguiente comando npm:
$ sudo npm install loz -g
O clonar el repositorio:
$ git clone https://github.com/joone/loz.git
Se requieren NodeJS y npm para que este programa funcione. Si estás en Linux, instálalos usando tu administrador de paquetes. sudo apt install nodejs npm
o sudo dnf install nodejs npm
o sudo pacman -S nodejs npm
Luego instale las otras dependencias requeridas:
$ ./install.sh
Loz es compatible con OpenAI API y Ollama, por lo que puede cambiar fácilmente entre estos servicios LLM, utilizando el comando config
en el modo interactivo.
Para utilizar Ollama en su sistema local, necesitará instalar los modelos llama2 y codellama. Así es como puedes hacerlo en un sistema Linux:
$ curl https://ollama.ai/install.sh | sh
$ ollama run llama2
$ ollama run codellama
Para obtener más información, consulte https://ollama.ai/download
Configurar sus credenciales de API OpenAI implica unos sencillos pasos:
Primero, cree un archivo .env
en la raíz del proyecto y agregue las siguientes variables:
OPENAI_API_KEY=YOUR_KEY
O si instala Loz usando el comando npm, agregue OPENAI_API_KEY=YOUR_KEY
en .bashrc
export OPENAI_API_KEY=YOUR_KEY
Si encuentra el siguiente error, significa que ha excedido su cuota gratuita:
Request failed with status code 429:
API request limit reached
Para continuar usando la API es necesario configurar un método de pago a través del siguiente enlace: https://platform.openai.com/account/billing/paid-methods
Tras el lanzamiento inicial de Loz, tendrá la oportunidad de seleccionar su servicio LLM preferido.
$ loz
Choose your LLM service: (ollama, openai)
Puede modificar su preferencia de servicio LLM en cualquier momento utilizando el comando config
en el modo interactivo:
> config api openai
Además, puedes cambiar el modelo ingresando:
> config model llama2
o
> config model codellama
Puede verificar la configuración actual ingresando:
> config
api: ollama
model: llama2
Actualmente, se admiten gpt-3.5-turbo y todos los modelos proporcionados por Ollama.
$ loz
Una vez que loz se esté ejecutando, puedes iniciar una conversación interactuando con él. loz responderá con un mensaje relevante basado en la entrada.
Loz permite a los usuarios ejecutar comandos de Linux utilizando lenguaje natural. A continuación se muestran algunos ejemplos que demuestran cómo el backend LLM de loz
traduce el lenguaje natural a comandos de Linux:
Busque el archivo más grande en el directorio actual:
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
Compruebe si Apache2 se está ejecutando:
loz "check if apache2 is running on this system"
● apache2.service - The Apache HTTP Server
Detectar GPU en el sistema:
loz "Detect GPUs on this system"
00:02.0 VGA compatible controller: Intel Corporation Device a780 (rev 04)
Para su información, esta función solo se ha probado con la API OpenAI.
Para evitar modificaciones involuntarias del sistema, evite ejecutar comandos que puedan alterar o eliminar archivos o configuraciones del sistema, como rm
, mv
, rmdir
o mkfs
.
Para mejorar la seguridad y evitar la ejecución de comandos no deseada, loz se puede ejecutar en modo seguro. Cuando se activa, este modo requiere la confirmación del usuario antes de ejecutar cualquier comando de Linux.
Active el modo seguro configurando la variable de entorno LOZ_SAFE=true:
LOZ_SAFE=true loz "Check available memory on this system"
Tras la ejecución, loz le preguntará:
Do you want to run this command?: free -h (y/n)
Responda con 'y' para ejecutar el comando o 'n' para cancelar. Esta característica garantiza que usted tenga control total sobre los comandos ejecutados, evitando cambios accidentales o pérdida de datos.
Loz es capaz de procesar entradas de otras herramientas de línea de comandos utilizando una tubería 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"
}
]
Si ejecuta loz commit
en su repositorio Git, loz generará automáticamente un mensaje de confirmación con los cambios preparados como este:
$ git add --update
$ loz commit
O copie script/prepare-commit-msg a .git/hooks
$ chmod a+x .git/hooks/prepare-commit-msg
Loz usa la variable de entorno LOZ para generar mensajes de confirmación leyendo la diferencia de los archivos preparados.
$ LOZ=true git commit
RECORDATORIO: Si ya copió la versión anterior, actualice prepare-commit-msg. La versión anterior actualiza automáticamente los mensajes de confirmación durante el cambio de base.
$ git diff HEAD~1 | loz -g
O
$ git diff | loz -g
Tenga en cuenta que las líneas de autor, fecha e ID de confirmación se eliminan del mensaje de confirmación antes de enviarlo al servidor OpenAI.
Para acceder a los historiales de chat, busque el directorio .loz en su directorio de inicio o el directorio de registros en su repositorio git clonado. Estos directorios contienen el historial de chat que puede revisar o consultar según sea necesario.
Si desea contribuir a este proyecto, no dude en enviar una solicitud de extracción.