端末でChatGPTをお楽しみください。 中国語
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
使用して、各リクエストのコンテキスト メッセージを削除するワンショット モードを開始します。最後の会話を続けるには、 --last
でguru
開始します。 go install github.com/shafreeck/guru@latest
Guru は OpenAI のオープン API を使用して ChatGPT と通信します。開発者としてアカウントにログインして、対応する API キーを取得します。
https://platform.openai.com/account/api-keys
初めて guru を使用して構成し、 guru config
を実行して、上記の手順で取得した OpenAI API キーを入力します。 Socks5 プロキシの使用はオプションです。この手順を省略して、コマンドのパラメーターを直接使用することもできますが、秘密キーを構成ファイルに保存することをお勧めします。
> guru [text]
guru
直接実行して会話モードに入ります。 guru
実際にはguru chat
コマンドのエイリアスです。 --oneshot
フラグを指定して guru を実行すると、 oneshot
モードに入ります。このモードでは、guru は問い合わせごとにコンテキスト メッセージを削除します。セッションは常に自動的に記録されます(デフォルトは~/.guru/session/
ディレクトリにあります)。
> guru cheat
guru cheat
は、 guru chat -p Cheatsheet
コマンドのエイリアスで、ユーザー入力を簡略化するために使用されます。
> git diff | guru commit
guru commit
guru chat -p Committer
のエイリアスです。
--oneshot
パラメータを使用して、ワンショット会話モードを開始します。このモードでは、コンテキスト メッセージは自動的に破棄されます。ただし、 --prompt, -p
プロンプトを指定すると、プロンプトの内容が固定され、リクエストごとに送信されます。
: message pin
コマンドを使用してメッセージを固定します。
guru --oneshot
echo list files in this dir in detail | guru cheat | sh
ChatGPT は、会話のコンテキストをサーバー側に保存しません。そのコンテキスト認識機能は、クライアントからすべてのコンテキスト コンテンツを送信することによって実現されます。 OpenAI API で定義されているように、送信された質問と返信された回答は両方ともメッセージと呼ばれます。メッセージのコンテンツはトークンにトークン化され、送信と返信の合計トークン数には最大 4096 という制限があります。長い会話をするとトークンがなくなってしまいます。
Guru は、ローリング ウィンドウでの継続的な会話を実現するために、古いメッセージの自動クリーニングをサポートしています。ただし、ChatGPT に送信されるメッセージをより正確に制御できることが期待される場合もあります。現時点では、メッセージ管理の内部コマンドを使用して、メッセージを手動で縮小、削除、または追加できます。
削除したくないメッセージ、またはローリング ウィンドウによってクリーンアップしたくないメッセージの場合は、 : message pin
コマンドを使用してメッセージを固定できます。ワンショット モードでは、このメソッドを使用してプロンプト メッセージを固定し、質問ごとにプロンプトが送信されるようにします。
: message list
現在のすべてのメッセージをリストします。別名:ls
: message delete [id...]
メッセージを削除します。パラメータは複数のメッセージを同時に削除できるメッセージ ID です。: message shrink [expr]
メッセージを縮小します。 expr
範囲式で、Golang Slice: begin:end
の式と同じです。 Begin または End は省略できます (例5:
)。これは、5 以上の ID を持つすべてのメッセージを保持することを意味します。message show [id]
特定のメッセージを表示し、Markdown でレンダリングします。デフォルトでは、最後のメッセージが表示されます。message append
メッセージを追加します。ショートカット:append
でも使用できます。message pin [id]
メッセージを固定します。固定されたメッセージは、メッセージ自動圧縮メカニズムによって自動的に削除されず、 : message delete
コマンドによって削除することもできません。message unpin [id]
メッセージの固定を解除しますguru
が実行されるたびに、セッションが自動的に作成されます。セッション履歴は、デフォルトで~/.guru/session/
ディレクトリに保存されます。開始時に、 --session-id, -s
でセッション ID を指定するか、 --last
で最後のセッションを復元できます。指定したセッション ID が存在しない場合は、自動的に作成されます。
セッション管理は豊富な機能を提供します。同じ Guru REPL 内でセッションを作成したり切り替えたりできます。セッション管理の最も便利な機能は、現在のセッションを中断せずに子セッションのネストを可能にするセッション スタックです。セッションの継続性は非常に便利です。たとえば、論文について話すときの長い会話では、会話メッセージが記録されることを期待しており、将来レビューするときに明確なチャット履歴が表示されます。 Guru は後でセッション履歴のエクスポートもサポートする予定です。
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
新しいセッションを作成します。短縮エイリアス:new
使用してトリガーすることもできます。:session remove [sid]
セッションを削除します。:session shrink [expr]
セッションを縮小します。 expr
は、 :message shrink
コマンドと同様の範囲式です。:session list
、すべてのセッションをリストします。現在のセッションは*
で示されます。:session switch [sid]
別のセッションに切り替えます。:session history
セッション履歴を表示します。:session stack
セッション スタックのステータスを表示します。短縮エイリアス:stack
使用してトリガーすることもできます。:session stack push
、新しいセッションを作成してスタックにプッシュします。短縮エイリアス>
を介してトリガーすることもできます。:session stack pop
スタックから現在のセッションをポップします。短縮エイリアス<
を介してトリガーすることもできます。>
:session stack push
のエイリアスとして機能する特別なコマンドです。実行すると、新しいセッションが作成され、スタックにプッシュされます。コマンド プロンプトでは、 guru >>
のように「>」記号が追加されます。 <
:session stack pop
のエイリアスです。実行すると、スタックから最上位のセッションがポップされ、コマンド プロンプトは「>」記号を削除します。
注: 現在、コマンド プロンプトに影響を与えるのは
>
および<
コマンドのみです。:session stack push/pop
直接使用してもこの効果はありませんが、将来的にこのメカニズムを改善する予定です。
prompt repo
コマンドを使用すると、プロンプト リポジトリを追加または同期できます。現在、Guru は 2 つの高品質プロンプト リポジトリ、 awesome-chatgpt-prompts
とawesome-chatgpt-prompts-zh
をサポートしています。ユーザーは自分のお気に入りのリポジトリを追加することもできます。
最初の使用時に、 Cheatsheet
とCommitter
以外のリモート プロンプトでは、使用するファイルを同期するために:prompt repo sync
コマンドが必要になることに注意してください。同期されたプロンプト ファイルは、デフォルトでは~/.guru/prompt/
ディレクトリに保存されます。
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
コマンドを使用すると、 awesome-chatgpt-prompts
リポジトリで定義されたプロンプトを使用できるほか、独自のプロンプト リポジトリを追加して同期することもできます。
:prompt act as
プロンプトの役割として機能し、短縮エイリアス:act as
を使用してトリガーすることもできます。:prompt list
ロードされたすべてのプロンプト情報をリストします。短縮エイリアス:prompts
介してトリガーすることもできます。:prompt repo add/sync/list
リポジトリを追加、同期、およびリストします。 guru > :act as Linux Terminal
$
記号を使用してシステム コマンドを実行すると、コマンドの出力が次の会話ラウンドで ChatGPT に送信されます。これは、ファイルをロードする必要がある場合に特に便利です。
$
記号の後にコマンドがない場合、Guru はシェル モードに切り替わり、コマンド プロンプトはguru $
に変わります。このモードでは、入力したコマンドはすべてシェルのように実行され、すべての出力は次の会話ラウンドで ChatGPT に送信されます。
シェルモードでは、 >
と入力すると会話モードに戻ります。
:info
ライブパラメータの表示:set
ライブパラメータの設定 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
Executor は、Guru の最も強力かつユニークな機能です。 Guru を起動するとき、 --executor, -e
引数を使用してエグゼキュータを指定できます。各チャットラウンドの後、Guru は標準入力を介して ChatGPT 出力を実行者に渡します。 --feedback
を指定すると、エグゼキューターの出力も ChatGPT にフィードバックされます。
実行プログラムは、上記のシステム コマンドとは異なります。システム コマンドは、 shell
を介したデータ入力の手段を強化するだけです。 Executor は ChatGPT 出力を処理するために使用され、 input
-> output
-> input
の完全な閉ループを実装します。これは、会話中にエグゼキュータを使用してメッセージを処理できることを意味します。
セキュリティ上の理由から、実行者呼び出しごとにユーザーの確認が必要です。
最も単純な使用シナリオは、ChatGPT から返されたコマンドをshell
経由で実行することです。
> guru cheat -e sh
次のコマンドを使用して、ChatGPT の自己対話を実現できます。
> guru -e "guru --dir ./conversation --last" --feedback Hi
セルフチャットの原則は、別のguru
実行者として使用し、最初のguru
との混同を避けるために 2 番目のguru
の--dir
独自の独立したディレクトリに設定し、 --last
を設定してセッションが開始されるたびにセッションを復元することです。会話のコンテキストを維持するため。