Loz est un outil de ligne de commande qui permet à votre LLM préféré d'exécuter des commandes système et d'utiliser des canaux Unix, intégrant des capacités d'IA avec d'autres outils Unix.
loz "find the largest file in the current directory"
, Loz
interprétera l'instruction et exécutera les commandes Linux correspondantes comme find . -type f -exec ls -l {} + | sort -k 5 -nr | head -n 1
pour trouver le fichier le plus volumineux. Voir plus d'exemples.Pour commencer, exécutez la commande npm suivante :
$ sudo npm install loz -g
Ou clonez le dépôt :
$ git clone https://github.com/joone/loz.git
NodeJS et npm sont requis pour que ce programme fonctionne. Si vous êtes sous Linux, installez-les à l'aide de votre gestionnaire de packages. sudo apt install nodejs npm
ou sudo dnf install nodejs npm
ou sudo pacman -S nodejs npm
Installez ensuite les autres dépendances requises :
$ ./install.sh
Loz prend en charge l'API OpenAI et Ollama afin que vous puissiez basculer facilement entre ces services LLM, à l'aide de la commande config
en mode interactif.
Pour utiliser Ollama sur votre système local, vous devrez installer les modèles Llama2 et Codellama. Voici comment procéder sur un système Linux :
$ curl https://ollama.ai/install.sh | sh
$ ollama run llama2
$ ollama run codellama
Pour plus d'informations, voir https://ollama.ai/download
La configuration de vos informations d'identification API OpenAI implique quelques étapes simples :
Tout d'abord, créez un fichier .env
à la racine du projet et ajoutez les variables suivantes :
OPENAI_API_KEY=YOUR_KEY
Ou si vous installez Loz à l'aide de la commande npm, ajoutez OPENAI_API_KEY=YOUR_KEY
dans .bashrc
export OPENAI_API_KEY=YOUR_KEY
Si vous rencontrez l'erreur suivante, cela signifie que vous avez dépassé votre quota gratuit :
Request failed with status code 429:
API request limit reached
Pour continuer à utiliser l'API, il est nécessaire de mettre en place un moyen de paiement via le lien suivant : https://platform.openai.com/account/billing/payment-methods
Lors de votre lancement initial de Loz, vous aurez la possibilité de sélectionner votre service LLM préféré.
$ loz
Choose your LLM service: (ollama, openai)
Vous pouvez modifier vos préférences de service LLM à tout moment en utilisant la commande config
en mode interactif :
> config api openai
De plus, vous pouvez modifier le modèle en saisissant :
> config model llama2
ou
> config model codellama
Vous pouvez vérifier les paramètres actuels en saisissant :
> config
api: ollama
model: llama2
Actuellement, gpt-3.5-turbo et tous les modèles fournis par Ollama sont pris en charge.
$ loz
Une fois Loz exécuté, vous pouvez démarrer une conversation en interagissant avec lui. loz répondra avec un message pertinent basé sur l'entrée.
Loz permet aux utilisateurs d'exécuter des commandes Linux en utilisant le langage naturel. Vous trouverez ci-dessous quelques exemples démontrant comment le backend LLM de loz
traduit le langage naturel en commandes Linux :
Recherchez le fichier le plus volumineux du répertoire actuel :
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
Vérifiez si Apache2 est en cours d'exécution :
loz "check if apache2 is running on this system"
● apache2.service - The Apache HTTP Server
Détectez les GPU sur le système :
loz "Detect GPUs on this system"
00:02.0 VGA compatible controller: Intel Corporation Device a780 (rev 04)
Pour information, cette fonctionnalité a été testée uniquement avec l'API OpenAI.
Pour éviter toute modification involontaire du système, évitez d'exécuter des commandes susceptibles de modifier ou de supprimer des fichiers ou des configurations système, telles que rm
, mv
, rmdir
ou mkfs
.
Pour améliorer la sécurité et éviter l'exécution involontaire de commandes, loz peut être exécuté en mode sans échec. Lorsqu'il est activé, ce mode nécessite la confirmation de l'utilisateur avant d'exécuter une commande Linux.
Activez le mode sans échec en définissant la variable d'environnement LOZ_SAFE=true :
LOZ_SAFE=true loz "Check available memory on this system"
Lors de l'exécution, loz demandera :
Do you want to run this command?: free -h (y/n)
Répondez avec « y » pour exécuter la commande ou « n » pour annuler. Cette fonctionnalité garantit que vous avez un contrôle total sur les commandes exécutées, évitant ainsi les modifications accidentelles ou la perte de données.
Loz est capable de traiter les entrées d'autres outils de ligne de commande en utilisant un tube 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 vous exécutez loz commit
dans votre référentiel Git, loz générera automatiquement un message de validation avec les modifications échelonnées comme ceci :
$ git add --update
$ loz commit
Ou copiez script/prepare-commit-msg dans .git/hooks
$ chmod a+x .git/hooks/prepare-commit-msg
Loz utilise la variable d'environnement LOZ pour générer des messages de validation en lisant les différences des fichiers préparés.
$ LOZ=true git commit
RAPPEL : Si vous avez déjà copié l'ancienne version, veuillez mettre à jour prepare-commit-msg. L'ancienne version met automatiquement à jour les messages de validation lors du rebasage.
$ git diff HEAD~1 | loz -g
Ou
$ git diff | loz -g
Notez que les lignes d'auteur, de date et d'ID de validation sont supprimées du message de validation avant de l'envoyer au serveur OpenAI.
Pour accéder aux historiques de discussion, recherchez le répertoire .loz dans votre répertoire personnel ou le répertoire des journaux dans votre référentiel git cloné. Ces répertoires contiennent l'historique des discussions que vous pouvez consulter ou référencer selon vos besoins.
Si vous souhaitez contribuer à ce projet, n'hésitez pas à soumettre une pull request.