【OpenAI社推奨】ChatGPTの出力精度を上げる6つのポイント

このコンテンツは有料note「webライターとメディア運営者の、実践的教科書(安達裕哉著)」より転載しています。


昨年の11月に行った、生成AIのユースケースを紹介するカンファレンスから2か月ほどが経ちましたが、年末年始をはさんで、かなり多くの企業の方からご相談を受けました。

その中で、多いご相談が二つあります。

一つは「人不足への対応」です。
単純に言えば、生成AIに一定量の学習をさせたうえで、人間の代わりになるような返答をさせることを目指すもの。

要はチャットボットなのですが、従来の生成AIを用いないチャットボットには問題点がありました。
それは、FAQやシナリオを作る必要があったことです。

この方法だと、FAQを作る手間やメンテナンスの手間が発生し、人間の負荷はそう簡単に減りません。
また、さらに本質的な課題として、FAQに従って回答を返すだけのチャットボットではどうしても複雑な返答はできません。「人間の代わり」は不可能です。

しかし、生成AIの登場によって、FAQやシナリオを作らず、手元にある資料をそのまま生成AIに学習させ、より人間の回答に近い返信ができるAIをつくってみよう、という動きが出てきています。

例えば

  • 営業ロープレを生成AIにやらせよう
  • カスタマーサポートを生成AIにやらせよう
  • 社内コンサルタント(あるいは先輩)の代わりを生成AIにやらせよう

すでに日本は人口減少社会を迎えていますから、あらゆる職場で「人不足」が発生するはずです。
それへの備えとして、今から生成AIの利用を検討しておくことは悪くない選択肢です。

そしてもう一つは、今回の記事の主題となる「テキスト生成AIをもっとうまく使うにはどうすればいい?」という相談です。

これは用途というよりも、生成AIというソフトを扱うスキルの話であり、要するに「Excelの研修」と同じようなものだと考えていただくと良いと思います。

ではその内容とは何でしょうか?
Excelの研修であれば、関数の利用方法、データ分析の基本、ショートカット、マクロやVBAといった要素が考えられますが、テキスト生成AIに関して、それに相当するものはあるのでしょうか?

実はあります。

我々はGPT-4を用いた文章生成ツールを開発してきましたが、その中でプロンプトの研究も同時に進めてきました。

既に多くの知見が発表されていますが、基本中の基本として、たとえば、OpenAIが公開している生成AIのプロンプトエンジニアリングドキュメントの中に、「より良い結果を得るための6つの戦略」というものがあります。

ChatGPTを使うひとは目を通しておいて決して損はないと思いますが、原文のままでは理解しづらい部分も多く、またエンジニア向けの内容も多いので、ここではわかりやすく内容を置きかえました。
それが、以下のものです。

1.明確な指示を書く

GPTはユーザーの心が読めません。したがって、明確で簡潔な指示を書く必要があります。

  • 出力が長すぎる場合は、簡潔な返信を求めます
  • 出力が単純すぎる場合は、「専門家として」執筆を依頼します
  • 出力された形式が気に入らない場合は、希望する形式を例示します

GPTがユーザーの望むものを推測する必要が少ないほど、出力の精度が上がります。

①できるだけ詳しく記述する

悪い例:Excelで数値を合計するにはどうすればよいですか?
良い例:Excel で金額の行を合計するにはどうすればよいですか? これを行のシート全体に対して自動的に実行し、すべての合計が右側の「合計」という列に表示されるようにしたいと考えています。

悪い例:会議のメモを要約してください。
良い例:会議のメモを1つの章に要約してください。次に、講演者とその要点のマークダウンリストを作成します。最後に、講演者が提案した次のステップやアクション項目がある場合は、それをリスト化してください。

②GPTに「ロール」を与えて依頼する

GPTに「あなたは〇〇です」とロールを与えてから命令を出すと、出力の精度が向上します。

③区切り文字を使用して、セクションを明確に示す

単純なタスクの場合、区切り文字を使用しても出力品質に違いが生じない可能性があります。
ただし、タスクが複雑になればなるほど、タスクの詳細を明確にすることがより重要になります。GPTをうまく使うにはモデルにできるかぎり「推測」をさせないようにしてください。

  • 三重引用符(”””ここにテキストを挿入”””)
  • XML タグ(<article> ここに最初の記事を挿入 </article>)
  • セクション タイトル(要約: ここに要約を挿入 タイトル: ここにタイトルを挿入)

