動かざることバグの如し

近づきたいよ 君の理想に

脱curl コマンドラインからChatGPTを簡単に使う方法

やりたいこと

コマンドラインでChatGPTを使いたい。

curlで叩くのが正攻法だが、コマンド長くて毎回このコマンド用意するのはダルいし、パラメーターの変更も面倒

curl http://0.0.0.0:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "東京の魅力を3つ教えてください。"}]}' | jq .

で、調べてみると結構コマンドで動くChatGPTクライアントはある。ただどれも候補からは外れた。

そんな中で以下のアプリは良かったのでメモ

kardolus/chatgpt-cli

このアプリのメリットは

  • Goで開発: 軽量で高速なGo言語で開発されているから、パフォーマンス抜群。
  • バイナリ配布: コンパイル済みのバイナリを利用できるため、環境セットアップが簡単。面倒な依存関係もなし。
  • パラメーター変更が簡単: 環境変数を使って設定値を手軽に変更できるので、その都度コンフィグをいじる必要がない。
  • 活発な開発: 現在も定期的にアップデートされているので、新機能や修正が期待できる。
  • リッチな機能: シンプルなコマンドで、多様なオプションを活用できるのが魅力。

インストール

brewでインストールできる

brew install kardolus/chatgpt-cli/chatgpt-cli

すると chatgpt コマンドが使用できるようになっているはず

❯ chatgpt --config
name: openai
api_key: ""
model: gpt-3.5-turbo
max_tokens: 4096
context_window: 8192
role: You are a helpful assistant.
temperature: 1
top_p: 1
frequency_penalty: 0
presence_penalty: 0
thread: default
omit_history: false
url: https://api.openai.com
completions_path: /v1/chat/completions
models_path: /v1/models
auth_header: Authorization
auth_token_prefix: 'Bearer '
command_prompt: '[%datetime] [Q%counter]'

APIキーの設定

APIキーを設定するためには、次のように環境変数をセットする。

export OPENAI_API_KEY=sk-dummy

これで使えるようになる。

❯ chatgpt ハローキティは何年生まれですか?
ハローキティは1974年11月1日に誕生しました。

モデルの変更

モデルを変更するには、次のコマンドを入力するだけ。

OPENAI_MODEL=gpt-4o-mini chatgpt ハローキティは何年生まれですか?

Max tokensの変更

最大トークン数を設定したいときは、これ。

OPENAI_MAX_TOKENS=512 chatgpt ハローキティは何年生まれですか?

temperatureの変更

OPENAI_TEMPERATURE=0.4 chatgpt ハローキティは何年生まれですか?

システムプロンプトの変更

アシスタントの役割を変更するには、次のように設定する。

OPENAI_ROLE='あなたは優秀なアシスタントです。' chatgpt ハローキティは何年生まれですか?

ローカルLLMを使う場合

ローカルで動かしているLLMを指定する場合のコマンドはこれ。

OPENAI_URL=http://192.168.16.100:8000 chatgpt ハローキティは何年生まれですか?

zshの補完設定

zshの補完機能を使いたいときは、次のコマンドを実行。

chatgpt --set-completions zsh > ~/.zprezto/modules/completion/external/src/_chatgpt

これで、補完がいちいち入力する手間を省いてくれる。