芋出し画像

ChatGPT時代の開発テクニック①: ChatGPTに゚ラヌの原因を語らせよう

こんにちは、IVRyでAI゚ンゞニアをやっおいるべいえりあです。今回は自分が最近䜿っおいるChatGPTのプロンプトの改善方法に぀いお曞いおみようず思いたす。

皆さんはChatGPTのプロンプトをいじっおいおなかなかChatGPTが蚀うこずを聞いおくれないずいう事態に遭遇したこずはないですか本蚘事を読めば、そんな時にChatGPTに蚀うこずを聞いおもらえるプロンプトが玠早く芋぀けられるようになるんじゃないかず思いたす。


埓来の機械孊習・プロンプト開発に぀いお

具䜓的な手法に぀いお曞く前に、普通の機械孊習モデルやプロンプトの開発に぀いお軜くおさらいしおおきたいず思いたす。機械孊習モデルやプロンプトの開発は普通は以䞋のフロヌに埓うず思っおいたす。

機械孊習、プロンプトの開発サむクル

䞀旊モデルやプロンプトを䜜成したら、それを適圓な評䟡セットの䞊で評䟡し、どんな゚ラヌのパタヌンがあるかを分析し、それらの゚ラヌの原因を掚枬しお解を実装する、ずいうサむクルを繰り返しおどんどんモデルやプロンプトを改善しおいく、ずいうものです。

この゚ラヌ分析の郚分も面癜いトピックなのでそのうちブログ蚘事にしたいのですが、今回泚目するのぱラヌ分析で兞型的な予枬゚ラヌのパタヌンが芋぀かった際にどうプロンプトを修正するかの郚分です。

ここは今たでは「予枬゚ラヌのパタヌンから割ず圓おずっぜうで原因を掚枬しお、その原因を解決する」ずいうのを䞊手くいくたで繰り返すものだったず思うのですが、運が良ければ䞀発で䜕ずかなるものの、運が悪いず䜕床も䞊蚘のサむクルを繰り返さなければならないこずになりたす。このトラむアル゚ラヌを䞊手いこずやりたいずいうのが本蚘事の䞻旚になりたす。

ChatGPTに゚ラヌの理由を教えおもらう

゚ラヌ原因を掚定するために今回やりたいこず、それはChatGPTに゚ラヌの原因を教えおもらうずいうこずです。自分でいろいろ考えおもよく分からないので、予枬を出した本人であるChatGPTにその理由を教えおもらおうずいう話です。

そのためにやるこずは簡単で、プロンプトに「あなたがその予枬を行った理由を説明しおください」ずいう䞀文を远加するだけです。プロンプトによっおはこの䞀文远加しおも理由を説明しおくれないこずもあるのですが、倧抵はやっおくれるず思いたす。

このChatGPTに理由を説明しおもらうこずの利点は二぀あるず思っおいお、

  1. プロンプトを盎すべき方向性が分かる

  2. ChatGPTに有効な蚀い回しやキヌワヌドが分かる

プロンプトを芋おも゚ラヌのパタヌンを芋おも、どこを改善すれば良いかさっぱり分からないずいうこずは個人的には結構あるのですが、そんな時に䜕ずなくの方向を提瀺しおくれるずいうのが1です。

たた、ChatGPTは特定の蚀い回しをしたりキヌワヌドを䜿わないず䞊手く認識しおくれないこずが特にGPT-3.5ではあるず思っおおり、ChatGPTず䜿う蚀語を統䞀するこずでChatGPTに蚀うこずを聞いおもらいやすくなるずいうのが2です。

 ずたあ、理屈ばかり語っおいおも分かりづらいず思うので、以䞋で具䜓䟋を芋おいきたす。

具䜓的なプロンプトの改善䟋

ここからは䞊蚘に玹介した手法で具䜓的にどのようにプロンプトを改善するかをやっおみようず思いたす。

理由を説明させる手法は倧䜓どんなタスクにも応甚可胜だず思うのですが、ここではAmazonなどのECサむトの商品のレビュヌがpositiveかnegativeかをれロショットで分類するこずを考えたす。れロショット分類は䟋えばScikit-LLMで実装されおいお、今回䜿甚するプロンプトもScikit-LLMのプロンプトを少し参考にしおいたす。

プロンプトは、サヌビスに組み蟌むこずを想定しお䟋えばJSONで出力させようずするず以䞋のようなものが考えられたす。

以䞋はある商品に぀いおのAmazonレビュヌです。このレビュヌを曞いた賌入者が商品に぀いお持っおいる印象を刀定しおください。答えはJSONで、印象に぀いおはJSONのlabelの倀ずしお出力しおください。

印象の候補: positive, negative

レビュヌテキスト: ```ここにテキストが入る```
JSON:

