0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTをターミナルですくすくたたけるCLI

Posted at

ブラウザ開くのって大変ですよねー 

最近慣れていない言語を業務で書く機会があり、頻繁にOpenAIのChat GPTをブラウザで開き質問していました。ブラウザを開くの旅を取り除いて直接ターミナルで叩きたいと思いました。この数秒単位の節約をするべく、10時間ほどの開発をするのがプログラマという生き物なので、GoLLMと言うCLIが組み立てられました

ターミナルからchatGPTと会話

OpenAIはAPIを提供しており、そちらのAPIも用いてターミナルでかいができるはず。と言うことで少し調べらさまざまなSDKが存在しました。Golangもコミュニティのライブラリがありそちらを利用しております。

cliのセットアップ

Readmeに記載されていますが、homebrewでインストールできます。Go使いはgoでもできます

brew install chavdim/taps/gollm   

API keyの設定

利用するにはOpenAI様でAPIキー取得が必要になります。記載当時は決済情報を登録しないと提供してくれませんでした。個人でちょいちょい利用する分には数円ぐらいしかからずあまりダメージを感じていないです。
*gpt 3.5を利用しています、gpt4がともう少し高い気がします
個人的に怖いので利用上限を設けてます、お勧めします。

登録後、こちらでキーを取得できます https://platform.openai.com/account/api-keys
OPENAI_API_KEYの環境変数を期待してるので入れておきます

// 例
export OPENAI_API_KEY=xxxxxxx

その他の設定

下記で初回に設定が行われモデルとチャットGPTに装ってもらうペルソナをオプショナルで設定します。

❯ gollm
Use the arrow keys to navigate: ↓ ↑ → ←
? Select model:
  ▸ gpt-3.5-turbo
    gpt-4
? Select PersonaDescription:
  ▸ None
    SoftWareEngineer
    HealthCareAdvisor
    FinancialPlanner
↓   MarketingManager

どうしても毎回忘れることを質問する

❯ gollm
### interaction: 1
Enter prompt: cssでdivを画面の真ん中にするにはどうしたらいいんだっけ
div要素を画面の中央に表示するためには、CSSで以下のようなプロパティを使用します。

css
div {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}


このCSSは、`div`要素がページの中心に配置されるようにします。`position: absolute;`は、要素をページに固定します。`top: 50%;`と`left:50%;`は、要素をページの中央に位置するようにします。最後の`transform: translate(-50%, -50%);`は、要素を正確に中央に揃えるためのものです。

ただし、ウィンドウのサイズが変わると、要素が画面から外れる可能性があります。この問題を解決するには、親要素に`position: relative;`プロパティを設定することができます。

### interaction: 2
Enter prompt: flexboxみたいなやつできないんでしたっけ?
はい、Flexboxを使うことでも、要素を中央に配置することができます。以下は、Flexboxを使った方法です。

css
.container {
  display: flex;
  justify-content: center;
  align-items: center;
}

ちなみに、cliとGo言語はいいコンビ

これはただの偏見で視野が狭いだけかもしれないが、個人的にはGolangのエコシステムと CLIはすごく相性が良く簡単に高性能かつクロスプラットフォームの生産物が非常に作りやすかった
生産物のパブリッシュも非常に簡単でgoreleaserをGithub actionsで動かせば、プッシュするだけでマルチブラットフォームのディストリユーションが作成される世界線が簡単にできました。

最後に

みてくれてありがとうございます。普通に楽しいのでぜひ試してみてください、バグっていたら教えてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?