![見出し画像](https://assets.st-note.com/production/uploads/images/101527204/rectangle_large_type_2_5751b478b489dda30e202857011aafbf.png?width=1200)
【ChatGPT】BNF記法でプロンプトを書くことについてChatGPTに聞いてみた
Twitterで気になったプロンプトを試してみました。
参考にさせていただいた方
は
Naoyoshi Aikawa @ Rimoさん と
KEITO💻AIディレクターさんです!
※noteを始めたばかりのため、問題や誤っている点、改善点等ありましたらご連絡いただけると助かります。
今回ChatGPT(最近はチャッピーと呼んでいます笑)で試した内容のtweetはこの2つです。
プロンプトの結果を安定させる方法でどうすればいいのか議論したらBNF記法で書くというアイデアが生まれてすごくうまくいきそうな予感がしている。
— Naoyoshi Aikawa @ Rimo (@awakia) March 28, 2023
世の中のプロンプトエンジニア/デザイナーの方はこれ使ってよりうまくいかないか実験して報告してくれると嬉しいです。… pic.twitter.com/QyFnRjU81K
まぁまぁ上手くいきました😄
— KEITO💻AIディレクター (@keitowebai) March 28, 2023
prompt:
<プロンプト>::=<概要文><キーワード一覧表><カメラマンの注意点の表><デザインの注意点の表><カメラマンの注意点とデザインの注意点を結合した表><カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す><概要文>::="### 概要"… https://t.co/6ylRYWS7ek
正直「BNF記法」という言葉を今日初めて知った。というようなレベルですが、試さずにはいられずやってみました!
概要
としては、
① BNF記法で書かれたプロンプト自体の内容について質問し、プロンプトの記載内容は変えずに、視覚的に認識しやすい形にしてもらう。
②ChatGPTにとって「BNF記法で書かれたプロンプト」と「視覚的に認識しやすいプロンプト(ChatGPTが生成したもの)」のどちらが”安定した結果”を出力しやすいか聞く。
③「視覚的に認識しやすいプロンプト(ChatGPTが生成したもの)」の方が安定した結果を出しやすいとのことで、このプロンプトを入力する。
といった感じです。
※以下は全てGPT-4を使用しています。
実際のやりとり
※フルページのスクリーンショットが撮れなかったため見辛いかもです🙇♂️
![](https://assets.st-note.com/img/1680010119127-R75C4vIRJw.jpg)
以下のプロンプトの書き方はなんと言いますか?
以下のプロンプトを記載内容は変えずに、視覚的に認識しやすい形にして下さい。
###prompt: <プロンプト>::=<概要文><キーワード一覧表><カメラマンの注意点の表><デザインの注意点の表><カメラマンの注意点とデザインの注意点を結合した表><カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す><概要文>::="### 概要" <改行><文><改行><キーワード一覧表>::="###" <空白>"春に関するキーワードの一覧表" <改行><キーワード>+<キーワード>::="-" <空白><文字列><改行><カメラマンの注意点の表>::="###" <空白>"春に関するカメラマンの注意点の表を作成する" <改行><カメラマンの注意点><デザインの注意点の表>::="###" <空白>"春に関するデザインの注意点の表を作成する" <改行><デザインの注意点><カメラマンの注意点とデザインの注意点を結合した表>::="###" <空白>"春に関するカメラマンの注意点とデザインの注意点を結合した表を作成する" <改行><結合した表><カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す>::="###" <空白>"カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す" <改行><表行>+<カメラマンの注意点>::="|" <空白>"キーワード" <空白>"|" <空白>"カメラマンの注意点" <空白>"|" <改行>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <改行><デザインの注意点>::="|" <空白>"キーワード" <空白>"|" <空白>"デザインの注意点" <空白>"|" <改行>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <改行><結合した表>::="|" <空白>"キーワード" <空白>"|" <空白>"カメラマンの注意点" <空白>"|" <空白>"デザインの注意点" <空白>"|" <改行>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <改行>成果物を書き出して下さい。
![](https://assets.st-note.com/img/1680010648827-OA0SJpEZJX.jpg)
このプロンプトは、主にBNF(バッカス・ナウア記法)という形式で記述されています。BNFは、文法規則を定義するためのメタ言語で、コンピュータ科学やプログラミング言語の文法定義によく使われます。
以下は、視覚的に認識しやすい形に改訂したプロンプトです。
shellCopy code### 概要
文
### 春に関するキーワードの一覧表
- キーワード1
- キーワード2
- キーワード3
### 春に関するカメラマンの注意点の表を作成する
| キーワード | カメラマンの注意点 |
|------------|------------------|
| 文字列1 | 文字列2 |
### 春に関するデザインの注意点の表を作成する
| キーワード | デザインの注意点 |
|------------|----------------|
| 文字列1 | 文字列2 |
### 春に関するカメラマンの注意点とデザインの注意点を結合した表を作成する
| キーワード | カメラマンの注意点 | デザインの注意点 |
|------------|------------------|----------------|
| 文字列1 | 文字列2 | 文字列3 |
### カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す
キーワード1,注意点1,注意点2
キーワード2,注意点3,注意点4
キーワード3,注意点5,注意点6
上記のように、見出し、表、箇条書きなどを使って情報を整理し、視覚的に認識しやすい形に改訂しました。
![](https://assets.st-note.com/img/1680010746850-4O5rVbd7nE.jpg)
ChatGPTにとって以下に示すプロンプトのどちらが”安定した結果”を出力しやすいですか? 1###
###prompt: <プロンプト>::=<概要文><キーワード一覧表><カメラマンの注意点の表><デザインの注意点の表><カメラマンの注意点とデザインの注意点を結合した表><カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す><概要文>::="### 概要" <改行><文><改行><キーワード一覧表>::="###" <空白>"春に関するキーワードの一覧表" <改行><キーワード>+<キーワード>::="-" <空白><文字列><改行><カメラマンの注意点の表>::="###" <空白>"春に関するカメラマンの注意点の表を作成する" <改行><カメラマンの注意点><デザインの注意点の表>::="###" <空白>"春に関するデザインの注意点の表を作成する" <改行><デザインの注意点><カメラマンの注意点とデザインの注意点を結合した表>::="###" <空白>"春に関するカメラマンの注意点とデザインの注意点を結合した表を作成する" <改行><結合した表><カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す>::="###" <空白>"カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す" <改行><表行>+<カメラマンの注意点>::="|" <空白>"キーワード" <空白>"|" <空白>"カメラマンの注意点" <空白>"|" <改行>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <改行><デザインの注意点>::="|" <空白>"キーワード" <空白>"|" <空白>"デザインの注意点" <空白>"|" <改行>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <改行><結合した表>::="|" <空白>"キーワード" <空白>"|" <空白>"カメラマンの注意点" <空白>"|" <空白>"デザインの注意点" <空白>"|" <改行>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <空白><文字列><空白>"|" <改行>成果物を書き出して下さい。
2###
### 概要
文
### 春に関するキーワードの一覧表
- キーワード1
- キーワード2
- キーワード3
### 春に関するカメラマンの注意点の表を作成する
| キーワード | カメラマンの注意点 |
|------------|------------------|
| 文字列1 | 文字列2 |
### 春に関するデザインの注意点の表を作成する
| キーワード | デザインの注意点 |
|------------|----------------|
| 文字列1 | 文字列2 |
### 春に関するカメラマンの注意点とデザインの注意点を結合した表を作成する
| キーワード | カメラマンの注意点 | デザインの注意点 |
|------------|------------------|----------------|
| 文字列1 | 文字列2 | 文字列3 |
### カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す
キーワード1,注意点1,注意点2
キーワード2,注意点3,注意点4
キーワード3,注意点5,注意点6
![](https://assets.st-note.com/img/1680010690499-h6fRZpl9H6.jpg)
ChatGPTにとって、安定した結果を出力しやすいプロンプトは2番目のものです。
1番目のプロンプトはBNF(バッカス・ナウア記法)で書かれており、これは文法規則を定義するためのメタ言語です。しかし、ChatGPTは自然言語処理を行うAIであり、BNFのような形式言語を解釈することは得意ではありません。
2番目のプロンプトは、見出し、表、箇条書きなどを用いて整理された形で記述されており、ChatGPTが理解しやすい形式です。このようなプロンプトは、ChatGPTが適切に解釈し、安定した結果を出力する可能性が高いです。
![](https://assets.st-note.com/img/1680010790153-oGBu816NCP.jpg)
「ChatGPTにとって、安定した結果を出力しやすいプロンプトは2番目のものです。 1番目のプロンプトはBNF(バッカス・ナウア記法)で書かれており、これは文法規則を定義するためのメタ言語です。しかし、ChatGPTは自然言語処理を行うAIであり、BNFのような形式言語を解釈することは得意ではありません。 2番目のプロンプトは、見出し、表、箇条書きなどを用いて整理された形で記述されており、ChatGPTが理解しやすい形式です。このようなプロンプトは、ChatGPTが適切に解釈し、安定した結果を出力する可能性が高いです。」との回答がありましたが、以下の条件を踏まえて回答を出力して下さい。
条件:
・プロンプトの処理を行いやすいかどうか、ChatGPTがどのように分析しているのかをStep by Stepで教えて下さい。
・その上で上にあげた2種類のプロンプトについて、それぞれの分析項目(採点項目)についての採点結果を表の形式にして出力して数値化して下さい。
![](https://assets.st-note.com/img/1680010704888-yWt52RH92s.jpg)
ChatGPTは、プロンプトの処理のしやすさを分析する際、いくつかの要素を考慮します。以下に、主要な要素をいくつか示します。
可読性
文法の正確さ
明確さ
構造の整理度
それぞれの要素に対して、2種類のプロンプトに対する採点を行います。採点は1(低)から5(高)の範囲で行います。
![](https://assets.st-note.com/img/1680011084567-b06gMxaBaZ.png?width=1200)
プロンプト1はBNF形式で記述されており、ChatGPTにとって可読性が低く、構造の整理度も低いと評価されています。また、文法の正確さと明確さの面でも、プロンプト2に比べて評価が低くなります。
プロンプト2は見出し、表、箇条書きなどを用いて整理された形で記述されており、全ての採点項目で高い評価を受けています。これにより、ChatGPTにとって安定した結果を出力しやすいプロンプトであると判断されます。
上記の分析に基づいて、プロンプト2の方がChatGPTにとって処理がしやすく、安定した結果を出力しやすいことが分かります。
######ここから
New Chat
######
![](https://assets.st-note.com/img/1680010790153-oGBu816NCP.jpg)
### 概要
文
### 春に関するキーワードの一覧表
- キーワード1
- キーワード2
- キーワード3
### 春に関するカメラマンの注意点の表を作成する
| キーワード | カメラマンの注意点 |
|------------|------------------|
| 文字列1 | 文字列2 |
### 春に関するデザインの注意点の表を作成する
| キーワード | デザインの注意点 |
|------------|----------------|
| 文字列1 | 文字列2 |
### 春に関するカメラマンの注意点とデザインの注意点を結合した表を作成する
| キーワード | カメラマンの注意点 | デザインの注意点 |
|------------|------------------|----------------|
| 文字列1 | 文字列2 | 文字列3 |
### カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す
キーワード1,注意点1,注意点2
キーワード2,注意点3,注意点4
キーワード3,注意点5,注意点6
![](https://assets.st-note.com/img/1680010704888-yWt52RH92s.jpg)
概要
春の季節を表現するために、カメラマンとデザイナーが注意するべきポイントをリストアップしています。
春に関するキーワードの一覧表
桜
新緑
花粉
春に関するカメラマンの注意点の表を作成する
![](https://assets.st-note.com/img/1680011409075-SEu4shiUOB.png?width=1200)
春に関するデザインの注意点の表を作成する
![](https://assets.st-note.com/img/1680011475937-FiBSsnP4ZF.png?width=1200)
春に関するカメラマンの注意点とデザインの注意点を結合した表を作成する
![](https://assets.st-note.com/img/1680011525841-0c1vY5X9r2.png?width=1200)
カメラマンの注意点とデザインの注意点を結合した表をカンマ区切りで書き出す
桜,光の具合を確認し、ピンク色が美しく映るようにする,ピンクと白のグラデーションを活用し、柔らかな印象を与える 新緑,若葉の鮮やかさを引き出すためにコントラストを調整する,明るい緑色を用いて、爽やかさと活力を表現する 花粉,空気中の花粉がカメラに影響を与えないよう、レンズを保護する,花粉をイメージさせる黄色を使う際は、他の色とのバランスに注意する
########以上###########
まとめ
「BNF記法を用いたプロンプト」と「視覚(人間?AI?)的に認識しやすいプロンプト」を比較すると、後者の方がchatGPTは認識しやすいという結果を得られました。
視覚的に認識しやすいプロンプトは、自然言語処理を行うAIにも理解しやすい形式であるという結果が得られたということから、”安定した結果”を求めるためには、人間が理解しやすいプロンプトを用いるということも大切なのかもしれません。