7 releases
0.1.0 |
|
---|---|
0.0.20 | Mar 22, 2023 |
#749 in Command line utilities
83 downloads per month
48KB
780 lines
Gpt Cli
Linux terminal GPT3 integration with killer prompt that skip descriptions and other human-readable bullshit. It shows
you commands that can be executed by ENTER
.
Example:
You typing:
p show me my graphic cards
You will see:
lspci -k | grep -A 2 -E "(VGA|3D)"
After ENTER
you will see
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
Subsystem: CLEVO/KAPOK Computer Device 65f5
Kernel driver in use: i915
--
01:00.0 VGA compatible controller: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] (rev a1)
Subsystem: CLEVO/KAPOK Computer Device 67f5
Kernel driver in use: nvidia
More powerful every day
From v0.0.8 it supports context overriding. Default system context is
Imagine you are linux terminal command selector. I will describe task, and you will respond only using linux command, without description, without explanation.
Default postprocess mode is confirm
. It shows answer and asking if it should be executed.
But you can use it in other use-cases. To translate texts:
GPT_SYSTEM_PROMPT="I am translator from polish to english. I need to translate this text." GPT_POST=copy p Witaj świecie
You can redirect it to file set these environment variables as permanent.
export GPT_SYSTEM_PROMPT="I am translator from polish to english. I need to translate this text."; export GPT_POST=out;
and then translate using:
p "$(cat polish.txt)" > english.txt
To back do default
unset GPT_SYSTEM_PROMPT; unset GPT_POST
Possible values:
GPT_SYSTEM_PROMPT
- any string that will explain gpt3 how to behave.GPT_POST
- confirm - default, will ask if execute output in terminal
- copy - will copy your answer to terminal clipboard
- out - will print answer on standard output - usefully for further processing
Installation
There are few options
Shell
wget -qO- https://raw.githubusercontent.com/gustawdaniel/gpt-cli/main/install.sh | bash
it will save gpt-cli
and alias p
in /usr/local/bin
so this is why it require sudo.
Cargo
cargo install gpt-cli
ln -s ~/.cargo/bin/gpt-cli ~/.cargo/bin/p
Docker
alias p="docker run -v ~/.gpt-cache.json:/.gpt-cache.json -e GPT3_API_KEY=${GPT3_API_KEY} gustawdaniel/gpt-cli"
In Docker, you can't use flag GPT_POST
and it is automatically set as out
. It means that you can't confirm command
by ENTER
and commands will not be copied to your clipboard.
Complication from source
git clone https://github.com/gustawdaniel/gpt-cli && cd gpt-cli
cargo build --release
sudo cp ./target/release/gpt-cli /usr/local/bin/p
Config
Copy your GPT3_API_KEY
to env variable. Your .profile
, .bashrc
, or .zshrc
file.
export GPT3_API_KEY=sk-xxx
You'd need to enter your own OpenAI API key Here's how you can get one
- Go to https://openai.com/api/login
- Create an account or log into your existing account
- Go to https://platform.openai.com/account/api-keys or
Price: $0.002 per 1,000 tokens
. Single command is about 50 tokens. So in price 1USD you have about 10.000
commands.
Tools with model before gpt-3.5-turbo
costs 10 times more.
Usage
what you typing in terminal | answers you can execute by "ENTER" |
---|---|
show me graphic card | lspci -k | grep -A 2 -E "(VGA|3D)" |
jq command that join package name and version by dash | jq '.name + "-" + .version' |
three processes with highest ram usage | ps aux --sort=-%mem | head -n 4 |
make backup of mysql db called docs | mysqldump docs > docs_backup.sql |
setup jest configured for typescript | npm install --save-dev jest @types/jest ts-jest |
generate ed keys | openssl genpkey -algorithm ed25519 -out privatekey.key |
show me content of Cargo.toml encoded as base64 | base64 Cargo.toml |
show me content of Cargo.toml encoded as base64 in single line | cat Cargo.toml | base64 -w 0 |
show timer that will update every second | watch -n 1 date +%T |
range from 10 to 15 | seq 10 15 |
replace all lines starting from "CFG_" to starting from "CONFIG_" in file env.conf | sed -i 's/^CFG_/CONFIG_/g' env.conf |
write one liner to detect emails in file | grep -Eio '\b[A-Za-z0-9._%+-]+@A-Za-z0-9.-+.[A-Z|a-z]{2,}\b' filename |
cron line to execute /bin/task every monday at 7pm | 0 19 * * 1 /bin/task |
run rusts tests one by one | cargo test -- --test-threads=1 |
who i am and am i still needed | whoami and yes, you are still needed. <-- hahah it is authentic gpt3 answer |
Features
- Interactive commands
- Colors
- Real time stream
- Overriding system context (
GPT_SYSTEM_PROMPT
env) - Confirm, Copy and Standard Output modes (
GPT_POST
env) - Easy to install (in progress)
- compilation from source
- install by bash like nvm
- docker
- snap
- aur
- apt
- dnf
Exceptions
If commands contains export
or $
it can't be correctly passed from child process to parent.
So there is fallback applied and these commands are copied if you wanted to execute them by confirmation.
Examples:
p change terminal language to english
Text 'export LANG=en_US.UTF-8' was copied to your clipboard
p show my current shell
Text 'echo $SHELL' was copied to your clipboard
Constrains
Ofc GPT3 does not have sense of humor... so
p say mooo as cow that have colors of rainbow
will not work. Correct answer is
cowsay mooo | lolcat
and for
p show my train in terminal
answer is
Sorry, I do not understand. Can you please provide more details about what you want me to do?
instead
sl
Star History
Alternatives
Stars was updated 14-03-2023
This project | |
---|---|
Language | rust |
Easy to install | no (wip) |
Streaming | yes |
Stars | 4 |
Release | 13-03-2023 |
Last update | 14-03-2023 |
Engine | gpt-3.5-turbo |
Goal | save time for cli commands typing if you do not remember them |
gpt3-cli | https://github.com/CrazyPython/gpt3-cli |
---|---|
Language | python |
Easy to install | medium |
Streaming | yes |
Stars | 50 |
Release | 23-03-2021 |
Last update | 22-04-2021 |
Engine | all before gpt-3.5-turbo |
Goal | A lightweight command-line interface to OpenAI's GPT-3. |
ai-cli | https://github.com/abhagsain/ai-cli |
---|---|
Language | typescript |
Easy to install | yes |
Streaming | no |
Stars | 935 |
Release | 15-11-2022 |
Last update | 09-12-2022 |
Engine | all before gpt-3.5-turbo |
Goal | Get answers for CLI commands from GPT3 right from your terminal |
heygpt | https://github.com/fuyufjh/heygpt |
---|---|
Language | rust |
Easy to install | yes |
Streaming | yes |
Stars | 40 |
Release | 06-03-2023 |
Last update | 12-03-2023 |
Engine | gpt-3.5-turbo |
Goal | A simple common-line interface for ChatGPT API. |
caos | https://github.com/dabumana/caos |
---|---|
Language | go |
Easy to install | no |
Streaming | no |
Stars | 5 |
Release | 22-01-2023 |
Last update | 13-03-2023 |
Engine | all before gpt-3.5-turbo |
Goal | advanced, configurable conversational assistant for openai services |
gptsh | https://github.com/shorwood/gptsh |
---|---|
Language | javascript |
Easy to install | yes |
Streaming | no |
Stars | 99 |
Release | 27-12-2020 |
Last update | 18-01-2022 |
Engine | all before gpt-3.5-turbo |
Goal | translate natural language questions and requests into shell commands |
rusty | https://github.com/zahidkhawaja/rusty |
---|---|
Language | rust |
Easy to install | no |
Streaming | no |
Stars | 272 |
Release | 05-09-2022 |
Last update | 07-02-2023 |
Engine | text-davinci-003 |
Goal | help you remember bash commands |
cgpt | https://github.com/MagicCube/cli-gpt |
---|---|
Language | typescript |
Easy to install | yes |
Streaming | no |
Stars | 18 |
Release | 07-03-2023 |
Last update | 15-03-2023 |
Engine | gpt-3.5-turbo |
Goal | Translate human language to command line using ChatGPT |
linux-command-gpt | https://github.com/asrul10/linux-command-gpt |
---|---|
Language | go |
Easy to install | no |
Streaming | yes |
Stars | 54 |
Release | 12-03-2023 |
Last update | 19-03-2023 |
Engine | gpt-3.5-turbo |
Goal | Get Linux commands in natural language with the power of ChatGPT. |
GNU vs MUSL releases
During compilation, you can use static linking (musl) or dynamic (gnu). To use terminal-clipboard
there is required
need dynamic linking, but it works only on typical linuxes that uses libc. To make docker image small (12 MB) there is
provided musl
version.
So to be able to use all features (support for GPT_POST=copy), I recommend to use standard gnu
but if you need docker
or run it on alpine then use musl
.
Support
I'm looking for challenging, remote job with rust + typescript + advanced math, so if you appreciate this project, you can share it, leave star, and recommend me earning employment commission.
Dependencies
~11–31MB
~442K SLoC