ChatGPT プロンプトエンジニアリングについて

この記事の内容

ChatGPTでプロンプトエンジニアリングの学びと使いこなしを記載します。

テクニック集

Q&A形式で書く

以下のように、QA形式で質問するとモデルの回答が良くなることがある。

Q: [質問内容]
A:

例:

入力プロンプト

Q: プロンプトエンジニアリングとは何ですか。
A:

回答

プロンプトエンジニアリングとは、自然言語処理(NLP)モデル、特に生成モデル(例えば、GPT-4)に対して、適切で効果的な出力を得るために入力プロンプト(質問や指示)を設計・調整する技術や方法のことを指します。この技術は、AIモデルのパフォーマンスを最適化し、特定のタスクや目標に対して望ましい結果を得るために重要です。

プロンプトエンジニアリングの主な目的は、以下のようなものがあります:

モデルの出力の精度向上:適切なプロンプトを用いることで、モデルがより正確で関連性の高い回答を生成するようにする。
バイアスの回避:プロンプトを工夫することで、モデルが偏ったり有害な回答を生成しないようにする。
特定のスタイルやトーンの維持:プロンプトの工夫によって、生成されるテキストのスタイルやトーンを特定の形式に合わせる。
多様な応答の生成:プロンプトを変えることで、同じテーマに対して異なる視点やアプローチを引き出す。
~~~ 略 ~~~

区切り記号を使う

比較的長いプロンプトの場合は、明確な区切り記号を付けるとよい。

### 指示:
[指示文書]
### 入力:
[入力テキスト]
### 出力:

例:
入力プロンプト

### 指示:
以下の日本語を英語にして。
### 入力: 
プロンプトエンジニアリングとは何ですか。
### 出力

回答

What is prompt engineering?

 出力する形式を指定する

ユースケースによって、出力したい形式は変わると思います。CSV、JSON、表形式など、フォーマットを指定して出力をします。

一覧

入力プロンプト

### 指示
プログラミング言語をリスト表示してください。

### 出力形式
プログラミング名のみをリスト出力してください。
説明などは不要です。

### 出力

回答

Python
JavaScript
Java
C#
C++
Ruby
PHP
Swift
Kotlin
TypeScript
Go
Rust
Dart
R
MATLAB
Perl
Scala
Haskell
Lua

CSV

入力プロンプト

### 指示
プログラミング言語を列挙してください。

### 出力形式
- CSV形式で出力してください。

### 出力例
名称, 説明, 難易度
Python, インタープリタ型の高水準汎用プログラミング言語である。, 易

 ### 出力

回答

名称, 説明, 難易度
Python, インタープリタ型の高水準汎用プログラミング言語である。, 易
JavaScript, 主にウェブ開発に使用されるインタープリタ型のプログラミング言語。, 易
Java, オブジェクト指向プログラミング言語であり、多くのプラットフォームで使用される。, 中
C, システムプログラミングや組み込みシステムに使用される低水準のプログラミング言語。, 難
C++, C言語を拡張したオブジェクト指向プログラミング言語。, 難
C#, マイクロソフトが開発したオブジェクト指向プログラミング言語で、.NETフレームワークで使用される。, 中
Ruby, シンプルで生産性を重視したインタープリタ型のプログラミング言語。, 易
PHP, 主にサーバーサイドのウェブ開発に使用されるスクリプト言語。, 易
Swift, Appleが開発したiOSやmacOSアプリの開発に使用されるプログラミング言語。, 中
Go, Googleが開発したシステムプログラミング言語で、シンプルで効率的。, 中
R, 統計解析やデータ分析に特化したプログラミング言語。, 中
Kotlin, JVM上で動作し、主にAndroidアプリの開発に使用されるプログラミング言語。, 中
Rust, 安全性と並行性を重視したシステムプログラミング言語。, 難
Perl, テキスト処理に強い汎用プログラミング言語。, 中
Scala, Java仮想マシン上で動作するオブジェクト指向かつ関数型のプログラミング言語。, 中

表形式

入力プロンプト

### 指示
プログラミング言語を列挙してください。

### 出力形式
- マークダウンの表形式で出力してください。

### 出力例
| 名称   | 説明                                                   | 難易度 | 
| ------ | ------------------------------------------------------ | ------ | 
| Python | インタープリタ型の高水準汎用プログラミング言語である。 | 易     | 

 ### 出力

回答

