ターミナルから ChatGPT に質問できる Go 製 CLI 「askai」の紹介
だいぶ今更感もありますが、ターミナルからパッと AI に質問投げられたらいいなぁと思ったので作りました。
こういうの
こういうことや
こういうこともできる
類似のツールも色々ありますが作りたかったので作りました。
この記事では askai のインストール方法から基本的な使い方、仕組みについて簡単にまとめます。
インストール
Homebrew を使用している場合は次のコマンドでインストールすることができます。
$ brew install koki-develop/tap/askai
go install
を使用してインストールすることも可能です。
$ go install github.com/koki-develop/askai@latest
準備
1. OpenAI API の API Key を発行する
askai では内部的に OpenAI API を使用しています。
OpenAI API にリクエストするために必要な API Key を発行します。
まず「API keys」にアクセスします。
Create new secret key
をクリックします。
Name
に任意の名前を入力し、 Create secret key
をクリックします。
API Key が発行されるので、ひかえておきます。
2. askai の設定を行う
askai --configure
を実行すると対話的なセットアップが始まります。
$ askai --configure
入力する項目は次の通りです。
- OpenAI API Key: 「1. OpenAI API Key を発行する」手順で発行した API Key 。
- Model: 使用するモデル名。
- 有効な値:
gpt-4
,gpt-4-0613
,gpt-4-32k
,gpt-4-32k-0613
,gpt-3.5-turbo
,gpt-3.5-turbo-0613
,gpt-3.5-turbo-16k
,gpt-3.5-turbo-16k-0613
- 有効な値:
設定が完了するとカレントディレクトリに .askai
という名前で設定ファイルが作成されます。
# 例
api_key: <API Key>
model: gpt-4
これで準備は完了です。
使い方
単発の質問をする
askai
の引数に質問内容を渡して実行するだけです。
次のコマンドは、 Hello world と出力する Go プログラムを書いてもらう例です。
$ askai 'Please write a program in Go that outputs "Hello world”.'
対話形式で質問をする
-i
もしくは --interactive
フラグを指定することで対話形式で質問をすることもできます。
もちろん複数行にも対応しており、 Ctrl
+ d
でメッセージを送信します。
$ askai -i
質問内容を標準入力から渡す
質問内容は標準入力から渡すこともできます。
# 標準入力から渡す
$ echo '質問' | askai
# ファイルの場合
$ askai < question.txt
標準入力からの入力と引数は同時に渡すこともできます。
これを活用すると、例えば次のように特定のファイルの内容を要約させたりもできます。
$ cat README.md | askai 'この内容を日本語で要約してください。'
仕組み
go-openai を利用して Chat Completions API にリクエストを送信しています。
対話モードのテキスト入力の描画には Bubble Tea を使用しています。
CLI フレームワークには Cobra 、リリースには GoReleaser を使用しています。
これらについては簡単に説明した記事があるのでこちらをご参照ください。
まとめ
我ながら良きです。
Discussion