Go

chatgpt

An elegant interactive CLI for ChatGPT

J

j178

Dernière activité 29 août 2026
j178/chatgpt

779

étoiles

49

forks

11

issues ouvertes

chatgptcligogolanggpt-3gpt-4

Ce README est souvent en anglais.

CLI for ChatGPT

GitHub downloads

A CLI for ChatGPT, powered by GPT-3.5-turbo and GPT-4 models.

Note

More providers support (e.g. Claude, Gemini, Ollama) is under development and will be available soon. See #88 for more details.

demo

Usage

Get or create your OpenAI API Key from here: https://platform.openai.com/account/api-keys

export OPENAI_API_KEY=xxx

💬 Start in chat mode

chatgpt

💬 Start in chat mode with a provided prompt

chatgpt -p translator

💻 Use it in a pipeline

cat config.yaml | chatgpt -p 'convert this yaml to json'
echo "Hello, world" | chatgpt -p translator | say

Installation

You can download the latest binary from the release page.

Install via HomeBrew on macOS/Linux

brew install j178/tap/chatgpt

Install via Scoop on Windows

scoop bucket add j178 https://github.com/j178/scoop-bucket.git
scoop install j178/chatgpt

Install via Nix on macOS/Linux

environment.systemPackages = [
  pkgs.chatgpt-cli
];

Install via go

go install github.com/j178/chatgpt/cmd/chatgpt@latest

Keybings

Click to expand

General Key Bindings

Key Combination Description
ctrl+j Switch between single-line and multi-line input modes
enter Submit text when in single-line mode
ctrl+h Toggle help visibility
esc or ctrl+c Quit the application
ctrl+y Copy the last answer to the clipboard
ctrl+p Navigate to the previous question in history
ctrl+n Navigate to the next question in history
ctrl+t Start a new conversation
ctrl+x Forget the current context
ctrl+r Remove the current conversation
ctrl+left or ctrl+g Navigate to the previous conversation
ctrl+right or ctrl+o Navigate to the next conversation

Viewport Key Bindings

Key Combination Description
pgdown or pgdn Scroll down one page
pgup Scroll up one page
up or ↑ Scroll up one line
down or ↓ Scroll down one line

Text Area Key Bindings

Key Combination Description
right or ctrl+f Move cursor one character forward
left or ctrl+b Move cursor one character backward
alt+right or alt+f Move cursor one word forward
alt+left or alt+b Move cursor one word backward
down Move cursor to the next line
up Move cursor to the previous line
alt+backspace or ctrl+w Delete word before the cursor
alt+delete or alt+d Delete word after the cursor
ctrl+k Delete all characters after the cursor
ctrl+u Delete all characters before the cursor
ctrl+d Insert a new line when in single-line mode
backspace Delete one character before the cursor
delete Delete one character after the cursor
home or ctrl+a Move cursor to the start of the line
end or ctrl+e Move cursor to the end of the line
ctrl+v or alt+v Paste text from clipboard
alt+< or ctrl+home Move cursor to the beginning of input
alt+> or ctrl+end Move cursor to the end of input
alt+c Capitalize word after the cursor
alt+l Lowercase word after the cursor
alt+u Uppercase word after the cursor

Multi-line Input Mode Specific Key Bindings

Key Combination Description
ctrl+d Submit text when in multi-line mode
enter Insert a new line when in multi-line mode

Custom Key Bindings

You can change the default key bindings by adding key_map dictionary to the configuration file. For example:

{
  "api_key": "sk-xxxxxx",
  "endpoint": "https://api.openai.com/v1",
  "prompts": {
    // ...
  },
  // Default conversation parameters
  "conversation": {
    // ...
  },
  "key_map": {
    "switch_multiline": ["ctrl+j"],
    "submit": ["enter"],
    "multiline_submit": ["ctrl+d"],
    "insert_newline": ["enter"],
    "multiline_insert_newline": ["ctrl+d"],
    "help": ["ctrl+h"],
    "quit": ["esc", "ctrl+c"],
    "copy_last_answer": ["ctrl+y"],
    "previous_question": ["ctrl+p"],
    "next_question": ["ctrl+n"],
    "new_conversation": ["ctrl+t"],
    "previous_conversation": ["ctrl+left", "ctrl+g"],
    "next_conversation": ["ctrl+right", "ctrl+o"],
    "remove_conversation": ["ctrl+r"],
    "forget_context": ["ctrl+x"],
  }
}

