Disfruta de ChatGPT en tu 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
para ingresar al modo oneshot que elimina los mensajes de contexto para cada solicitud. Inicie guru
con --last
para continuar la última conversación. go install github.com/shafreeck/guru@latest
Guru utiliza la API abierta de OpenAI para comunicarse con ChatGPT. Obtenga la clave API correspondiente iniciando sesión en su cuenta como desarrollador.
https://platform.openai.com/account/api-keys
Configure guru por primera vez, ejecute guru config
e ingrese su clave API OpenAI obtenida en el paso anterior. El uso de un proxy calcetines5 es opcional. Puede omitir este paso y usar parámetros directamente para el comando, pero se recomienda guardar su clave secreta en el archivo de configuración.
> guru [text]
Ingrese al modo de conversación ejecutando directamente guru
. guru
es en realidad un alias del comando guru chat
. Ejecute guru con el indicador --oneshot
para ingresar al modo oneshot
; en este modo, guru suelta los mensajes de contexto para cada pregunta. La sesión siempre se graba automáticamente (por defecto en el directorio ~/.guru/session/
)
> guru cheat
guru cheat
es un alias del comando guru chat -p Cheatsheet
, que se utiliza para simplificar la entrada del usuario.
> git diff | guru commit
guru commit
es un alias de guru chat -p Committer
.
Utilice el parámetro --oneshot
para ingresar al modo de conversación de una sola vez. En este modo, los mensajes de contexto se descartarán automáticamente. Sin embargo, si --prompt, -p
especifica un mensaje, el contenido del mensaje se fijará y enviará con cada solicitud.
Utilice el comando
: message pin
para fijar cualquier mensaje
guru --oneshot
echo list files in this dir in detail | guru cheat | sh
ChatGPT no almacena el contexto de la conversación en el lado del servidor. Su capacidad de reconocimiento del contexto se logra enviando todo el contenido contextual del cliente. Como se define en la API de OpenAI, tanto una pregunta enviada como una respuesta respondida se denominan mensaje. El contenido de un mensaje se convierte en tokens y existe una limitación del total de tokens enviados y respondidos, que es 4096 como máximo. Una larga conversación acabaría con las fichas.
Guru admite la limpieza automática de mensajes antiguos para lograr una conversación continua con una ventana móvil. Sin embargo, a veces esperamos un control más preciso sobre los mensajes enviados a ChatGPT. En este momento, los comandos internos de la administración de mensajes se pueden usar para reducir, eliminar o agregar mensajes manualmente.
Para los mensajes que no queremos eliminar o que no queremos que la ventana móvil limpie, podemos fijar mensajes con el comando : message pin
. El modo oneshot utiliza este método para fijar el mensaje de aviso, lo que mantiene el aviso que se enviará para cada pregunta.
: message list
Enumera todos los mensajes actuales, alias :ls
: message delete [id...]
Eliminar mensajes, donde los parámetros son ID de mensajes que pueden eliminar varios mensajes al mismo tiempo: message shrink [expr]
Reduce los mensajes, donde expr
es una expresión de rango, es la misma que la expresión en Golang Slice: begin:end
. Se pueden omitir el inicio o el final, por ejemplo 5:
lo que significa conservar todos los mensajes con un ID mayor o igual a 5.message show [id]
Muestra un determinado mensaje y lo representa con Markdown. El valor predeterminado es mostrar el último mensaje.message append
Añade un mensaje, también disponible con el acceso directo :append
message pin [id]
Fija un mensaje, y el mensaje fijado no se eliminará automáticamente mediante el mecanismo de reducción automática de mensajes y no se puede eliminar con el comando : message delete
.message unpin [id]
Desancla un mensaje Cada vez que se ejecuta guru
, se crea automáticamente una sesión. El historial de sesiones se guarda en el directorio ~/.guru/session/
de forma predeterminada. Al iniciar, puede especificar una ID de sesión con --session-id, -s
o restaurar la última sesión con --last
. Si el ID de sesión especificado no existe, se creará automáticamente.
La gestión de sesiones ofrece una gran cantidad de funciones. Puede crear y cambiar sesiones dentro del mismo Guru REPL. La característica más útil de la gestión de sesiones es la pila de sesiones que permite anidar sesiones secundarias sin interrumpir la sesión actual. La continuidad de la sesión es muy útil, por ejemplo, en una conversación larga cuando se habla de un artículo, espero que los mensajes de la conversación se graben y luego vería el historial de chat claro cuando lo revise en el futuro. Guru también admitirá la exportación de historiales de sesiones más adelante.
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
crea una nueva sesión, también se puede activar mediante el alias abreviado :new
.:session remove [sid]
elimina una sesión.:session shrink [expr]
reduce una sesión, donde expr
es una expresión de rango, similar al comando :message shrink
.:session list
enumera todas las sesiones, con la sesión actual indicada por *
.:session switch [sid]
cambia a una sesión diferente.:session history
muestra el historial de sesiones.:session stack
muestra el estado de la pila de sesiones, también se puede activar mediante el alias abreviado :stack
.:session stack push
crea una nueva sesión y la envía a la pila; también se puede activar mediante el alias abreviado >
.:session stack pop
extrae la sesión actual de la pila, también se puede activar mediante el alias abreviado <
. >
es un comando especial que sirve como alias para :session stack push
. Cuando se ejecuta, crea una nueva sesión y la coloca en la pila. El símbolo del sistema agregará un símbolo ">", como guru >>
. <
es un alias para :session stack pop
. Cuando se ejecuta, extrae la sesión superior de la pila y el símbolo del sistema eliminará el símbolo ">".
Nota: actualmente, solo los comandos
>
y<
afectarán el símbolo del sistema. El uso directo de:session stack push/pop
no tendrá este efecto, pero planeamos mejorar el mecanismo en el futuro.
Los comandos prompt repo
le permiten agregar o sincronizar repositorios de avisos. Actualmente, Guru admite dos repositorios de mensajes de alta calidad: awesome-chatgpt-prompts
y awesome-chatgpt-prompts-zh
. Los usuarios también pueden agregar sus propios repositorios favoritos.
Tenga en cuenta que, durante el uso inicial, las indicaciones remotas distintas de Cheatsheet
y Committer
requerirán un comando :prompt repo sync
para sincronizar sus archivos para su uso. Los archivos de aviso sincronizados se almacenarán en el directorio ~/.guru/prompt/
de forma predeterminada.
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
Los comandos :prompt
le permiten utilizar los mensajes definidos en su repositorio awesome-chatgpt-prompts
, así como agregar y sincronizar sus propios repositorios de mensajes.
:prompt act as
actúa como la función del mensaje, también se puede activar mediante el alias abreviado :act as
.:prompt list
enumera toda la información del mensaje cargado, también se puede activar mediante el alias abreviado :prompts
.:prompt repo add/sync/list
agrega, sincroniza y enumera repositorios de mensajes. guru > :act as Linux Terminal
Puede utilizar el signo $
para ejecutar comandos del sistema y el resultado del comando se enviará a ChatGPT en la siguiente ronda de conversación. Esto es particularmente útil cuando necesitas cargar un archivo.
Si ningún comando sigue al signo $
, Guru cambiará al modo shell y el símbolo del sistema cambiará a guru $
. En este modo, cualquier comando que ingrese se ejecutará como en un shell y todos los resultados se enviarán a ChatGPT en la siguiente ronda de conversación.
En el modo Shell, ingresando >
volverá al modo de conversación.
:info
viendo parámetros en vivo:set
la configuración de parámetros en vivo 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
El Ejecutor es la característica más poderosa y única de Guru. Al iniciar Guru, puede especificar el ejecutor usando el argumento --executor, -e
. Después de cada ronda de chat, Guru pasará la salida de ChatGPT al ejecutor a través de la entrada estándar. Si se especifica --feedback
, la salida del ejecutor también se enviará a ChatGPT.
El ejecutor es diferente de los comandos del sistema mencionados anteriormente. Los comandos del sistema sólo enriquecen los medios de entrada de datos a través del shell
. Mientras que el ejecutor se utiliza para manejar la salida de ChatGPT, implementa un ciclo cerrado completo de input
-> output
-> input
. Esto significa que podemos utilizar el ejecutor durante la conversación para procesar mensajes.
Por razones de seguridad, se requiere la confirmación del usuario para cada llamada del ejecutor.
El escenario de uso más simple es ejecutar el comando devuelto por ChatGPT a través del shell
.
> guru cheat -e sh
Puede utilizar el siguiente comando para lograr la autoconversación ChatGPT:
> guru -e "guru --dir ./conversation --last" --feedback Hi
El principio del autochat es utilizar otro guru
como ejecutor, establecer el --dir
del segundo guru
en su propio directorio independiente para evitar confusión con el primer guru
y configurar --last
para restaurar la sesión cada vez que se inicia. para mantener el contexto de la conversación.