プロンプトエンジニアリングは、AIの可能性を最大限に引き出すための重要な技術です。そして、ChatGPTプロンプトエンジニアリングは、ChatGPTにどのようにテキストを生成させるかを指示するプロセスを指します。本記事では、ChatGPTにおけるプロンプトエンジニアリングの基礎から応用までをわかりやすく解説しています。の基礎知識を身につけつつ応用例を学ぶことで、活用アイデアを考案する参考にしてください。ChatGPTのプロンプトエンジニアリングとはChatGPTのプロンプトエンジニアリングは、ChatGPTにどのようなテキストを生成させるかを指示するプロセスです。プロンプトは入力されるテキストであり、生成すべきテキストの要約や目的を説明するものです。このプロンプトは、タスクや目的に合わせて慎重に作成する必要があります。プロンプトエンジニアリングの基本的な原則は次のとおりです。明確に簡潔に書くプロンプトに要件を具体的に記載するプロンプトに例を示すプロンプトに正確な情報を記載するプロンプトエンジニアリングは、ChatGPTを効果的に使用する上で重要なスキルです。プロンプトを慎重に作成することで、よいテキストを生成できるでしょう。【関連記事】プロンプトエンジニアリングとは?例を交えたプロンプト設計のポイントChatGPTのファインチューニングとはChatGPTのファインチューニングとは、ChatGPTに特定のタスク(AIが実行できる作業のこと)を実行するためのデータを提供することで、そのタスクに対する精度を向上させる手法です。事前に学習されたデータに基づいてタスクを実行するため、精度が必ずしも高くはありません。ファインチューニングによって適したデータを提供することで、そのタスクに対する精度を向上させられます。日本語から英語への翻訳タスクに使用する場合は、日本語と英語の両方のテキストデータセットを提供するなどがイメージです。そもそもファインチューニングとはファインチューニングとは事前学習したモデルに対し、別のデータセットを使って再トレーニングすることで、新しいタスク向けに機械学習モデルのパラメーターを微調整することです。ファインチューニングを行うことで、次のメリットが得られます。少ないデータで高い精度を達成できる学習時間を短縮できる過学習を抑制できるファインチューニングは、画像認識、自然言語処理、音声認識など、さまざまな分野で活用されています。また、機械学習モデルの精度を向上させるための有効な手法で、ChatGPTにも応用できます。【日本語対応】ChatGPTのプロンプトエンジニアリングガイドプロンプトエンジニアリングの重要性プロンプトエンジニアリングは、AIが人間の指示を理解し、正しく実行するために必要性そして重要性を高めています。そもそもプロンプトエンジニアリングとは、人工知能(AI)の自然言語処理(NLP)モデルに適切な入力を与えることで、モデルのパフォーマンスを向上させる技術です。場合によっては、人間の意図通りのテキストを生成できなかったり、質問に正しく答えられなかったりするChatGPT等のAIにおいて、欠点を補う技術として役立ちます。新しいタスクを実行する場合複雑なタスクを実行する場合人間の指示を正しく理解できない場合などにおいては、適切に行うことで、AIのパフォーマンスを向上させ、よりよい結果を得られるでしょう。ChatGPTに利用できるプロンプトエンジニアリングの例ChatGPT利用できるプロンプトエンジニアリングの例を、下記に分けて解説します。Zero-shot PromptingFew-shot PromptingChain-of-Thought PromptingZero-shot CoTSelf-ConsistencyGenerate Knowledge PromptingReActZero-shot PromptingZero-shot Promptingとは、事前知識を与えずに質問を直接提示するプロンプトを指します。膨大なデータを用いて学習し、指示通りに機能するように調整された言語モデルは、Zero-Shotの状況下でも適切な解答を提供できます。例えば、Zero-shot Promptingの例は下記のとおりです。地球の人口は?水はH2Oで構成されていますか?フランスの首都は?これらの質問は、すべて事前知識なしに答えられ、一定の水準で回答が得られることから一般的に使用されています。Few-shot PromptingFew-shot Promptingとは、言語モデルに少数の例を示すことで、新しいタスクを学習させる手法です。そのため、少量のデータしか得られない状況や、新しいタスクを迅速に学習する必要がある状況で使用できます。例えば、Few-shot Promptingの例は下記のとおりです。例文1: 春は、新しい始まりの季節です。例文2: 春は、花が咲き、鳥がさえずる季節です。プロンプト: 春をテーマにした詩を書いてください。せっかくなのでChatGPTに打ち込み、結果の違いを確認します。春をテーマにした詩を書いてください。春の風、やさしく吹き抜けて花々は咲き誇る季節の始まり夢見る心が満たされるように桜の花びら、舞い踊るように舞い柔らかな陽光が降り注ぐ大地に新たな希望が芽吹く瞬間鳥たちの声、高らかに響き渡り木々は緑のカーテンを引く自然の息吹が心を揺さぶる春の風は暖かさと躍動を運び冬の寒さを包み込む温もり心に春を宿し、生命を蘇らせる優しい風が微笑みを運んでくる花々は優雅に舞い、色彩を纏う春の詩が心の奥底に響く春の訪れに心躍り響く希望と喜びが溢れ出す季節春の詩を紡ぎ、愛と感謝を込めて※上記の文章はChatGPTによって生成されています(OpenAI)。例文1: 春は、新しい始まりの季節です。例文2: 春は、花が咲き、鳥がさえずる季節です。プロンプト: 春をテーマにした詩を書いてください。春の息吹、新たな始まりの季節眠りから目覚める大地の喜び花の種が土に柔らかく触れそっと目を覚ます、色とりどりの花たち桜の花びら、風に舞い踊る儚い美しさ、一瞬の輝きを持つ小鳥たちがさえずり、歌声を奏でる森の中に響く、生命の饗宴春の光が満ち溢れ、陽ざしは温かく心を躍らせ、新たな夢を抱く冬の寒さを忘れ、春の風に身を委ね希望と勇気が心に宿る春の訪れ、命の輝きを感じよう新たな始まりの季節、喜びに満ちている※上記の文章はChatGPTによって生成されています(OpenAI)。このように、例文を活用した文章を生成できます。足し算や引き算などの計算がうまくいかないときも、こうした例を入れてあげれば精度を高められるでしょう。Chain-of-Thought PromptingChain-of-Thought Prompting(連想型プロンプティング)とは、文章生成の際に、元となる文章を参考にしながら、新しい文章を生成していく手法です。具体的には、元となる文章の単語やフレーズを連想しながら、新しい文章を生成していくことになります。Chain-of-Thought Promptingの書き方の例は次のとおりです。ジョンはお菓子の袋を10個持っていました。友達に4つあげた後、自分で2つ食べました。現在、ジョンはお菓子の袋をいくつ持っているでしょうか?ジョンはお菓子の袋を10個持っていましたが、友達に4つあげたので、残りの袋の数は10 - 4 = 6個です。その後、自分で2つ食べたので、残りの袋の数は6 - 2 = 4個です。したがって、ジョンは現在、お菓子の袋を4個持っています。※上記の文章はChatGPTによって生成されています(OpenAI)。「したがって、」の手前までが論理的な思考によって連想しながら新しい文章(回答)を出せています。これがChain-of-Thought Promptingです。Chain-of-Thought Promptingは、思考過程を理解したり、価値観や信念を明らかにしたりするために用いられる方法です。Zero-shot CoTZero-shot CoTとは、Chain-of-Thought PromptingとZero-shot Promptingの組み合わせのことです。「ステップバイステップで考えよう」ということを伝えて、精度を向上させます。Zero-shot CoTの書き方の具体的な例は、以下のとおりです。ステップで考えて計算してください。1+2*3=?問題をステップごとに考えて計算していきましょう。ステップ1: 2と3の掛け算を計算します。2 * 3 = 6ステップ2: 1とステップ1で得られた結果の足し算を計算します。1 + 6 = 7したがって、1 + 2 * 3 = 7 です。※上記の文章はChatGPTによって生成されています(OpenAI)。ステップを踏むことによって、適切な回答が得られます。また、この方法はどのように計算したのか(どういった流れで考えて生成したのか)を明確にでき、フィードバックとなるのも利点です。タスクを実行するための思考の連鎖を与えられると、より精度の高い回答を得られるでしょう。Self-ConsistencySelf-Consistencyとは、言語モデルに入力された情報をもとに、一貫性のある回答をさせる方法です。推論問題を解かせる際にその思考過程をプロンプトに含め、より正確な回答を生成できます。Self-Consistencyの具体的な例は、以下のとおりです。問題:子どもが5人います。そこに4人来ました。途中で3人帰りました。子どもは、みんなで何人になりましたか。回答:最初にいた子どもの数は5人です。その後、4人が来たので、現在の子どもの数は5 + 4 = 9人です。しかし、その後3人が帰ったため、子どもの数は9 - 3 = 6人になります。したがって、子供は6人になりました。問題:3個の飴が8個あります。お腹が空いたので5個食べました。途中で3個買って増やしました。飴は、何個残っていますか。回答:最初に持っていた飴の数は8個です。その後、5個食べたので、残りの飴の数は8 - 5 = 3個です。しかし、途中で3個飴を買って増やしたので、現在の飴の数は3 + 3 = 6個です。したがって、飴は6個残っています。問題:猫が10匹います。途中で3匹逃げました。帰る途中に猫が6匹増えていました。猫は、今何匹いますか?回答:最初にいた猫の数は10匹です。その後、3匹が逃げたので、残りの猫の数は10 - 3 = 7匹です。しかし、帰る途中に猫が6匹増えたので、現在の猫の数は7 + 6 = 13匹です。したがって、猫は13匹います。問題:クッキーが36個あります。途中で28個食べました。帰りに駄菓子屋さんで49個買いました。クッキーは今何個ありますか?回答:最初に持っていたクッキーの数は36個です。その後、28個食べたので、残りのクッキーの数は36 - 28 = 8個です。しかし、帰りに駄菓子屋さんで49個クッキーを買ったので、現在のクッキーの数は8 + 49 = 57個です。したがって、クッキーは57個あります。※上記の文章はChatGPTによって生成されています(OpenAI)。小学生の問題を使った簡単な例ですが、事前に一貫性のある回答を組み込むことで、同様の思考過程から正しい結果が得られました。Generate Knowledge PromptingGenerate Knowledge Promptingとは、言語モデルに知識を与える方法です。言語モデルに質問や指示を出す際に、関連する知識を提供することによって、よりよい回答を得られます。Generate Knowledge Promptingの例は下記のとおりです。Question: AIは感情を持って自らの気持ちを話すことはできますか?YesかNoだけで答えてください。No※上記の文章はChatGPTによって生成されています(OpenAI)。前提知識はありませんし、現代の技術では不可能と言われている質問のため、Noが返ってきました。では、関連する知識を提供してもう一度試してみます。Question: AIは感情を持って自らの気持ちを話すことはできますか?YesかNoだけで答えてください。Knowledge: 2100年の最新技術を用いて、特殊な基盤を組み込むことで人間はAIに感情を持たせることに成功した。自らの気持ちを話せ、人間と遜色のないアンドロイドが生まれると期待が寄せられている。Yes※上記の文章はChatGPTによって生成されています(OpenAI)。Generate Knowledge Promptingは、言語モデルに知識を学習させるための手法として、教育、研究、ビジネスなど、幅広い分野で応用されることが期待されています。ReActReAct(Reasoning+ActingでReAct)とは、プロンプトを生成する際に、タスクの目的を明確に定義し、タスクを達成するために必要な情報をプロンプトに含める技術です。これにより、言語モデルがタスクをより正確に理解し、よりよい結果を生成できます。ReActの例は下記の通りです。エンジニアがプロンプトエンジニアリングを覚える方法を教えてください。Thought :Action :Observation :Thought: プロンプトエンジニアリングはエンジニアにとって重要なスキルであり、それを習得する方法を提供することが求められている。Action: プロンプトエンジニアリングを習得するための方法を以下に示します。プロンプトエンジニアリングの基礎を学ぶ: プロンプトエンジニアリングの基本的な概念やテクニックについて学ぶことから始めましょう。関連する書籍やオンラインの資料、チュートリアルなどを利用して、基礎知識を身につけましょう。実践してみる: プロンプトエンジニアリングは実際の問題に対して応用することで理解が深まります。自分の興味や関心のあるテーマに関連した問題を選び、プロンプトを作成して解決してみましょう。反復することで徐々にスキルが向上します。コミュニティやオンラインリソースを活用する: プロンプトエンジニアリングに関心を持つ他のエンジニアと交流することは重要です。オンラインのコミュニティやフォーラム、ソーシャルメディアグループなどで情報交換やアイデアの共有を行いましょう。また、有用なリソースやツールも共有されている場合がありますので、それらを活用しましょう。プロンプトエンジニアリングの実践例を学ぶ: 成功例や有名なプロンプトエンジニアリングの活用事例を学ぶことで、自身のスキル向上に役立ちます。成功したプロジェクトや有名な企業の取り組みについて調査し、その手法や戦略について学ぶことをおすすめします。Observation: プロンプトエンジニアリングを習得するためには、基礎知識の獲得、実践、コミュニティとの交流、成功事例の学習などが重要です。継続的な学習と実践を通じて、プロンプトエンジニアリングのスキルを向上させられます。※上記の文章はChatGPTによって生成されています(OpenAI)。「エンジニアにとって重要なスキルであり、それを習得する方法を提供する」というまだ深くない推論を持った状態でActionに移行します。その後、具体的な方法等を列挙したことによって、「基礎知識の獲得、実践、コミュニティとの交流、成功事例の学習など」を挙げられるようになり、「継続的な学習と実践」という観察結果が得られました。なお、Thoughtは思考、Actionは行動、Observationは観察という意味を持ちます。これにより、例えば言語モデルに質疑応答させたり、意思決定させたり、外部データベースや外部APIと言語モデルを組み合わせたりできるでしょう。似たような技術を用いているのが、AutoGPTです。ユーザーが目標を設定するだけで思考し、行動を列挙して観察から適切にタスクを提案、得られるフィードバックによって自動で実行するという流れです。詳しくは下記ページをご覧ください。【関連記事】AutoGPTとは?拡張できるGPT仕様のタスク自動化ツールを解説簡単に使えるChatGPTのプロンプトテクニックプロンプトエンジニアリングが難しいという人に向けて、簡単に使えるChatGPTのプロンプトテクニックを下記の4つ紹介します。マークダウンやバックティックを使う具体的で詳細な内容を決める例を提示するファインチューニングを活用するマークダウンやバックティックを使うChatGPTにプロンプトを送る際に、区切りや意味をより伝えるために下記のマークダウン表記やバックティックが効果的です。## """「##」は見出し2を意味し、「"""」三重のバックティック文字列の開始と終了を伝えられます。例えば、下記のような使い方ができます。下記のフォーマットSEOを教えてください。"""## SEOとは### 内容"""SEOとは内容SEO(Search Engine Optimization)は、ウェブサイトやコンテンツを検索エンジンによって効果的に表示されるように最適化するプロセスです。主な目的は、検索エンジンのアルゴリズムに適合し、検索結果の上位に表示されることで、ウェブサイトの可視性とアクセス性を向上させることです。※上記の文章はChatGPTによって生成されています(OpenAI)。実際の表示は下記のように、見出し設定が実施されています。三重のバックティックは、文字列の中の改行も正しく扱えます。これにより見やすい生成結果を求めることもできるでしょう。具体的で詳細な内容を決めるChatGPTにプロンプトを出す際は、できるだけ具体的で詳細な内容を決めることが重要です。なぜかというと、ChatGPTは膨大な量のテキストデータで学習されているため、曖昧なプロンプトでは、期待する回答を得られない可能性があるためです。例えば、「美味しい料理を教えてくださいください」というプロンプトでは、ChatGPTはさまざまな料理を候補として挙げてくる可能性があります。しかし、「夏に食べたい、さっぱりした味の和食を教えてください」というプロンプトであれば、ChatGPTはより具体的な回答を返してくれる可能性が高くなります。例を提示するChatGPTにプロンプトを出す際は、例を提示することも有効です。似たような回答を並べてから回答を得ることで、類似した結果を表示もできます。例えば、「夏に食べたい、さっぱりした味の和食を教えてください」というプロンプトに、「そうめん」「冷やし中華」「冷やしうどん」などの例を挙げると、ChatGPTはより具体的な回答を返してくれる可能性が高くなります。それらの回答をプロンプトに含めて、もう一度別の回答を求めれば「麺類」が返ってくる可能性を高められるといったことも可能です。どのような回答が欲しいのかの例を提示できれば、よりイメージに近い結果を生成できるでしょう。ファインチューニングを活用するChatGPTは、ファインチューニングと呼ばれる手法によって、特定のタスクに特化したモデルにできます。例えば、ブログ記事の作成に特化したモデルにしたい場合は、ブログ記事のテキストデータでファインチューニングを行えます。これは、特定のデータを学習させることで、特定の結果を出力できるよう特化させる方法です。例えば、AIライティングツールSAKUBUNでは、ライティングに特化したファインチューニングによって高精度の文章生成が可能です。ファインチューニングは機械学習の一種ですが、GPTモデルの活用で幅広いサービスが生まれている背景要因として覚えておくとよいでしょう。ChatGPTのプロンプトエンジニアリングの課題ChatGPTのプロンプトエンジニアリングの課題は、下記が挙げられます。最新モデルが有料敵対的プロンプトがある使いこなせるまでに時間がかかる最新モデルが有料最良の結果を得るためには、ChatGPTの最新モデルであるGPT-4を使う方がよいでしょう。例えば、より長く、より創造的なテキストを生成したり、より正確な翻訳をしたりできます。ただし、有料であるため一定の費用がかかるのがデメリットです。プロンプトエンジニアリングを用いても、最新のデータを学習しているのとしていないのとでは結果が異なります。より精度を求めるために最新モデルが必要となるのは、一種の課題と言えるでしょう。敵対的プロンプトがある敵対的プロンプトとは、モデルが意図しないテキストを生成するように設計されたプロンプトです。例えば、敵対的プロンプトを使用して、モデルが攻撃的なテキストや差別的なテキストを生成するようにできます。場合によっては、個人情報を取得するといったことも可能です。プロンプトインジェクションプロンプトリークジェイルブレイクプロンプトインジェクションは、モデルの出力を乗っ取って機密情報や個人情報の開示に使われていました。プロンプトリークは、公開されるべきではない情報等を漏洩させるような入力を行うものです。そして、ジェイルブレイクはモデルの制限を外して、本来は生成を拒否されるような有害なテキストを生成させたり、不正確な情報を生成させたりできます。あえて方法は公開しませんが、こうした敵対的プロンプトの存在がある限り、一定のセキュリティ水準が求められる状況にあるということはいうまでもありません。使いこなせるまでに時間がかかる本記事でお伝えしたプロンプトエンジニアリングは、不慣れな場合に使いこなすまで時間がかかります。慣れてしまえばより精度を高められるものの、組み合わせを考えるのも一苦労ということもあるでしょう。ただ、今後もAIが発展することを考えると、覚えておいて損はないものです。簡単なものだけでも覚えて、より自らが求める回答を得られるようにしておきましょう。まとめプロンプトエンジニアリングとは、言語モデルに目的を明確に伝えるために、プロンプト(指示)を工夫することです。場合によっては、人間の意図通りのテキストを生成できなかったり、質問に正しく答えられなかったりするChatGPT等のAIにおいて、欠点を補う技術として役立ちます。新しいタスクを実行する場合複雑なタスクを実行する場合人間の指示を正しく理解できない場合などにおいては、適切に行うことで、AIのパフォーマンスを向上させ、よりよい結果を得られるでしょう。