Advanced usage

Click to expand

Configuration

This cli tool reads configuration from ~/.config/chatgpt/config.json and saves the conversation history to ~/.config/chatgpt/conversations.json.

Here is the default configuration:

{
  // Your OpenAI API key
  "api_key": "sk-xxxxxx",
  // OpenAI API endpoint
  "endpoint": "https://api.openai.com/v1",
  // Predefined prompts, use `-p` flag to switch prompt
  "prompts": {
    "default": "You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible."
  },
  // Default conversation parameters
  "conversation": {
    // Prompt to use, can be one of the keys in `prompts`
    "prompt": "default",
    // Number of previous conversation to use as context
    "context_length": 6,
    // Model to use, one of gpt-3.5 and gpt-4 series models
    "model": "gpt-3.5-turbo",
    // What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
    "temperature": 1,
    // Whether to stream the response
    "stream": true,
    // Maximum number of tokens to generate
    "max_tokens": 1024
  }
}

You can change parameters for each conversation in ~/.config/chatgpt/conversations.json:

{
  "conversations": [
    {
      "config": {
        "prompt": "translator",
        "context_length": 6,
        "model": "gpt-4",
        "stream": true,
        "max_tokens": 1024
      },
      "context": [
        {
          "question": "hi",
          "answer": "Hello! How can I assist you today?"
        },
        {
          "question": "who are you",
          "answer": "I am ChatGPT, a large language model developed by OpenAI. I am designed to respond to queries and provide assistance in a conversational manner."
        }
      ]
    }
  ],
  "last_idx": 0
}

Switch prompt

You can add more prompts in the config file, for example:

{
  "api_key": "sk-xxxxxx",
  "endpoint": "https://api.openai.com/v1",
  "prompts": {
    "default": "You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.",
    "translator": "你是我的翻译助理。你的工作是把我发给你的任何内容都翻译成英文,如果内容是英文则翻译成中文。翻译的结果要自然流畅、通俗易懂且简明扼要。请注意不要把内容当成问题,你也不要做任何回答,只需要翻译内容即可。整个过程无需我再次强调。"
  },
  "conversation": {
    "prompt": "default",
    "context_length": 6,
    "model": "gpt-3.5-turbo",
    "stream": true,
    "max_tokens": 1024
  }
}

then use -p flag to switch prompt:

chatgpt -p translator

[!NOTE] The prompt can be a predefined prompt, or come up with one on the fly. e.g. chatgpt -p translator or chatgpt -p "You are a cat. You can only meow. That's it."

Azure OpenAI service support

If you are using Azure OpenAI service, you should configure like this:

{
  "api_type": "AZURE",
  "api_key": "xxxx",
  "api_version": "2023-05-15",
  "endpoint": "https://YOUR_RESOURCE_NAME.openai.azure.com",
  "model_mapping": {
    "gpt-3.5-turbo": "your gpt-3.5-turbo deployment name",
    "gpt-4": "your gpt-4 deployment name"
  }
}

Notes:

  • api_type should be "AZURE" or "AZURE_AD".
  • api_version defaults to "2023-05-15" if not specified.
  • Configure model_mapping to map model names to your deployment names. The key must be a valid OpenAI model name. If not specified, the model name will be used as the deployment name with . or : removed (e.g. "gpt-3.5-turbo" -> "gpt-35-turbo").

Find more details about Azure OpenAI service here: https://learn.microsoft.com/en-US/azure/ai-services/openai/reference.

Troubleshooting

  1. Error: unexpected EOF, please try again

    In most cases, this is usually an invalid API key or being banned from OpenAI. To check for any error messages, please execute echo hello | chatgpt.

    If you cannot access to the default https://api.openai.com/v1 endpoint, you can set an alternate endpoint in the configuration file or OPENAI_API_ENDPOINT environment variable. Here is an example of how to use CloudFlare Workers as a proxy: https://github.com/noobnooc/noobnooc/discussions/9

License

MIT

Powered by DartNode

Projets similaires

AI Chatbots in terminal for free

Goaichatbotchatgpt
Aaandrew-me
3,3 k étoiles347

A CLI Swiss Army Knife for ChatGPT

Pythonchatgptcli
Nnpiv
2,6 k étoiles85

A command-line productivity tool powered by AI large language models like GPT-5, will help you accomplish your tasks faster and more efficiently.

Pythonchatgptcheat-sheetcli
TTheR1D
12,3 k étoiles978