「あれ? 期待していた答えと違うなぁ・・・」
生成AIを使っていて、期待していた答えが返ってこない、というのは、よくある。
その原因は、チャットの書き方が正しくないから。
生成AIから期待通りの答えを得るには、上手な依頼の仕方というのがある。つまり、チャットの書き方にはコツがあるのだ。
プロンプトを書こう
プロンプトとは?
生成AIから期待通りの答えを得ようと思ったら、プロンプトを正しく書くことだ。
プロンプトとは、
生成AIから、期待通りの答えを得るために書く命令文
のことである。
生成AIに向かって、プロンプトを正しく書く技術のことを「プロンプトエンジニアリング」と呼ぶ。
「〇〇について教えて」
こんな簡単な依頼なら、そのまま生成AIに依頼すればよい。
しかし、依頼内容が複雑になってくると、平文だけのプロンプトでは、生成AIに正しく伝わらない。
例として、次のような「セキツイ動物の分類表」の作成を依頼するプロンプトを考えてみよう。
魚類 | 両生類 | ハチュウ類 | 鳥類 | ホニュウ類 | |
---|---|---|---|---|---|
生活場所 | 水中 | 幼生:水中 成体:水中と陸上 | おもに陸上 | おもに陸上 | おもに陸上 |
呼吸 | えら呼吸 | 幼生:えら呼吸 成体:肺呼吸と皮膚呼吸 | 肺呼吸 | 肺呼吸 | 肺呼吸 |
うまれ方 | 卵生(卵に殻がない) | 卵生(卵に殻がない) | 卵生(卵に殻がある) | 胎生 | 胎生 |
体温 | 変温 | 変温 | 変温 | 恒温 | 恒温 |
例 | サケ、コイ、フナ、サメ | カエル、イモリ | カメ、ヘビ、ワニ、ヤモリ | スズメ、ハト、ペンギン | ヒト、クジラ、イヌ、イルカ、コウモリ |
ダメなプロンプト
上の表を作成する、ダメなプロンプトは次だ。
セキツイ動物の特徴を比較する表を作成してください。 表は次の要素を含むべきです:魚類 両生類 ハチュウ類 鳥類 ホニュウ類。 列と行にそれぞれを配置して、生活場所、呼吸、うまれ方、体温、例を含めてください。 詳細要件:生活場所、それぞれのセキツイ動物の主な生息環境を示します。 呼吸、各動物の呼吸方法を説明し、特に強調すべき用語(例:えら呼吸、肺呼吸)は赤色で太字にします。 うまれ方、動物の産まれ方を簡潔に説明します。 体温、変温動物または恒温動物としての分類を示します。 例、各セキツイ動物の代表的な例を挙げてください。 デザインはプロフェッショナルで、表の区切りを明確にし、視覚的にわかりやすくしてください。
「読みにくい」「なにを書いているのかよく分からない」と思ったのではないだろうか?
生成AIは賢いので、こんなダラダラした文章でも、ちゃんと表を作成してくれる。
しかし、文章の区切りが見分け難いし、よほど文章読解力の高い人でない限り、書いている内容自体もよくわからないはずだ。そもそも、こんなややこしいプロンプトは書けないと思う。一箇所でも書き間違えた日には、文章が破綻して表を作るどころではないだろう。
このように、人間にとって難解な文章は、生成AIにとっても難解なのだ。難解な長文で伝わらないのは、人間もAIも同じである。
良いプロンプト
逆に、良いプロンプトは次の通り。
# 依頼 セキツイ動物の特徴を比較する表を作成してください。表は次の要素を含むべきです。 - "列": 魚類、両生類、ハチュウ類、鳥類、ホニュウ類 - "行": 生活場所、呼吸、うまれ方、体温、例 表の要件は{#詳細要件}に従ってください。 デザインはプロフェッショナルで、表の区切りを明確にし、視覚的にわかりやすくしてください。 # 詳細要件 1. "生活場所":それぞれのセキツイ動物の主な生息環境。 2. "呼吸":各動物の呼吸方法を説明し、特に強調すべき用語(例:えら呼吸、肺呼吸)を赤色で太字に。 3. "うまれ方":動物の産まれ方を簡潔に説明。 4. "体温":変温動物または恒温動物としての分類。 5. "例":各セキツイ動物の代表的な例を挙げる。
「ダメなプロンプト」と比べて、圧倒的に見やすいはずだ。プロンプトの内容自体は、「ダメなプロンプト」と同じである。
これなら、どのあたりに何を書いているのか見分けるのは簡単だし、メンテナンスもやりやすいはずだ。
見やすいプロンプトは、人間にとっても、AIにとっても理解しやすい。理解しやすいということは、生成AIが期待する答えを返す確率が高くなるということだ。
人間と同じで、ダラダラした長文は、生成AIも理解できない!
見やすくしよう!
プロンプトに必要な書き方は3つだけ
マークダウン記法を用いた、プロンプトの書き方を解説していく。
以下のプロンプトの記述方法は、ChatGPT や Google Gemini などの生成AIで使用可能である。
マークダウン記法
プロンプトを構造的に書くための記法が、マークダウン(Markdown)記法である。
ウェブ上で文章を書くための、軽量マークアップ言語のこと。
マークダウン記法は、HTMLよりも簡単で、文章を構造化して見た目を整えることができるため、ブログや掲示板などで広く使われている。
マークダウン記法のうち、生成AI用のプロンプトでは、次の3つだけを覚えておけばよい。
- 見出し
- リスト
- 強調
それぞれ具体的に見ていこう。
1. 見出し
プロンプトに見出しを付けることで、各ブロックの区切りを明確にする。区切りが明確になれば、見た目にも解りやすくなる。人間にとって見やすく解りやすい書き方は、生成AIにとっても解りやすいということだ。
プロンプトでは、「#」を先頭に付けると、その行は見出し行となる。
「#」大見出し
「##」中見出し
「###」小見出し
と、「#」の数を増やすことで、見出しの階層を深くできる。
「#」記号とテキストの間は、半角スペースを1文字入れる(生成AIのプロンプトにおいては、半角スペースがなくても解読してくれる)。
上の「良いプロンプト」の例では、「#依頼」「#詳細要件」を見出しとしている。
2. リスト
箇条書きのことである。
複数の条件や注文を書きたい場合、箇条書き、すなわち「リスト」にすることで、一つのブロック内で、複数の条件や指示を列挙する。
このブログで紹介しているプロンプトでは、「-」(ハイフン)を、箇条書きの行頭文字として使用している。
行頭文字には、数字を使ってもよい。
上の「良いプロンプト」の例では、以下の部分がリストとして記述されている。
– “列”: 魚類、両生類、ハチュウ類、鳥類、ホニュウ類
– “行”: 生活場所、呼吸、うまれ方、体温、例#」大見出し
- “生活場所”:それぞれのセキツイ動物の主な生息環境。
- “呼吸”:各動物の呼吸方法を説明し、特に強調すべき用語(例:えら呼吸、肺呼吸)を赤色で太字に。
- “うまれ方”:動物の産まれ方を簡潔に説明。
- “体温”:変温動物または恒温動物としての分類。
- “例”:各セキツイ動物の代表的な例を挙げる。
3. 強調
人間でもそうだが、大事な箇所を「強調表示」することで、生成AIに重要なポイントであることを伝える。
プロンプトでは、「*」(アスタリスク)、「 “」(ダブルクォーテーション)を使用し、強調したい文を囲むことで強調する。
上の「良いプロンプト」の例では、表の「列」と「行」を強調するため、ダブルクォーテーションで囲っている。
– “列”: 魚類、両生類、ハチュウ類、鳥類、ホニュウ類
– “行”: 生活場所、呼吸、うまれ方、体温、例#」大見出し
プロンプトの鉄板テンプレート
筆者が試行錯誤した結果、たどり着いた生成AI向けプロンプトの、鉄板テンプレートを紹介しよう。
プロンプトは、依頼内容の固まりを、見出しを付けて構造化する。
構造化とは、関係のある依頼内容を一纏めのブロックにすることである。
テンプレートは、次のように「依頼」「役割」「形式」「ルール」の4ブロックを設けている。生成AIに対するほとんどの依頼は、この4ブロックに分けて書けば、十分、且つ効果的であることがわかった。
# 依頼
# 役割
# 形式
# ルール
プロンプトの構造化とは、依頼内容をブロック別に書くこと。
各ブロックに書く内容は、次の通りだ。
#依頼
生成AIに対し、これから何を依頼するのか、依頼の概要を最初に伝える。
人間相手でいえば、
「君に〇〇を頼みたい。詳しい依頼内容は、これから説明する」
といった具合だ。
最初から細かいことを伝えるよりも、全体像を示した方が、その後の指示が伝わりやすい。
各論の前に「概論」から伝えて、相手の脳に理解するための「地図」を作る行為を、「マインドマップを作る」と言ったりする。
生成AIにも、最初にマインドマップを作ってあげよう。
#役割
生成AIの役割、すなわち、どの分野の専門家なのか、どのような立場なのか を指定する。
生成AIは色々な分野の専門家であるが、役割を明確にすることで、専門性を発揮しやすくする。
役割とは、たとえば
「経営コンサルタント」
「ウェブデザイナー」
「〇〇のプログラマー」
など。
すると、生成AIが「その道のプロ」のように思考し、発言するようになる。
生成AIに専門家の「フリ」をさせる、役割の指定は超重要!
#形式
生成AIが出力する回答の、出力形式を指定する。
たとえば、回答をExcelに貼り付けられる表形式で得たいなら、
「CSV」や「表形式」とする。
出力形式を指定しないと、フツーのテキストで出力される。
見やすくするため、好みの出力形式を指定しよう。
#ルール
各種条件や、所謂「注意事項」は、この「ルール」内に記述する。
条件は複数あるものなので、リスト(箇条書き)形式で列挙する。
ルールはたくさん書くことになるので、リスト形式で。
鉄板テンプレートによるプロンプトの例
以下は、鉄板テンプレートを使って書いた、プロンプトと、ChatGPT 4 による出力結果の例である。
#依頼 あなたは{#役割}です。SAP初心者のための、SAPシステムの用語集を作成しようとしています。 {#ルール}を必ず守り、中学生でも理解できる表現で用語集を作成してください。 用語は{#SAP用語}から読み取り、{#形式}の形式で出力してください。 #役割 SAPコンサルタント #形式 -表形式 -列は「SAP用語」「SAP Terminology」「一般用語」「用語の説明」 #ルール -「SAP Terminology」はSAPシステムの中で使われている英語。 -「一般用語」は、「SAP用語」を世間一般の言葉で言い換える。 -「用語の説明」は当該のSAP用語の、SAPシステムの中での意味、役割、使われ方など。 -結果は日本語で表示する。 -回答は{#形式}で指定された結果のみを出力すること。 #SAP用語 会社コード プラント 販売組織 購買組織
まとめ:生成AIプロンプトのコツ
生成AIとチャットする時は、プロンプトを次のように書くのが効果的である。
- ダラダラと長文で書かず、マークダウン記法を使い、ブロック別に構造化して書く。
- 生成AIに必要なマークダウン記法は、①見出し ②リスト ③強調
- 鉄板テンプレートのブロックは、「#依頼」「#役割」「#形式」「#ルール」の4つ。
当ブログでは、「生成AI」カテゴリにて、プロンプトの様々なサンプルを公開している。公開中の各サンプルは、上記の鉄板テンプレートをベースに、プロンプトを最適化している。
マークダウン記法によるプロンプトの書き方をマスターし、生成AIを大いに活用してもらいたい。
また、紹介した鉄板テンプレートを参考に、自分用に最適化したオリジナルテンプレートの作成すれば、生成AIはさらに使いやすくなるだろう。
そもそも生成AIって何? どんな仕事・作業に使えるの? デメリットは? ChatGPTとGeminiはどちらを使うべき? 無料版と有料版の違いは? など、生成AIの基本的な疑問に答えた記事は以下。
コメント