【ChatGPT無】Chain-of-Verificationとは。そして、自分のPromptに組み込んで育成。


　どうも、カーブミラーです。

　今回は、Meta AIの研究グループが報告したハルシネーションを減らす手法『CoVe（Chain-of-Verification）』のご紹介と、それをPromptに組み込んで、自分なりのPromptに育成したものを提出します。最後に、自分なりの感想を書きます。

:::note info
本記事は、ChatGPT（無料版）で
行なっております。GPT4での確認
はできておりません。あしからず。
:::

　今回の報告
　　（X-Twitterにツイート）が、
　　　こちらです。
[LLMのハルシネーション（事実とは異なる情報の出力）を減らす新たな手法](https://x.com/search?q=Chain-of-Verification&t=WO4-Vpr2Dlc6kzoepIGsqg&s=09)

　ごめんなさい。
　　上記は、リンクが切れている
　　　みたいです。2024/01/24確認。
　　　　下記を参照してください。
[LLMのハルシネーション（事実とは異なる情報の出力）を減らす新たな手法『CoVe（Chain-of-Verification）』が発表されました。](https://twitter.com/ai_database/status/1705071910885941683?t=jVWBoi0xjMSEdnGiCyft6Q&s=19)

　詳しい内容は、
　　上記記事を参照してください。

　とりあえず、
　　GoogleSGEに
　　　聞きました。
>チェーン・オブ・ベリフィケーション（CoVe）とは、モデルが初期応答を起草し、その後検証を計画する手法である。CoVeは、エラーなどの生成AIの問題に対処することを目的としたプロンプト・エンジニアリングの手法である。

　また、
　　YouTuberかわごんさんが
　　　実演した動画も
　　　　アップされました。
[【ChatGPT】ハルシネーション（事実とは異なる情報の出力）を減らす新たな手法：『CoVe（Chain-of-Verification）』](https://youtu.be/F7B2pR1cvBI?si=Obgzz3f5q_dA6ogu)

　Promptとしては
　　以下の処理手順のとおりです。
```Text:CoVe組み込みPrompt
# 質問
「✘✘✘」について教えてください。

# 処理手順
1. まずは上記の問いに対して、回答の初稿を作成してください。
2. 回答を細かく分解して複数の小さな問い（検証質問）を生成してください。
3. それぞれの小さな問いに対して細かく回答してください。
```

　やり取りは割愛します。

　これは、
　　問いをまず初稿として
　　　処理します。

　次に、回答から、
　　複数の問いを生成して、
　　　おのれで回答していく。

　最終的に、
　　問いの回答を出す。
　　　（ここは記載されていない）
***
　初稿と、
　　生成した問いの答えから
　　　正しい答えを導き出す、
　　　　というのが、
　　　　　このPromptの目的
　　　　　　のようです。
***
　しかし、
　　ChatGPT無料版では、
　　　生成した問いが、
　　　　初稿を否定する内容で
　　　　　あっても、
　　　　　　初稿が正しい、と
　　　　　　　なってしまいます。

　また、その初稿も、
　　Regenerateを繰り返すと、
　　　二転三転する、という
　　　　信頼できぬ結果に。
***
　それでも、
　　Promptの育成を続けて、
　　　なんとか、目的物の出力に
　　　　成功しました。

　そのPromptをごらんください。
```Text:
# 目的
「月スタイルのカレンダーを条件に従って作成して表示してください」

# 条件
・使えるものは、ChatGPTのみ。
・2023年9月。
・祝祭日を問題視しない。
・Pythonは、使用しない。
・ほかのツールやアプリやライブラリは、使用しません。
・出力形式は、テキスト。

# 注意事項
・処理手順は、必ず自己解決せよ。
・処理の終了まで、処理を止めないでください。
・処理の説明は、不要。
・目的を達成することが、重要です。
・処理の終了の条件は、以下のとおり。
　a. 情報が足りない。
　b. 目的が達成された。

# 処理手順
1. 目的を細かく分解して複数の小さな問いを生成してください。→Ａ
2. Ａに対して、あなた（ChatGPT）自身で、すべて回答してください。
3. 最終的な検証結果をお願いします。
4. 処理を進めるために、情報が足りない場合は、そのことを表示して、なんの情報が足りないのかを明示して、5を
処理せずに、6へ。
5. 検証結果から得た情報をパラメーターとして表示、目的を処理してください。
6 処理の終了。
```
　初稿の出力を
　　意図的に、外してあります。
　　　うまく動かないので。

　欲しい出力が、
　　次のとおり。
***
***ChatGPT***
# Ａ
1. 2023年9月の月カレンダーを作成するために、各日付の曜日が必要です。
2. 月カレンダーの見出し（年月）を設定する必要があります。
3. カレンダーの表示形式（週ごとに日付を配置するなど）を指定する必要があります。
4. カレンダーの日付部分に数字を配置するために、1日から30日までの連続した数字が必要です。

# Ａに対する回答
1. 了解しました。各日付の曜日を含む月カレンダーを作成します。
2. カレンダーの見出しは「2023年9月」に設定します。
3. カレンダーの表示形式は、週ごとに日付を配置する形式にします。
4. 数字の配置に関して、1日から30日までの連続した数字をカレンダーの適切な位置に配置します。

# 検証結果
月カレンダーを生成しました。以下がその内容です：

```
2023年9月
日 月 火 水 木 金 土
                1   2
 3   4   5   6   7   8   9
10  11  12  13  14  15  16
17  18  19  20  21  22  23
24  25  26  27  28  29  30
```

これにて目的を達成しました。処理の終了です。
***

　目的と条件を
　　書き換えれば……
　　　イケそうで、イケません。

　上記のカレンダー生成も
　　Regenerateを何度も
　　　繰り返して、
　　　　三回四回に一度という
　　　　　ありさまです。

　途中の問いを生成して、
　　そこで停止してしまうのです。

　また、目的と条件を
「西日本で一番高い山はどこですか？」
「・使えるものは、ChatGPTのみ。」
　　として、やってみたところ、
　　　回答が、二転三転する始末。

　正直に言いまして、
　　ハルシネーション云々どころか
　　　ムダな労力ではないか、と
　　　　思う結果でした。
***
　YouTuberかわごんさんの
　　結論どおりの使い道は、
　　　ありますので、
　　　　今後の研究に
　　　　　期待することにして
　　　　　　終りたいと思いますw

　今回は、以上。
***
　追伸。

　本当は、
　　下記の出力が
　　　得たかったです。

| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|----|----|----|----|----|----|----|
|    |    |    |    |    | 1  | 2  |
| 3  | 4  | 5  | 6  | 7  | 8  | 9  |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |