1. はじめに
皆さんこんにちは!Wallet Stationバッチチームの荒川です!
2023年に新卒入社してから半年ほど経過して、少しずつWallet Stationの開発に慣れてきました。
とはいえ、まだまだ精進が必要であり、先輩やChatGPTと対話しながら技術力の向上に努めています。
2. 課題
ChatGPTはご存知の通り非常に汎用的に利用可能であり、細かいプログラミング言語の文法やデザインパターンについて聞いてもコード例付きで丁寧に返してくれます。
しかしながら、ChatGPTが返してくれるコード例のドメインは時々自分にとって馴染みが薄く、それが故にコードの理解が進まないということもあると思います。
例えば、以下のようにファクトリパターンについて尋ねた場合では「動物のプロダクトに関するドメインのpythonのコード」がレスポンスとして返されており、私はpythonの文法にも動物に関するプロダクトにも詳しくないのでファクトリパターンそのものの理解が妨げられてしまいます。
また、上記の課題を解決策として「プロンプトでコード例のドメインを指定すれば良いのでは?」と思うかもしれませんが、毎回ドメインを指定する文言をプロンプトに書くのはなかなか面倒で骨が折れる作業です。
本記事では上記の課題をChatGPTの事前設定によって解決することで、皆さんのChatGPTをちょっぴり自分好みに最適化する方法をお伝えしたいと思います。
3. アプローチ
今回は、上記の課題へのアプローチとしてCustom instructionsという事前設定でユーザの属性やレスポンスの内容を指定することで、ChatGPTのレスポンスを自分好みに最適化したいと思います。
3.1. Custom instructionsを開く
まずはChatGPTのトーク画面の左下のユーザ名のポッチからCustom instructionsをクリックします
3.2. Custom instructionsの設定画面から保存したいコンテキストを入力する
次にCustom instructionsの設定画面が開けたら、上側の入力欄に自分のユーザ属性、下側の入力欄にGPTのレスポンスの内容について入力します。
今回は私のケースでは上側に、自分がソフトウェアエンジニアでありJavaを使った決済プロダクトの開発をしていることを入力し、下側にレスポンスには決済ドメインのJavaのコード例を含めるように設定しました。
3.3. 設定の保存
ここまでできたらSaveを押して設定を保存しましょう。
3.4. ChatGPTに再度プロンプトを入力する
さて、設定が済んだので先ほどのプロンプトを簡略化した「ファクトリパターンについて説明してください」というプロンプトを投げてみたいと思います。
期待通り、プロンプトに言語やドメインを指定しなくても、レスポンス内でJavaで決済ドメインのコード例を示してくれていますね!
Javaで決済に関するプロダクトを開発している私にとっては大分理解がしやすいコード例になりました!
以下にレスポンスのコード全行を示しておきます。
// 決済方法のインターフェイス interface PaymentMethod { void processPayment(double amount); } // クレジットカード決済のクラス class CreditCardPayment implements PaymentMethod { @Override public void processPayment(double amount) { System.out.println("クレジットカードで" + amount + "円の決済を行います。"); } } // QRコード決済のクラス class QRCodePayment implements PaymentMethod { @Override public void processPayment(double amount) { System.out.println("QRコードで" + amount + "円の決済を行います。"); } } // 決済方法のファクトリクラス class PaymentFactory { public static PaymentMethod getPaymentMethod(String type) { if ("creditcard".equalsIgnoreCase(type)) { return new CreditCardPayment(); } else if ("qrcode".equalsIgnoreCase(type)) { return new QRCodePayment(); } throw new IllegalArgumentException("無効な決済方法です。"); } } // クライアントコード public class Main { public static void main(String[] args) { PaymentMethod paymentMethod = PaymentFactory.getPaymentMethod("creditcard"); paymentMethod.processPayment(1000); } }
4. おわりに
今回はChatGPTのCustom instructionsという機能を使ってレスポンスのコード例を自分にとって馴染みあるドメインと言語に変える方法について説明しました。
この機能を使うことで、DDDやデザインパターンなど昔から存在する概念をChatGPTに聞く際でも、古くて取っ付きづらいドメインではなく自分に親しみ深いドメインでコード例を示してくれるようになります。
また自分がよく使う言語のバージョンまで指定しておくことで、レスポンスのコードがバージョン違いで動かないということも防げると思います。
二番煎じ感が否めないですが、結構便利ですので是非設定してみてください。
最後に、本記事を書くきっかけとなった「プログラミングに挫折したならAIお姉ちゃんに任せなさい」という記事もとても面白いCustom instructionsの使い方をしているので是非参考にしてみてください。
以上
参考文献
- 「プログラミングに挫折したならAIお姉ちゃんに任せなさい」, https://honeshabri.hatenablog.com/entry/One-chanGPT
- Open AI, Custom instructions for ChatGPT, https://openai.com/blog/custom-instructions-for-chatgpt