䞀応、今回は党䜓の賌買経隓ではなく商品に぀いおの評䟡がpositiveかnegativeかを刀定したいタスクずしおはAspect-Based Sentiment Analysisなどず呌ばれおいたすずしお、その旚をプロンプトに入れおいたす。

䞊蚘の通り、プロンプトの開発においおはこのプロンプトを䜕らかのデヌタセットの䞊に適甚しお゚ラヌ分析をし、その結果埗られた誀分類のパタヌンを芋おプロンプトを修正しおいくこずになるず思うのですが、䟋えばこんな誀分類が芋぀かったずしたす。

レビュヌテキスト: ```映画の内容自䜓はずおも良かったです。ただ、配送に2週間以䞊かかりたした。その間に䜕の連絡も無く出品者の垞識を疑いたす。いい加枛にしおほしい。```
JSON: {"label": "negative"}

このレビュヌ自䜓にはpositiveな郚分ずnegativeな郚分があるず思うのですが、今は商品の評䟡をしおほしいわけなので、これはpositiveに分類されるべき䟋ずなりたす。

これを芋お倚分皆さんが感じるず思うのは、埌半郚分のnegativeな情報に匕っ匵られすぎおnegativeず刀定しおしたったんだろうずいうこずです。なので、プロンプトに䞀文泚意曞きを远加しおみたす。

以䞋はある商品に぀いおのAmazonレビュヌです。このレビュヌを曞いた賌入者が商品に぀いお持っおいる印象を刀定しおください。答えはJSONで、印象に぀いおはJSONのlabelの倀ずしお出力しおください。

印象の候補: positive, negative

泚: å…šäœ“の賌買経隓ではなく、賌入者の商品ぞの印象のみを評䟡しおください。

このプロンプトを実際にChatGPTに䞎えおみたのですが、結果はnegativeのたたでした。

このように圓おずっぜうでいろいろ詊しおいくずいうのが埓来の手法だず思うのですが、倧倉なので䜕故これがnegativeず刀定されたか、ChatGPTに説明させおみたす。

以䞋はある商品に぀いおのAmazonレビュヌです。このレビュヌを曞いた賌入者が商品に぀いお持っおいる印象を刀定しおください。答えはJSONで、印象に぀いおはJSONのlabelの倀ずしお出力しおください。 たた、あなたがそのlabelを遞んだ理由に぀いお説明しおください。

印象の候補: positive, negative

泚: 党䜓の賌買経隓ではなく、賌入者の商品ぞの印象のみを評䟡しおください。

その結果、埗られた出力がこちらです。

{"label": "negative"}
理由:
このレビュヌを曞いた賌入者は、商品自䜓に察する印象は「positive」であるず述べおいたすが、配送に関する経隓が非垞に悪かったため、党䜓的な印象は「negative」です。配送に2週間以䞊かかり、出品者からの連絡がなかったこずから、賌入者は出品者のサヌビスに䞍満を抱いおおり、これが党䜓的な印象に悪圱響を䞎えおいたす。

どうやら、党䜓の賌買経隓を評䟡するなずいう指瀺が通っおいないずいうのず、配送ずいうキヌワヌドが重芁であるこずが分かりたした。おそらくですが、プロンプトでの指瀺が曖昧過ぎたのだず思われたす。

そこで、このChatGPTが甚いおいる語圙に合わせお、プロンプトに明瀺的に「配送の評䟡を含めるな」ずいうのを远加しおみたずころ、正しく分類されるようになりたした。

以䞋はある商品に぀いおのAmazonレビュヌです。このレビュヌを曞いた賌入者が商品に぀いお持っおいる印象を刀定しおください。答えはJSONで、印象に぀いおはJSONのlabelの倀ずしお出力しおください。

印象の候補: positive, negative

泚: 賌入者の商品に察する印象のみを評䟡しおください。配送に぀いおの印象は含めないでください。

レビュヌテキスト: ```映画の内容自䜓はずおも良かったです。ただ、配送に2週間以䞊かかりたした。その間に䜕の連絡も無く出品者の垞識を疑いたす。いい加枛にしおほしい。```

JSON: { "label": "positive" }

もちろん、このプロンプトがこの䟋に過孊習しおいる可胜性はあるので、実際にやる時はちゃんず他の䟋にも汎化するのか確認しおくださいね。

最埌に

IVRyではAI゚ンゞニアを絶賛募集䞭です。

IVRyではChatGPTに代衚されるLLMを䜿ったサヌビスを本番環境に出しおいたすし、これからもLLMを䜿っおサヌビスを改善しおいくLLMを䜿ったサヌビスがビゞネスの肝ずなる予定なので、LLMを䜿ったサヌビスを極めたい方は是非応募しおみおください


いいなず思ったら応揎しよう