😸

ChatGPT:抑えるべき質問応答のポイント

2023/04/06に公開

ChatGPTの特徴

  • 「与えられた文章」に続くもっともらしい文章を予測する
  • セッション単位で過去の会話を利用して会話できる(ブラウザによるリロードで失われる)
    • 残したいものは適宜保存することが可能

ChatGPTができること

  • 質問応答・検索補助
  • テキスト/プログラムの作成・要約・添削・校正・変換
  • 図のコード生成
  • 言語翻訳

GPT4になれば図も生成可能になる

ChatGPTの前提/注意点

  • AIのベース知識は基本的に古いので最新情報に関する質問は注意
    • 2023年3月17日現在、GPT3.5では2021年までのデータで学習している
      • 2021年より新しい情報を得るには、明示的にWeb検索させるかデータを渡す必要がある
    • GPT4以降のバージョンであればWeb検索をした結果を返してくれるようになっている
  • [正しい/中立な結果] を求めてはいけない
    • 対応策
      • 検証、精査をする
      • 回答を複数パターン聞くような質問をする
        • それでも 回答≠[正しい/中立な結果] なことに変わりはない
  • 非公開情報・機密情報は投げない
    • 詳細が分からないように細かいブロックで利用する
    • 変数/クラス名などプロジェクト固有のワードを変更するなどフィルターをかける
      • 言語に応じたフィルター用のプログラムはChatGPTに作ってもらう

質問応答のポイント

テンプレ

  • 基本はテンプレを利用する必要はない
    • 再質問する中で前提やルールを作っていくこともできる
    • GPTのバージョンアップや拡張機能でテンプレに含めなくていい項目も出てくる
  • AIのベース知識は古いので、バージョン指定や最新情報をWeb検索させる(GPT3.5)
    • 各種ツールのaddonやpluginを活用する
    • GPT4では最新情報の検索をしてくれる
  • テンプレが必要なケース
    • 質問の前にルールや前提が必要
    • 質問回数が多い(最初の方のルールを忘れることがある)
      • バージョン、ルール、処理順序など必要な項目を箇条書きで書く=テンプレ
# バージョン
[OS/言語]

# インプット/アウトプット
[重要]入出力形式・構造の指定

# ルール/前提条件/処理順序
[必須]
回答する際に、不足している情報があれば確認してください

[ルール1]
[ルール2-1]

# 質問
# 回答の指定

ルール(前提条件)

  • 最初にルール、前提条件を記載する
    • OS、言語、バージョン、利用シーンを記載する
      • 新しい情報は[渡す/Webから取得] してもらう必要がある(重要)
      • バージョンなど確認が必要なことがあれば質問に含める
    • 前提条件やルールの指定
      • 処理の順序などの指定
    • 入出力のデータ構造を記述する
    • どういう出力を得たいかを記述
    • 質問を繰り返していると前提を忘れることがあるので注意
    • 質問を繰り返す中でブラッシュアップしていく

質問

質問は具体的にする

  • カテゴリー/階層/体系があるなら上位の方から記述していく

追加質問

[重要]
回答内容に対して更に質問を繰り返す(再質問・追加質問)

  • 「回答を詳しくorわかりやすく説明してください」
  • 「回答だと〜できませんでした」(エラー丸投げでも修正してくれたり...)
  • 「使用しているツールのバージョンはx.x.xです」 ← 前提条件に追加するべき

精査/検証

[重要]
精査・検証にはAIと同等の知識は必要ない
未知の分野でも追加質問やWeb検索を駆使すれば精査・検証は可能
必要な観点のみ精査・検証する

  • 別スレッドで同じ質問をする(質問に対する回答の再現性)
  • 回答内容が正しいか(正確性)
  • 回答内容の動作テスト(確実性)
  • 最適な回答か(効率面、性能面、安全性)

回答の指定

  • 回答パターンを指定する
    • 「異なるアプローチで3つ回答してください」
      • 異なるアプローチの回答を精査する
        • 「回答1と回答2の違いを説明してください」
  • 回答粒度・説明難度を指定する
    • 「わかりやすく/具体的に回答してください」

その他

  • 処理が多い場合は処理を細かく分解する
    • 細かい処理ブロック単位に分けて最後に回答をまとめる
  • 文章が長く途中で終わってしまう場合は、「続き」と入力する
テンプレは長くなるので質問後にブラッシュアップしていく
# ルール
## バージョン
[OS]
[言語]

## インプット
データ構造のサンプルを記述
## アウトプット
出力形式の指定

## 前提条件/ルール/処理順序
[必須]
回答するのに情報が不足している場合は確認してください

以下は必要に応じて記述する
[前提条件1]
[前提条件2]
	
[ルール1]
[ルール2-1]

[処理順序1]
[処理順序2]
...

# 質問
(質問を記載する。以下は例)
## 単純な質問
  〜教えて
## 追加質問/精査/検証
  回答を詳しくorわかりやすく説明して
  回答1と回答2の違いを説明して
  (インプット)で動作確認して
## エラー原因説明/回答の修正
  回答だと〜できませんでした


# 回答の指定
(回答について指定する。以下は例)
## 回答パターンの指定
  質問について異なるアプローチで3パターン回答して
## 回答粒度の指定
    わかりやすく/具体的に

まとめ

人に何度も同じことを聞いてわかりやすく説明してもらうことは難しい。
不明点をつきっきりで詳しく教えてくれる人もいない。
コードの生成を代行してくれる人もいない。

このような状況であれば、それっぽい回答が得られるだけで
これまで調査や人への質問に費やしていた時間が大幅に短縮されます。

ChatGPTで求める回答(に近いもの)を得るためには

  • 質問の仕方を工夫する
  • 回答内容を精査する
  • 再質問する

を繰り返して回答の精度を挙げる必要があります。

  • 前提/注意点
  • 質問の仕方

に留意して上手に付き合えばとても強力な相棒となってくれるでしょう。

また、現在は様々な拡張機能や類似サービスが出現している状況です。
求めるものに特化したものがあるか確認するとより効率的かと思います。

参考リンク

https://qiita.com/sakasegawa/items/82069c97a1ee011c2d1e
簡単な使い方のまとめ
ChatGPTをあまり使ったことない人向け

https://zenn.dev/bathtimefish/articles/49a35d3de43027
TypeScriptのJestコードを書いてみてた
やってみた系で分量は少なめ

https://webtan.impress.co.jp/e/2023/02/16/44314

  • 知識・文章の要約
  • ブレスト
  • ロールプレイ
  • クロスレビュー
  • 改善レビュー
  • 危険度チェック

https://research.aimultiple.com/chatgpt/
ChatGPT の上位 6 つの使用例

  • チャットボットと仮想アシスタント
  • 言語翻訳
  • テキスト要約
  • コンテンツ生成
  • コードのデバッグ
  • 検索エンジン

https://www.educative.io/blog/chatgpt-how-it-can-help-devs-productivity
自然言語処理のためのChatGPT使用
今後10年でなくせそうなこと

  • 単体テストの自動化
  • パラメータに基づいてテストケースを作成
  • セキュリティベストプラクティスを提案するためのコード分析
  • QA自動化

https://blogcake.net/chatgpt-what-you-can-do/

Discussion