Profitez de ChatGPT dans votre terminal. Chine
A guru is a teacher or mentor who is highly respected and knowledgeable in
their field. The term is often associated with spiritual or religious
leaders, but can also refer to experts in other areas such as business,
technology, or health. -- generated by ChatGPT
--oneshot
pour accéder au mode oneshot qui supprime les messages contextuels pour chaque requête. Démarrez guru
avec --last
pour continuer la dernière conversation. go install github.com/shafreeck/guru@latest
Guru utilise l'API ouverte d'OpenAI pour communiquer avec ChatGPT. Obtenez la clé API correspondante en vous connectant à votre compte en tant que développeur.
https://platform.openai.com/account/api-keys
Configurez gourou pour la première fois, exécutez guru config
et entrez votre clé API OpenAI obtenue à l'étape ci-dessus. L'utilisation d'un proxy chaussettes5 est facultative. Vous pouvez contourner cette étape et utiliser les paramètres directement pour la commande, mais il est recommandé de sauvegarder votre clé secrète dans le fichier de configuration.
> guru [text]
Entrez en mode conversation en exécutant directement guru
. guru
est en fait un alias de la commande guru chat
. Exécutez guru avec l'indicateur --oneshot
pour passer en mode oneshot
, dans ce mode, guru supprime les messages contextuels pour chaque demande. La session est toujours automatiquement enregistrée. (par défaut dans le répertoire ~/.guru/session/
)
> guru cheat
guru cheat
est un alias de la commande guru chat -p Cheatsheet
, qui est utilisée pour simplifier la saisie de l'utilisateur.
> git diff | guru commit
guru commit
est un alias de guru chat -p Committer
.
Utilisez le paramètre --oneshot
pour passer en mode conversation ponctuelle. Dans ce mode, les messages contextuels seront automatiquement supprimés. Cependant, si --prompt, -p
spécifie une invite, le contenu de l'invite sera épinglé et soumis avec chaque requête.
Utilisez la commande
: message pin
pour épingler n'importe quel message
guru --oneshot
echo list files in this dir in detail | guru cheat | sh
ChatGPT ne stocke pas le contexte de la conversation côté serveur. Sa capacité de connaissance du contexte est obtenue en soumettant tout le contenu contextuel du client. Comme défini dans l'API OpenAI, une question soumise ou une réponse est appelée un message. Le contenu d'un message est symbolisé en jetons, et il existe une limitation du nombre total de jetons pour les messages soumis et répondu, qui est de 4 096 au maximum. Une longue conversation épuiserait les jetons.
Guru prend en charge le nettoyage automatique des anciens messages pour obtenir une conversation continue avec une fenêtre déroulante. Cependant, on attend parfois un contrôle plus précis sur les messages soumis à ChatGPT. À l’heure actuelle, les commandes internes de la gestion des messages peuvent être utilisées pour réduire, supprimer ou ajouter manuellement des messages.
Pour les messages que nous ne voulons pas supprimer ou que nous ne voulons pas nettoyer par la fenêtre déroulante, nous pouvons épingler les messages avec la commande : message pin
. Le mode oneshot utilise cette méthode pour épingler le message d'invite, ce qui permet de conserver l'invite soumise pour chaque question.
: message list
Répertorie tous les messages actuels, avec l'alias :ls
: message delete [id...]
Supprimer les messages, où les paramètres sont des ID de message qui peuvent supprimer plusieurs messages en même temps: message shrink [expr]
Réduit les messages, où expr
est une expression de plage, elle est la même que l'expression dans Golang Slice : begin:end
. Begin ou End peuvent être omis, par exemple 5:
, ce qui signifie conserver tous les messages avec un ID supérieur ou égal à 5.message show [id]
Affiche un certain message et le restitue avec Markdown. La valeur par défaut est d'afficher le dernier message.message append
Ajoute un message, également disponible avec le raccourci :append
message pin [id]
Épingle un message, et le message épinglé ne sera pas automatiquement supprimé par le mécanisme de réduction automatique du message et ne peut pas être supprimé par la commande : message delete
.message unpin [id]
Désépingle un message Chaque fois que guru
est exécuté, une session est automatiquement créée. L'historique de la session est enregistré par défaut dans le répertoire ~/.guru/session/
. Au démarrage, vous pouvez spécifier un identifiant de session avec --session-id, -s
ou restaurer la dernière session avec --last
. Si l'ID de session spécifié n'existe pas, il sera créé automatiquement.
La gestion des sessions offre une multitude de fonctionnalités. Vous pouvez créer et changer de session au sein du même Guru REPL. La fonctionnalité la plus utile de la gestion de session est la pile de sessions qui permet l'imbrication de sessions enfants sans interrompre la session en cours. La continuité de la session est très utile, par exemple, dans une longue conversation lorsque je parle d'un article, je m'attends à ce que les messages de conversation soient enregistrés et je verrai ensuite l'historique clair des discussions lors de la révision ultérieure. Guru prendra également en charge l'exportation ultérieure des historiques de sessions.
guru > :session
Available commands:
:session new create a new session
:session remove delete a session
:session shrink shrink sessions
:session list list sessions
:session switch switch a session
:session history print history of current session
:session stack show the session stack
:session stack push create a new session, and stash the current
:session stack pop pop out current session
:session new
crée une nouvelle session, peut également être déclenchée via l'alias raccourci :new
.:session remove [sid]
supprime une session.:session shrink [expr]
réduit une session, où expr
est une expression de plage, similaire à la commande :message shrink
.:session list
répertorie toutes les sessions, la session en cours étant indiquée par *
.:session switch [sid]
passe à une autre session.:session history
affiche l'historique de la session.:session stack
affiche l'état de la pile de session, peut également être déclenché via l'alias abrégé :stack
.:session stack push
crée une nouvelle session et la pousse sur la pile, peut également être déclenchée via l'alias raccourci >
.:session stack pop
fait sortir la session en cours de la pile, peut également être déclenchée via l'alias raccourci <
. >
est une commande spéciale qui sert d'alias pour :session stack push
. Une fois exécuté, il crée une nouvelle session et la place sur la pile. L'invite de commande ajoutera un symbole ">", tel que guru >>
. <
est un alias pour :session stack pop
. Une fois exécuté, il fait apparaître la session la plus haute de la pile et l'invite de commande supprimera le symbole ">".
Remarque : actuellement, seules les commandes
>
et<
affecteront l'invite de commande. L'utilisation directe:session stack push/pop
n'aura pas cet effet, mais nous prévoyons d'améliorer le mécanisme à l'avenir.
Les commandes prompt repo
vous permettent d'ajouter ou de synchroniser des référentiels d'invites. Actuellement, Guru prend en charge deux référentiels d'invites de haute qualité : awesome-chatgpt-prompts
et awesome-chatgpt-prompts-zh
. Les utilisateurs peuvent également ajouter leurs propres référentiels favoris.
Notez que, lors de la première utilisation, les invites distantes autres que Cheatsheet
et Committer
nécessiteront une commande :prompt repo sync
pour synchroniser leurs fichiers à utiliser. Les fichiers d'invite synchronisés seront stockés dans le répertoire ~/.guru/prompt/
par défaut.
guru > :prompt
Available commands:
:prompt act as act as a role
:prompt list list all prompts
:prompt repo sync sync prompts with remote repos
:prompt repo add add a remote repo
:prompt repo list list remote repos
Alias commands:
:prompts alias :prompts = :prompt list
Les commandes :prompt
vous permettent d'utiliser les invites définies dans votre référentiel awesome-chatgpt-prompts
, ainsi que d'ajouter et de synchroniser vos propres référentiels d'invites.
:prompt act as
agit comme le rôle de l'invite, peut également être déclenché via l'alias abrégé :act as
.:prompt list
répertorie toutes les informations d'invite chargées, peut également être déclenchée via l'alias abrégé :prompts
.:prompt repo add/sync/list
ajoute, synchronise et répertorie les référentiels d'invites. guru > :act as Linux Terminal
Vous pouvez utiliser le signe $
pour exécuter des commandes système, et le résultat de la commande sera soumis à ChatGPT lors du prochain cycle de conversation. Ceci est particulièrement utile lorsque vous devez charger un fichier.
Si aucune commande ne suit le signe $
, Guru passera en mode shell et l'invite de commande deviendra guru $
. Dans ce mode, toute commande que vous entrez sera exécutée comme dans un shell et toutes les sorties seront soumises à ChatGPT lors du prochain cycle de conversation.
En mode shell, saisir >
reviendra au mode conversation.
:info
visualisation des paramètres en direct:set
définir les paramètres en direct dir /Users/shafreeck/.guru
filename
openai-api-key sk-************************************************
pin false
prompt
session-id chat-1680879639912-1ec4e509-af5b-4abb-9f4b-bebde2276d96
socks5 localhost:8804
stdin false
timeout 3m0s
------------------------------
chatgpt.frequency_penalty 0
chatgpt.max_tokens 0
chatgpt.model gpt-3.5-turbo
chatgpt.n 1
chatgpt.presence_penalty 0
chatgpt.stop
chatgpt.stream true
chatgpt.temperature 1
chatgpt.top_p 1
chatgpt.user
disable-auto-shrink false
executor
feedback false
non-interactive false
oneshot false
system
verbose false
:set chatgpt.temperature 0.5
L'Exécuteur est la fonctionnalité la plus puissante et la plus unique de Guru. Lors du démarrage de Guru, vous pouvez spécifier l'exécuteur en utilisant l'argument --executor, -e
. Après chaque tour de discussion, Guru transmettra la sortie ChatGPT à l'exécuteur via stdin. Si --feedback
est spécifié, la sortie de l'exécuteur sera également renvoyée à ChatGPT.
L'exécuteur est différent des commandes système mentionnées ci-dessus. Les commandes système enrichissent uniquement les moyens de saisie des données via le shell
. Alors que l'exécuteur est utilisé pour gérer la sortie ChatGPT, implémentant une boucle fermée complète de input
-> output
-> input
. Cela signifie que nous pouvons utiliser l'exécuteur pendant la conversation pour traiter les messages.
Pour des raisons de sécurité, une confirmation de l'utilisateur est requise pour chaque appel de l'exécuteur.
Le scénario d'utilisation le plus simple consiste à exécuter la commande renvoyée par ChatGPT via le shell
.
> guru cheat -e sh
Vous pouvez utiliser la commande suivante pour réaliser une auto-conversation ChatGPT :
> guru -e "guru --dir ./conversation --last" --feedback Hi
Le principe de l'auto-chat est d'utiliser un autre guru
comme exécuteur, de définir le --dir
du deuxième guru
sur son propre répertoire indépendant pour éviter toute confusion avec le premier guru
, et de définir --last
pour restaurer la session à chaque démarrage. pour maintenir le contexte de la conversation.