![見出し画像](https://assets.st-note.com/production/uploads/images/104850310/rectangle_large_type_2_af22d43821ca010834af1663c073745e.png?width=1200)
Discord用NounsNewsBotを作った話
まき(@makio_study)です。
最近はpNouns⚡️DAOの活動をがんばってます。
Discord内の雑談チャンネルで、Nounsの情報を流すチャンネルを作ると面白そう!という話題が上がっていたので、開発に挑戦してみました!
初めて扱うツールがあったりすると、実装まで漕ぎ着けるのか実際はドキドキです。手を挙げたもののギブアップになったら恥ずかしいとか色々と雑念は湧くのですが、作りまくらないと上達しないので今はなんでも作ってみるぞという気持ちです。
今回はGPTを使って、どうやってコードを出力しているのか解説します。
GPTを使ったコード出力のコツ
当たり前ですが、GPTに聞けばなんでも一発で使えるコードを出してくれるというわけではありません。
プロンプトに自分の作りたいものの仕様をうまく載せないと適当なコードが出てくるので、作るものの仕様をうまく言語化する必要があります。
仕様を決める
まずは仕様を決めていきますが、慣れないと仕様を言語化できないので、GPTに相談します。
![](https://assets.st-note.com/img/1683356931752-CbMN7C9xHJ.png?width=1200)
これだけの情報では素人には難しいので、具体的な説明を聞いてみます。注意点やPython意外に必要なものも教えてもらいます。
![](https://assets.st-note.com/img/1683357048846-Hx8kpNlIkO.png?width=1200)
![](https://assets.st-note.com/img/1683357937784-y1XRd1IfZZ.png?width=1200)
最初はニュースサイトからキュレーションする感じを想定していましたが、適当なニュースサイトがなかったので、メールで送られてくるニュースレターを要約してDiscordに送る仕様になりました。
また、BOTを常駐させて特定のキーワードを入力しないと応答してくれないのは面倒なので、ニュースレターを受け取ったら、勝手にDiscordに送る感じが良さそうです。
ということで、仕様を確定するまではコードを出力させてもしょうがないので、焦らず仕様を確定させていきましょう。
GPTにコードを出力してもらう
使用が決まったのでコードを出力してもらいます。
ここまでのやり取りをGPTは覚えているので、プロンプトはそこまで拘らなくても大丈夫そうです。わりと簡単なプロンプトでどんなものを作りたいかフローがわかるように伝えます。
![](https://assets.st-note.com/img/1683358109550-hN3f7hpdH8.png?width=1200)
微修正の繰り返し
あとは、実行、エラー、実行、エラーの繰り返し。
わたしの場合はプログラミングの勉強も兼ねているので、エラーの解説を聞きながら、対策を考えつつ修正を繰り返しています。
ただ、エラーと修正を繰り返していると、同じコードしか出さなくなってきます。そうゆうときは、違うAIに聞いてみるのが良さそうです。
GPT-4に手伝ってもらって(ほぼ全部)コードを書いているのだけど、時々修正の無限ループに陥る時があるのですね。
— maki ⌐◨-◨ (@makio_study) May 2, 2023
そうゆうときはBardに聞いてみると、一発で答えてくれたりするので、GPTとBardを行ったり来たりするのが良さそうです。
googleのBardやMicrosoftのBingなどにも意見を聞いてみると、GPTとは違ったアプローチでコードを書き直してくれたり、エラーを修正してくれたりします。
とはいえ、自分で考えることが大切
おおよそは上記のやり方で動くプログラムを作ることができます。
ただし、自分の理想とするプログラムができるかどうかは別です。
今回の場合は、メールのHTMLを読み取って、要約に渡すテキストを生成していますが、HTMLを分解してどこを読み取るべきかを考えるのは自分です。GPTは<div>を全部読み取るコードを出力してきましたが、それが妥当かを判断するのは自分です。
実際は<div>を全部取得すると膨大なテキストになり、次の工程のGPT-4の要約で、エラーが頻発してうまくいきませんでした。
なので、取得するタグを絞りテキスト数を削減することにしたのですが、それはGPTにいくら聞いても教えてくれないです。
GPTにおおよそのコードを出力してもらったあと、それが自分の理想とするプログラムになっているのか、なっていなければどうしたら理想に近づけることができるのか、最終的には結局自分の頭で考えなければいけないのです。
仕様とコードを公開するよ
今回作成した仕様とコードを公開してみます。
GPTに出力してもらったコードなので、玄人が見たら汚いコードだと思いますが、いまはこれくらいのレベル感なんだなーと思ってもらえれば良いかと思います。
とはいえ、恥ずかしいので課金バリア張っておきます。
GPTのAPI使用料に使わせていただきます🙏
仕様
ここから先は
noteでいただいたサポートは、開業資金として活用させていただきます。ありがとうございます。