Houston est un simple outil de ligne de commande basé sur GPT qui vous permet de générer des commandes ou des scripts de shell en donnant des instructions de langage naturel simples.
Fonctionne sur Linux, Mac et Windows. Vous pouvez l'utiliser pour bash, powershell, zsh, python ou tout autre shell ou langage de script.
cargo install --git https://github.com/npgrosser/Houston.git
La commande par défaut pour interagir avec Houston est hu (abréviation de Houston). Vous pouvez donner à Houston une instruction en langue naturelle.
Par exemple:
hu run ubuntu container with interactive bashhu find all pdf files in my home directoryhu delete unused docker images and networkshu tell me a dad jokePour utiliser Houston, la variable d'environnement OpenAI_API_KEY doit être définie sur votre clé API OpenAI. Vous pouvez en obtenir un sur https://platform.openai.com. Si vous préférez, vous pouvez également spécifier la clé de votre fichier de configuration, consultez la section de configuration pour plus d'informations.
Houston ne sait rien de votre système. Ainsi, pour donner à Houston les meilleures chances de terminer les tâches, vous pouvez fournir des informations de contexte. Cela peut inclure des détails sur l'arborescence de fichiers, le contenu des fichiers spécifiques, les packages installés, votre historique de bash, etc.
À cette fin, certaines fonctionnalités vous aident à le faire.
Un fichier de contexte est un fichier avec une extension '.ctxt' qui contient une liste d'informations en langage naturel.
Vous pouvez également ajouter des informations générées dynamiquement à l'aide de variables de commande .
Les informations que vous définissez dans le fichier ~ / houston / default.ctxt sont toujours fournies à Houston. Il s'agit du fichier de contexte que vous utiliseriez pour informer Houston de vos préférences et exigences individuelles. Par exemple, le gestionnaire de packages que vous préférez, quelle est votre langue préférée, ce que vous aimez lui pour vous appeler, etc.
Le contenu d'un fichier de contexte doit être écrit comme une liste de puces.
Exemple:
- If I want you to install something, use brew if the package is avaiable there
- If the script gets more complex, use comments to explain what you are doing
- When printing to the console, use capital letters. I like it when you shout at me
Les fichiers de contexte nommés sont des fichiers contextuels que vous pouvez activer sur une base par instruction. Ils sont utiles pour fournir des informations contextuelles spécifiques à une certaine tâche. Comme le fichier de contexte par défaut, ils sont situés dans le répertoire ~ / Houston . Vous leur activez en utilisant le drapeau -c .
hu <instruction> -c <context-file-name>
Exemple:
~ / houston / joli-output.ctxt
- when printing to the terminal, use colored output and fancy ASCII art
Usage:
hu print hello world -c pretty-output
Par instruction, vous pouvez activer plusieurs fichiers contextuels.
hu <instruction> -c <context-file-name-1> -c <context-file-name-2>
Exemple:
hu tell me a joke -c pretty-output -c dark-humor
Les fichiers de contexte peuvent être des fichiers texte brut, mais ils peuvent également contenir des variables de commande . Vous pouvez les utiliser en utilisant la syntaxe ${cmd} . Ces variables de commande sont évaluées sur chaque instruction et remplacées par la sortie de la commande.
Voici un exemple de fichier de contexte utilisant des variables de commande:
- The current working directory is ${pwd}.
- The current user is ${whoami}.
- The current time is ${date}.
Lorsque ce modèle est traité, la sortie résultante ressemblerait à ceci:
- The current working directory is /home/user/my-name/houston.
- The current user is my-name.
- The current time is 2020-10-10 12:00:00.
Lors de la rédaction de vos propres fichiers de contexte, gardez à l'esprit que toutes les données seront envoyées à OpenAI. Par conséquent, vous ne devez utiliser que des commandes qui ne révèlent pas d'informations sensibles.
Lorsque vous utilisez un contexte nommé via le drapeau -c, vous pouvez également passer des arguments. Par exemple:
hu tell me a joke -c lang:german
Les arguments sont transmis au modèle, où vous pouvez y accéder comme vous le feriez avec n'importe quel script shell normal. Exemple:
~ / houston / lang.ctxt:
- When printing to the terminal, always use the ${echo $1} language.
Gardez à l'esprit que nous devons utiliser la commande echo ici car les variables de commande sont remplacées par la sortie de la commande
Si vous souhaitez transmettre plusieurs arguments, il vous suffit de vous assurer d'ajouter des devis autour de la spécification de contexte .
hu tell me a joke -c "langs:german english french"
Notez que l'exemple ci-dessus suppose que Bash est utilisé comme shell pour évaluer les variables de commande.
Lorsque vous utilisez un shell différent, vous devrez peut-être utiliser une syntaxe différente pour accéder aux arguments.
Par exemple, dans PowerShell, vous utiliseriez la variable $ args. De plus, vous n'auriez pas besoin d'utiliser la commande Echo.
- When printing to the terminal, always use the ${$args[0]} language.
Voici quelques autres exemples de fichiers de contexte nommés pour vous donner une idée de la façon dont ils peuvent être utilisés.
Un fichier de contexte qui ajoute l'état GIT actuel comme information contextuelle.
- The current git status is:
```
${git status}
```
Un fichier de contexte qui ajoute l'état actuel de Docker comme informations contextuelles.
- The current docker status is:
```
${docker ps -a}
```
- The current docker images are:
```
${docker images}
```
Un fichier de contexte qui ajoute les N (par défaut 10) des commandes de votre historique de bash en tant qu'informations de contexte.
- The last ${1:-10} commands I ran were:
```
${tail -n ${1:-10} ~/.bash_history | cut -d ';' -f 2-}
```
Un fichier de contexte qui ajoute les variables d'environnement actuelles sous forme d'informations de contexte.
- The current environment variables are:
```
${env}
```
Un fichier de contexte qui ajoute l'arborescence de fichier actuelle comme informations de contexte.
- The current file tree is:
```
${tree -L ${1:-3}}
```
Si vous voulez voir ce qui est réellement passé à l'API, vous pouvez utiliser le drapeau -v (verbeux).
hu <instruction> -v
Ceci est particulièrement utile si vous souhaitez voir comment vos fichiers de contexte sont évalués.
Voir Exemple-Config.yml pour les options de configuration disponibles. La configuration est automatiquement créée lorsque vous exécutez hu pour la première fois. Il sera soit dans $XDG_CONFIG_HOME/houston/config.yml ou ~/.config/houston/config.yml .