Наслаждайтесь 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
, чтобы войти в режим oneshot, который удаляет контекстные сообщения для каждого запроса. Начните guru
с --last
, чтобы продолжить последний разговор. go install github.com/shafreeck/guru@latest
Guru использует открытый API OpenAI для связи с ChatGPT. Получите соответствующий ключ API, войдя в свою учетную запись как разработчик.
https://platform.openai.com/account/api-keys
Настройте гуру при первом использовании, запустите guru config
и введите ключ API OpenAI, полученный на предыдущем шаге. Прокси-сервер Socks5 использовать необязательно. Вы можете пропустить этот шаг и использовать параметры непосредственно для команды, но рекомендуется сохранить секретный ключ в файле конфигурации.
> guru [text]
Войдите в режим разговора, напрямую выполнив guru
. На самом деле guru
— это псевдоним команды guru chat
. Запустите guru с флагом --oneshot
, чтобы войти в режим 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 не сохраняет контекст разговора на стороне сервера. Его способность учитывать контекст достигается путем отправки всего контекстного содержимого от клиента. Как определено в API OpenAI, как отправленный вопрос, так и ответ на него называются сообщением. Содержимое сообщения разбивается на токены, и существует ограничение на общее количество токенов как для отправленных, так и для ответных сообщений, которое составляет максимум 4096. Долгий разговор исчерпал бы жетоны.
Guru поддерживает автоматическую очистку старых сообщений для обеспечения непрерывного разговора с прокручивающимся окном. Однако иногда мы ожидаем более точного контроля над сообщениями, отправленными в ChatGPT. В настоящее время внутренние команды управления сообщениями можно использовать для ручного сжатия, удаления или добавления сообщений.
Для сообщений, которые мы не хотим удалять или не хотим очищать с помощью прокручивающегося окна, мы можем закрепить сообщения с помощью команды : message pin
. В режиме oneshot этот метод используется для закрепления сообщения с подсказкой, при этом подсказка будет отправляться для каждого вопроса.
: message list
Перечисляет все текущие сообщения, используя псевдонимы :ls
: message delete [id...]
Удалить сообщения, где параметрами являются идентификаторы сообщений, которые могут удалить несколько сообщений одновременно.: message shrink [expr]
Сжимает сообщения, где expr
— это выражение диапазона, оно такое же, как выражение в Golang Slice: begin:end
. Начало или Конец можно опустить, например 5:
, что означает сохранение всех сообщений с идентификатором, большим или равным 5.message show [id]
Отображает определенное сообщение и визуализирует его с помощью Markdown. По умолчанию отображается последнее сообщение.message append
Добавляет сообщение, также доступно с помощью ярлыка :append
message pin [id]
Закрепляет сообщение, и закрепленное сообщение не будет автоматически удалено механизмом автоматического сжатия сообщения и не может быть удалено командой : message delete
.message unpin [id]
Открепляет сообщение При каждом запуске guru
автоматически создается сеанс. По умолчанию история сеансов сохраняется в каталоге ~/.guru/session/
. При запуске вы можете указать идентификатор сеанса с помощью --session-id, -s
или восстановить последний сеанс с помощью --last
. Если указанный идентификатор сеанса не существует, он будет создан автоматически.
Управление сеансами предлагает множество функций. Вы можете создавать и переключать сеансы в одном 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 поддерживает два высококачественных репозитория подсказок: 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
Исполнитель — самая мощная и уникальная особенность Гуру. При запуске Guru вы можете указать исполнителя, используя аргумент --executor, -e
. После каждого раунда чата Guru передает выходные данные ChatGPT исполнителю через стандартный ввод. Если указан --feedback
, выходные данные исполнителя также будут переданы обратно в ChatGPT.
Исполнитель отличается от упомянутых выше системных команд. Системные команды лишь обогащают средства ввода данных через shell
. В то время как исполнитель используется для обработки вывода ChatGPT, реализуя полный замкнутый цикл input
-> output
-> input
. Это означает, что мы можем использовать исполнителя во время разговора для обработки сообщений.
В целях безопасности подтверждение пользователя требуется для каждого вызова исполнителя.
Самый простой сценарий использования — выполнить команду, возвращаемую ChatGPT, через shell
.
> guru cheat -e sh
Вы можете использовать следующую команду для достижения самостоятельного диалога ChatGPT:
> guru -e "guru --dir ./conversation --last" --feedback Hi
Принцип самостоятельного чата заключается в том, чтобы использовать другого guru
в качестве исполнителя, установить --dir
второго guru
в собственный независимый каталог, чтобы избежать путаницы с первым guru
, и установить --last
для восстановления сеанса при каждом его запуске. поддерживать контекст разговора.