| 名称           | 説明                                                                                           | 難易度 |
| -------------- | ---------------------------------------------------------------------------------------------- | ------ |
| Python         | インタープリタ型の高水準汎用プログラミング言語であり、読みやすく書きやすい。                     | 易     |
| JavaScript     | Web開発で広く使われるスクリプト言語で、動的なコンテンツを作成できる。                             | 易     |
| Java           | オブジェクト指向プログラミング言語で、クロスプラットフォームのアプリケーションに広く使用される。 | 中     |
| C++            | パフォーマンスと効率性を重視した汎用プログラミング言語。                                       | 中     |
| C#             | Microsoftによって開発されたオブジェクト指向プログラミング言語で、.NETフレームワークと共に使われる。 | 中     |
| Ruby           | シンプルさと生産性を重視したインタープリタ型のプログラミング言語。                             | 易     |
| PHP            | サーバサイドのスクリプト言語で、Web開発によく使用される。                                      | 易     |
| Swift          | Appleによって開発されたプログラミング言語で、iOSおよびmacOSのアプリ開発に使用される。           | 中     |
| Go             | Googleによって開発されたシンプルで効率的なシステムプログラミング言語。                           | 中     |
| Rust           | 安全性と速度を重視したシステムプログラミング言語。                                             | 中     |
| Kotlin         | JVM上で動作するプログラミング言語で、Androidアプリ開発に広く使用される。                         | 中     |
| TypeScript     | JavaScriptに型付けを追加したプログラミング言語。                                               | 中     |
| R              | 統計解析およびグラフィックのためのプログラミング言語。                                         | 易     |
| MATLAB         | 数値計算やアルゴリズム開発のためのプログラミング言語。                                         | 易     |
| SQL            | データベースクエリ言語で、データベースの操作と管理に使用される。                                | 易     |
| HTML/CSS       | Webページの構造とスタイルを定義するマークアップ言語およびスタイルシート言語。                    | 易     |
| Shell Scripting| シェル環境でのタスク自動化のためのスクリプト言語。                                              | 易     |
| Haskell        | 関数型プログラミング言語で、数理論理と関数型パラダイムを重視する。                               | 難     |
| Lua            | 組み込み用途に広く使用される軽量のスクリプト言語。                                             | 易     |
| Dart           | Googleによって開発された、特にモバイルアプリ開発に使用されるプログラミング言語。                 | 中     |

JSON

入力プロンプト

### 指示
プログラミング言語を列挙してください。

### 出力形式
- JSON形式で出力してください。

### 出力例
{
   "laungages": [
    {
    "name": "Python",
    "description": "インタープリタ型の高水準汎用プログラミング言語である。",
    "level": "easy"
    }
]
}

 ### 出力

回答

{
   "languages": [
      {
         "name": "Python",
         "description": "インタープリタ型の高水準汎用プログラミング言語である。",
         "level": "easy"
      },
      {
         "name": "JavaScript",
         "description": "Web開発に広く使用されるインタープリタ型のプログラミング言語。",
         "level": "easy"
      },
      {
         "name": "Java",
         "description": "多くの企業システムやAndroidアプリの開発に使用されるオブジェクト指向プログラミング言語。",
         "level": "intermediate"
      },
      {
         "name": "C++",
         "description": "高性能なアプリケーションやゲーム開発に使用される汎用プログラミング言語。",
         "level": "advanced"
      },
      {
         "name": "C#",
         "description": "Microsoftによって開発され、.NETフレームワーク上で動作するオブジェクト指向プログラミング言語。",
         "level": "intermediate"
      },
      {
         "name": "Ruby",
         "description": "簡潔で読みやすいコードを書くことを目指したオブジェクト指向スクリプト言語。",
         "level": "easy"
      },
      {
         "name": "Go",
         "description": "Googleによって開発され、シンプルで効率的なプログラミングを可能にするプログラミング言語。",
         "level": "intermediate"
      },
      {
         "name": "Swift",
         "description": "Apple製品の開発に使用されるプログラミング言語。",
         "level": "easy"
      },
      {
         "name": "PHP",
         "description": "主にサーバーサイドのWeb開発に使用されるスクリプト言語。",
         "level": "easy"
      },
      {
         "name": "Kotlin",
         "description": "Androidアプリ開発において人気のあるJava互換のプログラミング言語。",
         "level": "intermediate"
      },
      {
         "name": "Rust",
         "description": "メモリ安全性と高性能を両立したシステムプログラミング言語。",
         "level": "advanced"
      },
      {
         "name": "TypeScript",
         "description": "JavaScriptのスーパーセットであり、静的型付けをサポートする言語。",
         "level": "intermediate"
      }
   ]
}

 

参考になるURL

 

ChatGPTで戦略的な深読みができるTree of Thoughts (ToT)プロンプト実演|VERSAROC
ChatGPTを含む大規模言語モデルのプロンプトエンジアリングの優秀なガイダンスとして名高い『Prompt Engineering Guide』。6月9日に新たなテクニックが追記されました。 Tree of Thoughts (ToT)です...

 

コメント