やりたいこと
コマンドラインで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クライアントはある。ただどれも候補からは外れた。
- TheR1D/shell_gpt
- Pythonパッケージなので環境用意がダルい
- 0xacx/chatGPT-shell-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
これで、補完がいちいち入力する手間を省いてくれる。