ChatGPTに指定出力形式を与えるためのTips

注意事項

この記事は、Notion AIに対して

  • 問題と解決策の概要
  • 例示用のコード

を渡して生成した実験的な記事になります。

概要

ChatGPTを使っている方々は、特定の形式で出力してほしいと思うことがあるかもしれませんが、実際の出力には不要な説明文が含まれたり、成功する時と失敗する時の安定さがかける場合があるかもしれません。

そもそもGPT-3以降が得意なのが、質問への回答ではなく、入力された文字列への続きを書くことだからです。
つまり、ChatGPTを用いた文章生成の目的は、入力された文章に続きを付けることです。
そのため、JSON形式で出力する際には、適切な工夫が必要になります。

例えば、以下のようなプロンプトを与えると画像のような出力になり、不要な説明がつくことがあります。

朝活をするサラリーマンへの訴求を10個考えて、JSONで出力してください。

解決策 ~出力先を指定する~

一つの解決策として、不要な説明を避けたい場合は、どこに出力結果を書く場所かを明示することが挙げられます。
その際には、以下のように記述することができます。

朝活をするサラリーマンへの訴求を10個考えて、JSONで出力してください。
#出力

このようにすることで、必要な情報だけを出力することができます。

ここで工夫しているポイントは、末尾に「#出力」という文言を付与することで、ChatGPTの返答を含めて1つの文書として俯瞰した場合にその続きに続く文字列がJSONであるのが確からしと解釈させることにあります。

他の場合のも利用可能なテクニックです。

AOJのHello Worldのコードを書かせるために、末尾に「#Code」という文言を付与しています。

このようなテクニックを使うことで、特にAPI連携を行うシステムでは有用な結果になります。

解決策 ~形式を指定する~

また、指定したフォーマットでJSON形式で出力する場合は、出力形式のサンプルを与えることで、より正確な情報を伝えることができます。
例えば、以下のように記述することができます。

朝活をするサラリーマンへの訴求を10個考えて、JSONで出力してください。

#出力形式
{"appeals":["",""]}

#出力

このように、出力形式のサンプルを与えることで、必要な情報だけを出力することができます。

ここで工夫しているポイントは、項目のみを列挙するのではなく、JSONの型まで指定することが重要です。

以下は、その例で実際に遊びで作っていたサービスでの例です。

まとめ

ChatGPTを用いた文章生成において、JSON形式での出力は重要ですが、不要な説明文が含まれたり、出力の安定さがかける場合があります。そのため、適切な工夫をすることが必要です。

ポイントは、以下の2つになります。

  • ChatGPTやAPIの返答を含めて1つのドキュメントとして見えるように捉え、出力先を指定する
  • JSONなどで出力してほしい場合は、空文字列でも良いので型が分かるようにサンプルを与える