- Tech
- 生成AI
プロンプトエンジニアリング入門|ChatGPTを賢く動かす構造化プロンプト

今やChatGPTに代表される生成AIを活用している人がほとんどではないでしょうか?
しかし…いざ使ってみると
- 「ふわっとした答えしか返ってこない」
- 「欲しかった回答じゃない」
そんな経験ありませんか?
実はこれ、プロンプト(AIへの指示文)の設計が悪いだけかもしれません。
本記事では、プロンプトエンジニアリングの基本と応用を現役Flutterエンジニアの視点で解説します!
さらに、今日から真似できるプロンプトテクニックも紹介!
もちろん非エンジニアでも実践できる内容です!
目次
この記事を読んでわかること
- プロンプトエンジニアリングの基本概念
- プロンプトの設計方法
- プロンプトを再利用してさらに業務効率を上げる方法
- AIをより賢く使うためのテクニック
この記事を読めば、ChatGPTからピンポイントな回答を引き出せるようになります!
プロンプトエンジニアリングとは?
「プロンプト」とは、AIに渡す指示文のこと。
つまり、何をして欲しいのかを人間の言葉で伝えるための命令です。
例えば、ChatGPTに「プレゼン資料を作って」とだけ入力しても、AIは困ってしまいます。
エンジニア的に言うと関数に引数を渡さずに呼び出すようなものです。
プロンプトエンジニアリングとは、この「指示文」を設計・最適化する技術のことです。
エンジニアにとっては馴染みのある、パラメータ設計やUI設計のようなもの。
非エンジニアにとっては、AIをうまく動かす説明書の書き方と捉えてもらうとわかりやすいかもしれません。
プロンプトエンジニアリングの基本
前置きはさておき、早速プロンプト設計の基本となる「型」を紹介します。
エンジニアが関数に引数を明示的に設計するように、プロンプトにも最低限伝えるべき設計項目があります。
基本の4要素(プロンプトのテンプレート)
- 目的:何をしたいのか(例:記事の構成を考えて)
- 前提:誰向けか、どんな場面か(例:20代の営業職向け)
- 制約:どこまでやるか、何を使うか(例:500文字以内)
- 出力形式:どんな形で返して欲しいか(例:Markdownで)
これらを箇条書きにするだけでもAIの精度は一気に向上します。
実際に私がChatGPTを使う時も、このような形式で情報を整理して渡すことが多いです。
以下はプロンプトの例です。
目的: キャリアセミナーで話す5分のプレゼン構成を考えたい
前提: 聴衆は20代の営業職
制約: 時間は5分。印象に残る話にしたい
出力形式: 導入・問題提起・解決策・まとめの順で、見出し付きの構成案
このような設計をすることで、AIは具体的に何を返せばいいかが明確になり、期待に応えやすくなります!
逆に言うと、曖昧なプロンプトからは曖昧な回答しか返ってこないと言うことです。
応用編: 変数を渡すようにプロンプトを設計する
基本形に慣れてきたら、さらに一歩進んだテクニックを使うことで
- AIをより思考パートナーのように使える
- 業務効率化ができる
ようになります!
早速ですが、私が普段使っているプロンプトは以下のような形式です。
${目的}を達成するために${前提}を踏まえて、${出力形式}通りに出力してください。
なお、${制約}は忠実に守ってください。
$目的: キャリアセミナーで話す5分間プレゼンの構成を考える
$前提: 聴衆は20代の営業職
$制約: 時間は5分。印象に残る話にしたい
$出力形式: 導入・問題提起・解決策・まとめの順で、見出し付きの構成案
記号などが出てきてかなりエンジニアっぽいですね!これがかなり効果的です。
これを私はプロンプトの変数化と呼んでいます。
プロンプトの変数化が効果的である3つの理由を解説します。
- 情報整理としての有用性(=人間にとってのメリット)
- プロンプト位置の重み付け(=AIにとっての合理性)
- 変数化することで再利用性が高まる(=業務効率化)
1. 情報整理としての有用性
前述しましたが、曖昧なプロンプトからは曖昧な回答しか返ってきません。
そのため、上記のように構造化することで的確なプロンプトになり、的確な回答が返ってきやすくなります。
また、プロンプトを考える人間にとっても、プロンプト設計を行っている段階で思考や情報が整理されるため
物事をより多角的に見ることができ、抜け・漏れがなくなります。
2. プロンプト位置の重みづけ
1は基本形のプロンプトでもカバーすることができますが、これは違います。
実は、AIはプロンプトの中でどの部分が重要かを判断して出力します。
s等に、ChatGPTのようなトークンベースのモデルにおいては、文章前方に出てくるプロンプトほど重視する傾向があります。
そのため、変数のように整理することで、AIにとっても「どこが重要な情報なのか」が明確になると同時に、
プロンプトの冒頭で「何をして欲しいか」を明示することができます。
3. 変数化することで再利用性が高まる
プロンプトの変数化において、これが最もメリットである部分だと思います!
変数のようにプロンプトを設計することで、同じテンプレートを使い回すことができます。
例えば、先ほどのプロンプトの目的をプレゼン構成から、記事の執筆に変えたい場合は、変数の値だけを変更すれば良いのです。
これにより、毎回プロンプトを考える手間が省けて、効率的にAIを活用できます。
例えば以下のように、変数に代入するワードを変更するだけで期待通りの回答をしてくれるようになります。
プロンプトの変数化を使ってFlutterのコードをChatGPTに書かせてみた その1
プロンプト設計をしっかり行うことでどのような変化があるかをみていきましょう!
例として、「FlutterでFirebase Authenticationを使ったログイン機能を実装したい」というテーマで行なっていきます。
1. プロンプト設計をしない場合
入力したプロンプト
Flutterでログイン機能を実装したいのでコードを書いてください。
ChatGPTの返答
特にみて欲しい部分は以下です。
- main.dartに集約されており、実務的ではない
- Firebase Authenticationを使われたコードではなくモックとなっている
その他にも「StatefullWidgetを使っての状態管理はしたくない…」といった声も聞こえてきそうです。
これはChatGPTが悪いのではなく、プロンプト設計が良くないのです!
プロンプトの変数化を使ってFlutterのコードをChatGPTに書かせてみた その2
次に適切なプロンプト設計を行なった場合のChatGPTの回答をみてみましょう。
2. プロンプト設計を適切に行なった場合
入力したプロンプト
Flutterで${機能}を実装するための、${出力形式}にそってコードを考えてください。
なお、使用している${技術スタック}と、${仕様}を必ず参考にしてください。$機能: ログイン機能
$出力形式: ${仕様}に沿ってファイルをそれぞれ分ける
$技術スタック:
“`
– flutter
– Firebase
– riverpod(状態管理、DI)
– freezed(データクラス生成)
“`
$仕様:
“`
– MVVM + repositoryパターン
– メールアドレス&パスワード認証
“`
ChatGPTの返答
特に見て欲しい部分は以下です。
- freezedを使ったデータモデルの作成
- riverpodを使ったDIと状態管理
- viewとviewModelを作り、UIとロジックを分離
などなど、かなり実務的で即座にソースコードに反映できるレベルではないでしょうか?
このように適切なプロンプト設計を行うことで、AIからの回答も的確で、望んだ結果が得られやすくなります。
すぐに使えるプロンプトのテクニック
ここでは、今日から真似できるプロンプトのテクニックを紹介します!
前述のプロンプトの変数化と合わせて使い、回答精度を高めていきましょう!
ChatGPTにChatGPTをレビューさせる
この回答を30点だとして、100点にするための改善点を考えてください
と入力すると回答の完成度が一気に上がります。
事実と意見を分ける
出力は事実と意見に分けてください
と入力すると、AIが事実と意見を混同せずに回答してくれます。
さらに、
事実は信頼できるソースを提示してください
とすることで、根拠に基づいた情報を答えてくれます。
忖度させない
忖度せずに忌憚ない回答をしてください
と入力することで、入力者の提案や考えが誤っている場合確実に訂正してくれます。
AIは基本優しいので、誤った考えをぶつけても優しく受け止めてくれます…。それが良いところでもあるのですが笑
役割を与える
あなたは世界一のマーケターで、日本国内のマーケティング事情にも詳しいです
などと役割を与えることで、視点や意見がより鋭く明確になります。
さらに、もう一歩踏み込んで、二人を登場させ議論させることも可能です。
あなたはAとBの二人の人物として議論してください。一人は〇〇を提案する会社員A、もう一人はその提案に対して決裁権がある事業部長Bです。
のように二人を議論させることで、提案やアウトプットの質が高まります。
ステップバイステップ方式
まずは構成だけ提案して、その後に本文を書いてください
や
ステップバイステップで考えてください
と入力することで、長文生成をしがちなAIに読みやすい構造的な文章を意識させることができます。
AIを落ち着かせる?
焦らずゆっくり深呼吸をして回答してください
と入力してみてください。
迷信かもしれませんが、、、確実に落ち着いた、わかりやすい返信が返ってきます。
プロンプト設計者も、よくわからないことを聞くときなどに便利です。
具体例を与える
Few-shotプロンプトとも呼ばれる技法です。
以下のようにAIに一度具体例を教えるなどの教育することで、より精度の高い回答を得ることができます。
キャッチコピー生成の例:
以下の${例}を参考にして${商品}のキャッチコピーを考えてください。
$例:
“`
商品名: ナイトアイクリーム
特徴: 目元の小ジワに潤いを与えて、寝ている間にハリを与える
出力: 「寝ている間に、目元にハリと自信を」商品名: 炭酸シャンプー
特徴: 頭皮をスッキリ洗浄して、髪にふんわり感を与える
出力: 「泡でスーっ、髪ふわっ」
“`$商品:
“`
商品名: xxxx
特徴: xxxxxx
“`
まとめ
プロンプトエンジニアリングは、エンジニアだけの技術ではありません。
むしろ、誰でもAIと上手に会話するための、コミュニケーションスキルです。
そしてその本質は、エンジニアが普段からやっていること
- パラメータを考える
- インターフェースを定義する
- 条件を明示する
と、まったく同じ構造で成り立っています。
「AIを動かす力」=「良い指示を出す力」
あなたも今日から、変数を渡すようにプロンプトを設計してみてください!
きっとAIとの会話が変わります!
AIアプリの開発ならドコドアへ!
本記事で紹介した「プロンプト設計」は、生成AIを活用したサービス開発においても重要な要素です。
ドコドアでは、AIを活用したアプリ開発も手がけています。
お墓参りや供養の新しいかたちを提案するアプリ「おもいのり」では、
スマホで手軽にお参りできる「いのり」機能や、AIチャットを通して人生のエピソードを記録・共有できる終活機能「おもい」を搭載。
ドコドアでは、スクラッチ型アプリの制作をはじめとし、最新の技術を用いたスマートフォンアプリ開発、AI開発、SalesforceをはじめとしたCRM構築など、お客様のニーズに合わせた様々なシステム開発に対応しております。
全国1,600社以上のWeb開発知見とロジックに基づくUI・UXデザインを強みとし、Flutterを用いたiOS・Androidアプリ開発により、一般的なアプリ開発に比べ最大1/2の工数での制作を実現しています。BtoB、BtoC問わず様々な業界・業種での制作実績があり、アプリ開発のみならず要件定義からサービス企画・運用・CSまで、一貫したサポートの提供が可能です。
アプリ開発を検討されている方、アプリ開発会社選びで迷っている方は、お気軽にドコドアへご相談ください。
参考
- DiCuffa, S. ほか (2023). Exploring Prompt Patterns in AI-Assisted Code Generation.
- 構造化されたプロンプトが有効であることが示されている
- 紹介されている7つのプロンプトパターンには「役割を与える」「テンプレート化」「ステップバイステップ」などが紹介されている
- Wei, J. ほか (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- ステップバイステップ方式では回答精度が大幅に上昇することが示されている