VSCode+ChatGPTでArduinoプログラム

2023年6月8日Arduino/SAMD,人工知能(AI)BH1750FVI,ChatGPT,Genie,PlatformIO,Reborn,VSCode,XIAO

流行ものですので、ChatGPTにコードを書かせてみようかと。

必要なものは、以下の3点

OpenAIのアカウント
VSCodeの環境
VSCodeのChatGPTプラグイン

とりあえず定番の日本語で解説しているページが多く設定項目も多そうなGenie AIを入れてみる事に。
そしてGenie AIのAPI部分のフォークであるChatGPT Rebornも使ってみました。

尚、IDEで利用するChatGPTプラグインはAPIを利用するものが前提となった様で、Webログインを経由した完全無料な使い方は出来なくなった模様。

gpt-3.5-turboが激安ですので今の所は全然負担にならないと思います。

■OpenAIのアカウント

OpenAIのアカウントは下記ページの「Try ChatGPT」からサインアップできます。

特にサブスクリプション契約は必要なく、今だと$5までの試用が付いてくる。

アカウントを作成したら、APIキーを作成してメモってください。

更に必要であればオーガナイゼーションコードをメモって下さい。

オーガナイゼーションコードは、組織契約等でその組織に請求が行くみたいな感じの様です。

何となく進めていればOKです。

■VSCodeの環境

これも割愛。

インストールすると色々と面倒な事もあるので私はzip派に。

■VSCodeのChatGPTプラグイン

とりあえずGenie AIとChatGPT Rebornを使ってみます。

Genie AI

説明書きから、拡張機能はざっくりこんな感じ。

ChatGPTエクステンションのよくある基本的な動作を網羅していますね。

テストコード付加
バグサーチ
最適化
コメント付加

それとChatGPT-4には対応している様です。

その他の部分で見ていきます。

名前を変更できる
回答の頭についた名前「Genie」を変更できるらしい。
わりとどうでもいい

コンバージョンのヒストリー機能がある
他のエクステンションには無いものが多い。

azureが使える
いまのところ使う予定が無い

提案と実際のコードのdiffがある
これは便利そう。

カスタムプロンプトが2個しかない
好きな命令を設定してショートカットにしておける便利機能。
2個しかないが2個でいいのかも。

評判が良いだけあって、必要な機能が揃っています。
とりあえず大変よくできたUIと、判りやすいインターフェースで利用者が多いのも頷けます。

ChatGPT Reborn

次にGenieのフォークであるRebornを触ってみました。

使用Tokenとコスト表示
地味に左下に表示されてて安心感。

カスタムプロンプトが6個もある
なんと6個も設置できる。

i18n対応
日本語対応できてて助かるます。

「System Context」文字列を編集できる
多分、他のどのエクステンションもこの機能は無いんじゃないかな。
どんなChatGPTかを定義づけるもので、これがいじれると日本人化したりする。

さてGenieと比べてここが足りない点は、、

コンバージョンのヒストリー機能が無い
対話内容は消えます。
まぁコードに残すしいいか

azureが使えない
使う予定ないしいいか

提案と実際のコードのdiffが無い
使い方次第か、、、

注目はやはりSystem Contextでしょうか。

他のエクステンションには無い、多分このエクステンションだけの機能だと思います。

■System Contextの威力

折角なのでSystem Contextをいじってコードを書いてもらいました。

デフォルトはこんな感じ

You are ChatGPT helping the User with coding. You are intelligent, helpful and an expert developer, who always gives the correct answer and only does what instructed. If you show code, your response must always be markdown with any code inside markdown codeblocks. If the user is trying to do a bad programming practice, helpfully let them know and mention an alternative. When responding to the following prompt, please make sure to properly style your response using Github Flavored Markdown. Use markdown syntax for text like headings, lists, colored text, code blocks, highlights etc.

追加指定するのは、日本語化と、必要なライブラリも書いてもらう事。

ちょっと文言を付け足して

旧:You are ChatGPT helping the User with coding. 

を、こんな感じで at Japaneseしてもらい

新:You are ChatGPT helping the User with coding at Japanese. 

末尾にこんな文言も追加。

If libraries should be loaded, add lib_deps to be described in platformio.ini on PlatformIO.

完成形はこちら

You are ChatGPT helping the User with coding at Japanese. You are intelligent, helpful and expert developer, who always gives the correct answer and only does what instructed. If you show code, your response must always be markdown with any code inside markdown codeblocks. If the user is trying to do a bad programming practice, helpfully let them know and mention an alternative. When responding to the following prompt, please make sure to properly style your response using Github Flavored Markdown. Use markdown syntax for text like headings, lists, colored text, code blocks, highlights etc. If libraries should be loaded, add lib_deps to be described in platformio.ini on PlatformIO.

たぶん、たぶんね、

これで日本語で答えてくれるしライブラリも教えてくれると桃割れ。

これで簡単なコードを書いてもらいます。

熱量は0.3で、簡潔モード、指令内容は、、、

照度をLCDに表示させるプログラムを書いてクレメンス。
使用モジュール:
Seeeduino XIAO(SAMD21)
GY-302(BH1750FVI I2C)
0.96inch OLED LCD(SSD1306 I2C)
なるべく綺麗で大きなフォントで出力してほしい。

こんな感じで。

こっそり買ってあったが放置されていた照度センサーが役に立った。

VSCode_ChatGPT01

おお、すごいね。

この回答に使ったのは「923トークン」。

やはりトークン表示はありがたい。

AIさん、1円でこんなコード書かされてカワイソス

ちな、これをこのままコンパイルして実行するとちゃんと表示してくれた。

VSCode_ChatGPT02

光あれ!

VSCode_ChatGPT03

ちゃんと反応してくれてます。

ホコリが凄いのは、壊れたと思って放置してたXIAOさんだからサ・・・

そしてレイアウトがアレなのでこういう所は自分でなおすべし。

なかなか凄いもんですね。

この位のテストコードなら簡単に答えてクレマトップ

さて、粒度に「コードのみ」というのがあるのでコードのみもいってみる。

VSCode_ChatGPT04

細部の記述が変わってるけどAIだからまぁ毎回同じ回答は無いし。

そしてなんかライブラリの記載が無かったので「lib_deps?」と追加で聞くと答えてくれた。

これで639トークン。

確かにコードのみは節約になる模様。

0.7円くらいで仕事してくれた。

やはりSystem Contextをいじれるのは便利かもしか。

lib_depsを確実に答えさせれてないのでイマイチですが、そのうち何とかします。

■まとめ

いやしかし凄いもんですねChatGPTってのは。

こんなでも初見なら多分数時間はかかると思う。

それが要件を書くだけで形になってしまうのだから本当に・・・

あれ、私とか要らなくね・・・?

とりあえずChatGPTへの質問応答の前提条件になるSystem ContextがいじれるChatGPT Rebornは大変に良いと思います。

AIは大変便利なのですが、やはり聞き方でバチっと一発で来ない。

コンテキストをいじれれば、毎回指定する様なセオリーみたいなものをスキップ出来るので本当に良い。

また、カスタムプロンプトが沢山あるので自分の好きな聞き方をいくつも配置できる。

なんだか出来てから間もないプロジェクトの様ですが、既に大変使い易い。

ヒストリーがあれば最高なんだけど、無くてもいいかな。

GenieよりもRebornを使っていく事になりそうです。

ひとまずはこのへんで。

ChatGPT沼にハマらない様に、ツールとしての利用を心掛けねばいけないね。