LoginSignup
11
4

More than 1 year has passed since last update.

RustでChatGPTとチャットできるCLIツールを作ってみている

Posted at

株式会社mofmofのkoba_hiro_です。
Rustの勉強も兼ねて、CLIでGPTとチャットできるツールを作っているので、途中経過を書いてみようかと思います!

経緯

mofmofでは自由参加の社内技術部活動のようなものがあり、現在はRust入門をテーマに活動しています。
入門したついでに何かつくってみたいなーということで、個人開発でCLIツールを作り始めました!

なぜGPTとチャットするツールなのかというと、
OpenAIのAPIを気軽に試せる方法が欲しいな〜curlは面倒だしな〜
APIkeyさえ用意すれば気軽にAPI試せるツールを・・・という感じです。

過程

とりあえずは、Rust公式が用意してくれているTHE BOOKというチュートリアルを読んでみました。
簡単なCLIプログラムを書いたり、webサーバを構築してみたり、かなり充実していて勉強になりました。

その後、THE BOOKの内容を参考にしながら実際に作り始め、わからない部分はGPT先生に相談し・・・
SystemRoleを設定した状態でチャットができるところまでは完成しました!

使ったもの

  • Rust
    • rustupを使ってインストールしました(Rustのインストーラ・管理ツール
  • Cargo
    • Rustのビルドツール兼パッケージマネージャー
    • rustup使うと自動的にインストールされる
  • clap
    • コマンドライン引数をパースするためのクレート
    • 引数を構造体で定義するとよしなにやってくれる
    • コマンドのヘルプ表示も自動で用意してくれたりする
  • Serde/serde_json
    • データをシリアライズ/デシリアライズしてくれるフレームワーク
    • 今回は構造体↔jsonの変換のために使った
  • async-openai
    • さくっとOpenAIのAPIを叩いてくれるライブラリ
    • 使用例も豊富で親切

できたもの

スクリーンショット 2023-06-28 12.40.05.png
(最近sf6にはまってます)

今後やりたいこと

とりあえず動く所まで作ってみたレベルなので、もっとしっかりしたツールにして公開したいです。
OpenAIには画像生成だったり、音声認識のAPIもあるっぽいのでそこらへん組み込んで何か面白いもの作れないかなーとも考えています。
あとは、Tauriを使ってReact✕Rustでデスクトップアプリ化してみるとかもやりたいですね!

感想

Rust触ってみるまではとっつきづらそうだし難しそうだなーと思っていました。
実際、所有権やライフタイムの概念、独特な記法等、戸惑うことも多いのですが、
コンパイラが優秀でエラーが起きた際に何が悪いのかわかりやすく、トライ&エラーしながら学ぶことができました。

まだまだ触り始めたばかりですが触っていて楽しい言語だと感じているので、
今後も使い続けてRustaceanを名乗れるようになりたいです。

このプロダクトは株式会社mofmofの「水曜日の個人開発」にサポートされています。

11
4
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
11
4