④タスクを完了するために必要な手順を指定する

一部のタスクは、一連のステップとして指定するのが最適です。
ステップを明示的に書き出すと、モデルがそのステップに従いやすくなります。例えば、以下のような形です。

応答には、次の段階的な手順を使用してください。
ステップ1 – ユーザーは三重引用符で囲んだテキストを入力します。入力されたら、「概要: 」という接頭辞を付けて、このテキストを1つの文で要約してください。
ステップ2 – ステップ1の概要を「翻訳: 」という接頭辞を付けてスペイン語に翻訳してください。

これを実際に適用すると、以下のようになります。

⑤出力例を提供する

場合によっては出力の例を提供する方が簡単な場合もあります。これは「フューショット」プロンプトとして知られています。

以下の例に従って、一貫したスタイルで答えてください。
ユーザー
忍耐について教えてください。
GPT
最も深い谷を刻む川は控えめな泉から流れ出ています。最も壮大な交響曲は単一の音から始まります。最も複雑なタペストリーは一本の糸から始まります。
ユーザー
海のことを教えてください。

これを適用すると実際に以下のような形になります。

⑥出力の希望の長さを指定する

GPTに、指定された長さの出力を生成するように依頼できます。
目標の出力長は、単語、文、段落、箇条書きなどの数で指定できます。ただし、特定の数の単語を生成するようにモデルに指示しても、高い精度で機能しないことに注意してください。

・三重引用符で区切られたテキストを約50語に要約します。
“””ここにテキストを挿入”””

・三重引用符で区切られたテキストを2つの段落にまとめます。
“””ここにテキストを挿入”””

・三重引用符で区切られたテキストを3つの箇条書きで要約します。
“””ここにテキストを挿入”””

2.参照文献を提供する

言語モデルは、特に難解なトピックや引用やURLについて尋ねられた場合に、自信を持って偽の回答をでっち上げることがあります。

しかし、ノート1枚が生徒のテストの成績を上げるのに役立つのと同じように、これらのモデルに参考テキストを提供すると、捏造を減らして解答するのに役立ちます。

①参考テキストを使用して回答するようにモデルに指示する

関連する信頼できる情報をGPTに提供できれば、提供された情報を使用して回答を作成するようにモデルに指示できます。
例えば、以下のようなプロンプトです。

質問に答えるには、三重引用符で区切られた提供された記事を使用してください。記事内で答えが見つからない場合は「答えが見つかりませんでした」と書いてください。
”””記事”””
質問:Aくんは政治活動をしている?

これを具体的に適用すると、以下のようになります。

②参考テキストからの引用を使用して回答するようにモデルに指示します。

入力が関連する知識で補足されている場合は、提供されたドキュメントの一節を参照することで、モデルの回答に引用を追加するように要求するのは簡単です。
出力内の引用が正しいかどうかは、提供されたドキュメント内の文字列照合によってプログラム的に検証できます。
例えば、以下のようなプロンプトです。

三重引用符で区切られた文書と質問が提供されます。
あなたの課題は、提供された文書のみを使用して質問に答え、質問に答えるために使用された文書の一節を引用することです。
この質問に答えるために必要な情報が文書に含まれていない場合は、単に「情報が不十分です」と記入してください。
質問に対する回答が提供される場合は、引用で注釈を付ける必要があります。関連する文章を引用するには、次の形式を使用します ({“引用”: …})。

これを実際に適用すると、以下のようになります。

3.複雑なタスクを分解させてから指示を出す

複雑なタスクは、単純なタスクよりもエラー率が高くなる傾向があります。また、複雑なタスクは多くの場合、以前のタスクの出力を使用して後のタスクへの入力を構築する、より単純なタスクのワークフローとして再定義できます。

①ユーザーの意図をあらかじめ分類しておく(FAQやシナリオを作る)

