Genießen Sie ChatGPT in Ihrem Terminal. 中文
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
, um in den Oneshot-Modus zu wechseln, der die Kontextnachrichten für jede Anfrage löscht. Starten Sie guru
mit --last
um das letzte Gespräch fortzusetzen. go install github.com/shafreeck/guru@latest
Guru verwendet die offene API von OpenAI, um mit ChatGPT zu kommunizieren. Erhalten Sie den entsprechenden API-Schlüssel, indem Sie sich als Entwickler in Ihrem Konto anmelden.
https://platform.openai.com/account/api-keys
Konfigurieren Sie Guru zum ersten Mal mit, führen Sie guru config
aus und geben Sie Ihren OpenAI-API-Schlüssel ein, den Sie im obigen Schritt erhalten haben. Die Verwendung eines Socks5-Proxys ist optional. Sie können diesen Schritt umgehen und Parameter direkt für den Befehl verwenden, es wird jedoch empfohlen, Ihren geheimen Schlüssel in der Konfigurationsdatei zu speichern.
> guru [text]
Wechseln Sie in den Konversationsmodus, indem Sie guru
direkt ausführen. guru
ist eigentlich ein Alias für den guru chat
Befehl. Führen Sie guru mit der Flagge --oneshot
aus, um in oneshot
-Modus zu wechseln. In diesem Modus löscht Guru die Kontextmeldungen für jede Anfrage. Die Sitzung wird immer automatisch aufgezeichnet. (Standard im Verzeichnis ~/.guru/session/
)
> guru cheat
guru cheat
ist ein Alias für den Befehl guru chat -p Cheatsheet
, der zur Vereinfachung der Benutzereingaben verwendet wird.
> git diff | guru commit
guru commit
ist ein Alias für guru chat -p Committer
.
Verwenden Sie den Parameter --oneshot
, um in den One-Shot-Konversationsmodus zu wechseln. In diesem Modus werden die Kontextnachrichten automatisch verworfen. Wenn jedoch --prompt, -p
eine Eingabeaufforderung angibt, wird der Inhalt der Eingabeaufforderung angeheftet und bei jeder Anfrage übermittelt.
Verwenden Sie den Befehl
: message pin
um eine beliebige Nachricht anzuheften
guru --oneshot
echo list files in this dir in detail | guru cheat | sh
ChatGPT speichert den Kontext der Konversation nicht auf der Serverseite. Seine Fähigkeit zur Kontexterkennung wird durch die Übermittlung des gesamten Kontextinhalts vom Client erreicht. Gemäß der Definition in der OpenAI-API wird sowohl eine übermittelte Frage als auch eine beantwortete Antwort als Nachricht bezeichnet. Der Inhalt einer Nachricht wird in Tokens zerlegt, und es gibt eine Begrenzung der Gesamtzahl der Tokens für gesendete und beantwortete Nachrichten, die bei höchstens 4096 liegt. Bei einem langen Gespräch würden die Token ausgehen.
Guru unterstützt die automatische Bereinigung alter Nachrichten, um eine kontinuierliche Konversation mit einem rollierenden Fenster zu erreichen. Manchmal erwarten wir jedoch eine genauere Kontrolle über die an ChatGPT übermittelten Nachrichten. Derzeit können interne Befehle aus der Nachrichtenverwaltung verwendet werden, um Nachrichten manuell zu verkleinern, zu löschen oder anzuhängen.
Für Nachrichten, die wir nicht löschen oder nicht durch das Rollfenster bereinigt werden möchten, können wir Nachrichten mit dem Befehl : message pin
anheften. Im Oneshot-Modus wird diese Methode zum Anheften der Eingabeaufforderungsnachricht verwendet, wodurch die Eingabeaufforderung für jede Frage beibehalten wird.
: message list
Listet alle aktuellen Nachrichten auf, Alias :ls
: message delete [id...]
Nachrichten löschen, wobei die Parameter Nachrichten-IDs sind, mit denen mehrere Nachrichten gleichzeitig gelöscht werden können: message shrink [expr]
Verkleinert Nachrichten, wobei expr
ein Bereichsausdruck ist, der mit dem Ausdruck in Golang Slice identisch ist: begin:end
. Begin oder End können weggelassen werden, zum Beispiel 5:
, was bedeutet, dass alle Nachrichten mit einer ID größer oder gleich 5 beibehalten werden.message show [id]
Zeigt eine bestimmte Nachricht an und rendert sie mit Markdown. Standardmäßig wird die letzte Nachricht angezeigt.message append
Hängt eine Nachricht an, auch verfügbar mit der Tastenkombination :append
message pin [id]
Pinnen eine Nachricht, und die angeheftete Nachricht wird nicht automatisch durch den automatischen Nachrichtenverkleinerungsmechanismus gelöscht und kann nicht durch den Befehl : message delete
gelöscht werden.message unpin [id]
Löst eine Nachricht Bei jeder Ausführung guru
wird automatisch eine Sitzung erstellt. Der Sitzungsverlauf wird standardmäßig im Verzeichnis ~/.guru/session/
gespeichert. Beim Start können Sie mit --session-id, -s
eine Sitzungs-ID angeben oder mit --last
die letzte Sitzung wiederherstellen. Wenn die angegebene Sitzungs-ID nicht existiert, wird sie automatisch erstellt.
Die Sitzungsverwaltung bietet eine Fülle von Funktionen. Sie können Sitzungen innerhalb derselben Guru REPL erstellen und wechseln. Die nützlichste Funktion der Sitzungsverwaltung ist der Sitzungsstapel, der die Verschachtelung untergeordneter Sitzungen ermöglicht, ohne die aktuelle Sitzung zu unterbrechen. Die Kontinuität der Sitzung ist sehr nützlich. Wenn ich beispielsweise in einem langen Gespräch über einen Aufsatz spreche, erwarte ich, dass die Gesprächsnachrichten aufgezeichnet werden und ich dann bei der Durchsicht in der Zukunft den klaren Chat-Verlauf sehe. Guru unterstützt später auch den Export von Sitzungsverläufen.
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
erstellt eine neue Sitzung, kann auch über den Kurzalias :new
ausgelöst werden.:session remove [sid]
entfernt eine Sitzung.:session shrink [expr]
verkleinert eine Sitzung, wobei expr
ein Bereichsausdruck ist, ähnlich dem Befehl :message shrink
.:session list
listet alle Sitzungen auf, wobei die aktuelle Sitzung durch *
gekennzeichnet ist.:session switch [sid]
wechselt zu einer anderen Sitzung.:session history
zeigt den Sitzungsverlauf an.:session stack
zeigt den Session-Stack-Status an, kann auch über den Kurzalias :stack
ausgelöst werden.:session stack push
erstellt eine neue Sitzung und schiebt sie auf den Stack, kann auch über den Kurzalias >
ausgelöst werden.:session stack pop
entfernt die aktuelle Sitzung vom Stapel, kann auch über den Kurzalias <
ausgelöst werden. >
ist ein spezieller Befehl, der als Alias für :session stack push
dient. Bei der Ausführung wird eine neue Sitzung erstellt und auf den Stapel verschoben. Die Eingabeaufforderung fügt ein „>“-Symbol an, z. B. guru >>
. <
ist ein Alias für :session stack pop
. Bei der Ausführung wird die oberste Sitzung aus dem Stapel entfernt und die Eingabeaufforderung entfernt das Symbol „>“.
Hinweis: Derzeit wirken sich nur die Befehle
>
und<
auf die Eingabeaufforderung aus. Die direkte Verwendung von:session stack push/pop
wird diesen Effekt nicht haben, wir planen jedoch, den Mechanismus in Zukunft zu verbessern.
Mit den prompt repo
-Befehlen können Sie Prompt-Repositorys hinzufügen oder synchronisieren. Derzeit unterstützt Guru zwei hochwertige Eingabeaufforderungs-Repositorys: awesome-chatgpt-prompts
und awesome-chatgpt-prompts-zh
. Benutzer können auch ihre eigenen bevorzugten Repositorys hinzufügen.
Beachten Sie, dass bei der ersten Verwendung für andere Remote-Eingabeaufforderungen als Cheatsheet
und Committer
ein :prompt repo sync
erforderlich ist, um ihre Dateien für die Verwendung zu synchronisieren. Die synchronisierten Eingabeaufforderungsdateien werden standardmäßig im Verzeichnis ~/.guru/prompt/
gespeichert.
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
:prompt
-Befehlen können Sie die in Ihrem awesome-chatgpt-prompts
Repository definierten Eingabeaufforderungen verwenden sowie Ihre eigenen Eingabeaufforderungs-Repositorys hinzufügen und synchronisieren.
:prompt act as
übernimmt die Rolle des Prompts und kann auch über den Kurzalias :act as
ausgelöst werden.:prompt list
listet alle geladenen Eingabeaufforderungsinformationen auf und kann auch über den Kurzalias :prompts
ausgelöst werden.:prompt repo add/sync/list
fügt Eingabeaufforderungs-Repositorys hinzu, synchronisiert sie und listet sie auf. guru > :act as Linux Terminal
Sie können das $
-Zeichen verwenden, um Systembefehle auszuführen, und die Ausgabe des Befehls wird in der nächsten Gesprächsrunde an ChatGPT übermittelt. Dies ist besonders nützlich, wenn Sie eine Datei laden müssen.
Wenn auf das $
-Zeichen kein Befehl folgt, wechselt Guru in den Shell-Modus und die Eingabeaufforderung ändert sich in guru $
. In diesem Modus wird jeder von Ihnen eingegebene Befehl wie in einer Shell ausgeführt und alle Ausgaben werden in der nächsten Gesprächsrunde an ChatGPT übermittelt.
Wenn Sie im Shell-Modus >
eingeben, kehren Sie in den Konversationsmodus zurück.
:info
Live-Parameter anzeigen:set
setzt Live-Parameter 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
Der Executor ist die mächtigste und einzigartigste Funktion von Guru. Beim Starten von Guru können Sie den Executor mit dem Argument --executor, -e
angeben. Nach jeder Chat-Runde leitet Guru die ChatGPT-Ausgabe über stdin an den Ausführenden weiter. Wenn --feedback
angegeben ist, wird die Ausgabe des Executors auch an ChatGPT zurückgemeldet.
Der Executor unterscheidet sich von den oben genannten Systembefehlen. Die Systembefehle bereichern lediglich die Möglichkeiten der Dateneingabe über die shell
. Während der Executor zur Verarbeitung der ChatGPT-Ausgabe verwendet wird, wird eine vollständige geschlossene Schleife von input
-> output
-> input
implementiert. Dies bedeutet, dass wir den Executor während des Gesprächs verwenden können, um Nachrichten zu verarbeiten.
Aus Sicherheitsgründen ist für jeden Executor-Aufruf eine Benutzerbestätigung erforderlich.
Das einfachste Verwendungsszenario besteht darin, den von ChatGPT zurückgegebenen Befehl über die shell
auszuführen.
> guru cheat -e sh
Sie können den folgenden Befehl verwenden, um eine ChatGPT-Selbstkonversation zu erreichen:
> guru -e "guru --dir ./conversation --last" --feedback Hi
Das Prinzip des Selbst-Chattens besteht darin, einen anderen guru
als Ausführenden zu verwenden, das --dir
des zweiten guru
auf ein eigenes unabhängiges Verzeichnis zu setzen, um Verwechslungen mit dem ersten guru
zu vermeiden, und --last
so einzustellen, dass die Sitzung bei jedem Start wiederhergestellt wird um den Kontext des Gesprächs aufrechtzuerhalten.