テクニカルサポートにおいて、トラブルシューティングが必要なユーザーからのお問い合わせが入力されます。
ユーザーを支援するには:

  • ルーターとの間のすべてのケーブルが接続されていることを確認するように依頼します。時間が経つとケーブルが緩むのが一般的であることに注意してください。
  • すべてのケーブルが接続されていても問題が解決しない場合は、使用しているルーターのモデルを尋ねます。
  • 次に、デバイスを再起動する方法をアドバイスします。
    • モデル番号がMTD-327Jの場合は、赤いボタンを押して再起動するようにアドバイスします。5秒間押し続け、5分間待ってから接続をテストします。
    • モデル番号がMTD-327Sの場合は、プラグを抜き差しし、5分間待ってから接続をテストするようにアドバイスします。
  • デバイスを再起動して5分間待ってもお客様の問題が解決しない場合は、{“IT support requested”}を出力してITサポートに接続します。
  • ユーザーがこのトピックに関係のない質問をし始めた場合は、トラブルシューティングに関する現在のチャットを終了し、次のカテゴリに従ってリクエストを分類するかどうかを確認します:

主なカテゴリ:

  • 請求
  • テクニカルサポート
  • アカウント管理
  • 一般的な問い合わせ

請求の二次カテゴリ:

  • 購読解除またはアップグレード
  • 支払い方法の追加
  • 料金の説明
  • 料金の異議申し立て

テクニカルサポートの二次カテゴリ:

  • トラブルシューティング
  • デバイスの互換性
  • ソフトウェアアップデート

アカウント管理の二次カテゴリ:

  • パスワードのリセット
  • 個人情報の更新
  • アカウントの閉鎖
  • アカウントのセキュリティ

一般的な問い合わせの二次カテゴリ:

  • 製品情報
  • 価格
  • フィードバック
  • 人間と話す

ユーザーの問い合わせ:インターネットに接続できなくなった。接続したい。

上のプロンプトを入力すると、GPTは下のように、トラブルシューティングを開始します。

請求に関しての質問をすると、上位カテゴリから別の質問をGPTは組み立ててくれます。

②非常に長い会話を必要とする対話アプリケーションの場合は、以前の対話を要約またはフィルタリングする。

③長い文書を区分的に要約し、それを繰り返して完全な要約を作る

4.GPTに「考える」時間を与える

GPTに、一気に正しい答えを出力させようとすると、推論エラーが多くなります。答えの前に「解決策のステップ」を尋ねてください。
具体的には以下のようなプロンプトです。

解答を出す前に、この問題を解決するためのステップを出力してください。

5.プロンプト変更の影響をテストする

パフォーマンスを測定できれば、改善が容易になります。

しかし場合によっては、プロンプトを変更すると、いくつかの個別の例ではパフォーマンスが向上しますが、より代表的な例のセットでは全体的なパフォーマンスが低下することがあります。

したがって、変更がパフォーマンスに正味プラスであることを確認するには、包括的なテストを定義する必要がある場合があります。

6.プロンプトライブラリを参照する

openAIは、いくつかのプロンプトライブラリを紹介しています。
以下に引用します。

 

【ティネクトから最新のお知らせ】
オウンドメディア運用における「続かない」「負担が大きい」といった悩みを、
AUTOMEDIA(オートメディア)の自動化ツールで根本から解決します。

AUTOMEDIAサムネイル ・完全自動の記事生成&投稿で、運用の手間をゼロに。
・参照元の明記+AI査読によるファクトチェックで安心の品質。
・SEOと生成AI検索に最適化された「GEO構成」で検索性UP。
・導入〜設計〜WordPress連携まで支援付き。
・1記事あたり1万円(税別)〜、初期導入費10万円(税別)。

資料請求・サービス詳細はこちらから

開発・運用:ティネクト株式会社 × ワークワンダース株式会社
(プロンプト設計・SEO・言語品質の専門家が開発)

 

【著者プロフィール】

安達裕哉

元Deloitteコンサルタント/現ビジネスメディアBooks&Apps管理人/オウンドメディア支援のティネクト創業者/ 能力、企業、組織、マーケティング、マネジメント、生産性、知識労働、格差について。

◯Twitter:安達裕哉

◯Facebook:安達裕哉

◯有料noteでメディア運営・ライティングノウハウ発信中(webライターとメディア運営者の実践的教科書