前回の記事でも書いたがAIと会話を行うたびにAIへの指示とAIからの応答を管理したいと思うようになった。
AIとの質疑応答の管理が必要だと思った訳
AIとのやり取りにおいて管理が必要だと痛感した背景には、大きく分けて「AIの仕様に起因する課題」と「人間の操作ミスに起因する課題」の4つの発端がある。
■ AIの仕様(記憶と長文回答)に起因する課題
第一の発端(チャットがすぐ大量になる)
AIと会話を始める。
↓
AIがこちらが聞いていないことを含めて良かれと思い長い回答をしてくる。
↓
最初の質問に対する回答の中に確認したい項目がありその点を質問する。
↓
AIがこちらの確認に対して回答して、さらにこちらの意図を勝手に推測して長い回答を返してくる。
↓
(以下繰り返し)
いやいや疑問が解決してないよ。
↓
再度疑問や確認したい項目について質問する。
↓
AIがこちらの確認に対して回答して、さらにこちらの意図を勝手に推測して長い回答を返してくる。
↓
こうしてチャットが大量になる。
第二の発端(チャット間の情報の引継ぎ)
AIと会話を始める。
↓
会話が大量になる。
↓
記憶の壁やハルシネーションの問題が発生する。
↓
新規のチャットを開始してAIと会話を続ける。
↓
チャットが変わるとAIは記憶を引き継がない。
↓
新しいチャットで過去の会話を与えるとすぐに妄想が発生する。
↓
別のAIに確認すると、新しい会話の前にAIに要約を作らせると良いと聞く。
↓
すぐに実践。
↓
AIに要約が殆ど嘘で、役に立たない。
↓
人間がまとめるしかない
↓
会話が長すぎて、要約しきれない
↓
会話をコピーして別エディターで要約しようと思うが、そもそもコピーが面倒
(会話全体を一度にコピーしてくれない)
■ 人間の操作ミス(誤送信)に起因する課題
第三の発端(途中で送信してしまうことが多い)
AIと会話を始める。
↓
AIからの応答があり、次へ行って良いか聞かれる。
↓
確認・問い合わせたいことがあり、次の質問を打ち込むが、途中で送信してしまう。
(例えば日本語入力してるつもりがアルファベット入力中で変換確定のつもりでEnterを押してしまうケース)
↓
AIが勝手に質問内容を推測して回答してくる。
↓
質問内容が途中で送信されているため、AIの回答は的外れ。
↓
再度質問内容を打ち直して送信する。
↓
チャットにゴミがあふれる。
第四の発端(指示内容を打ち間違えて送信してしまうことが多い)
AIと会話を始める。
↓
AIからの応答があり、次へ行って良いか聞かれる。
↓
確認・問い合わせたいことがあり、次の質問を打ち込むが、内容を打ち間違えてしまう。
↓
AIが勝手に質問内容を推測して回答してくる。
↓
質問内容が誤って送信されているため、AIの回答は的外れ。
↓
再度質問内容を打ち直して送信する。
↓
チャットにゴミがあふれる。
AIとの質疑応答をどう管理するか
第一の解決策(チャットを分割する)
今のAIは比較的単純な質問には適切な回答を返してくれる。その内容は、1~2年前に比べると圧倒的に質が上がっている。ただ、私の場合は、AIにアイデアの提示や、アイデアのブラッシュアップを求めることが多い。そして出してもらったアイデアに対して更に質問をしていくことが多い。中長期のマスタースケジュールの策定やブレインストーミング的な会話をすることも多い。そういう意味では私のAIの使い方にも問題があるのかもしれない。
とは言え、まずは一つのチャットで質問と回答の繰り返しを少なくすることを考えた。理想はAIと会話を行う際に、質問と回答を一つのチャットで完結させることだ。しかし、上でも書いた様に、私のAIの使い方は、質問と回答を繰り返すことが多い。なので、この第一の解決策は私のAIの使い方を変えることが前提であり、作業の内容からそもそも難しいので、早々に断念した。
第二の解決策(ごみを増やさない指示を出す)
指示を出す際に「質問内容が明らかに途中で送信されている可能性がある場合は、質問内容の推測を行わず、次の指示を待ってください。」と指示する。この指示を出すことで、質問内容が途中で送信されている場合は、質問内容の推測を行わないようにすることができると考えた。これは、ある程度うまくいったのだが、AIが指示を無視することもあった。さらに、チャットで会話が進むと、AIがこの指示を忘れてしまうのだった。なので、またこの指示を出す必要があるのだが、これも面倒であり、必ずしもAIが指示に従う訳でもないので、結局はこの解決策も断念した。
第三の解決策(チャットの内容を定期的にAIにまとめてもらう)
チャットの内容を定期的にまとめることで、チャットの内容を整理することができると考えた。まとめる際には、チャットの内容を要約するだけでなく、質問と回答を整理して、どの質問に対してどの回答が返ってきたのかを明確にすることも考えた。この解決策は、チャットの内容を整理することができるという点では有効だと思う。ただ、チャットの内容をまとめる作業が面倒であるという点では、あまり現実的ではないと感じた。さらに、チャットの内容をまとめる際に、AIが要約を作成することも考えた。しかし、AIが作成する要約は、私の期待する内容とは異なることが多く、あまり役に立たないことが多かった。なので、結局はこの解決策も断念した。
第四の解決策(チャットの内容をコピーして別エディターでまとめる)
チャットの内容をコピーして別エディターでまとめることで、チャットの内容を整理することができると考えた。この解決策は、チャットの内容を整理することができるという点では有効だと思う。ただ、チャットの内容をコピーする作業が面倒であるという点では、あまり現実的ではないと感じた。さらに、チャットの内容をコピーする際に、チャットの内容が一度にコピーできないことがあるため、コピーする作業がさらに面倒になることもあった。ただ、チャット間の情報引継ぎの為にも、情報をまとめて、保存しておくことは必要だと思った。
AIに聞いてみた
前回の記事で書いた様に、「AIプロンプト 整理 保存 アプリ」と言う内容で検索してみた。その際に、Windowsで利用する無料で使えるアプリとしてブラウザのAIから勧められたのが、Notion(ノーション)とObsidian(オブシディアン)だった。
NotionもObsidianも、検索すると大量の情報が出てくる。どちらもAIとの会話の内容を整理するのに適しているように見える。一般的な感覚だとNotion:個人・チーム向け、Obsidian:個人向けというイメージがある様だ。ただ、Obsidianはマークダウン形式で保存されるため、そもそもその時点では余りマークダウンに慣れていない私には、Notionの方が使いやすいのではないかと思った。
さらに電車内でスマホを使っていて、たまたまプロンプトの整理で検索したところ、偶然だろうが、Notionを勧められた。なので、とりあえずNotionを使ってみることにした。
Notionとは
Notionは、ノート、タスク管理、データベースなどの機能を備えたツールだ。個人のメモやタスク管理から、チームでのプロジェクト管理まで幅広く利用されている。ブロックベースのエディターを採用しており、テキスト、画像、動画、コードなどの様々なコンテンツを簡単に組み合わせてページを作成することができる。実は、ブロックベースのエディターを採用していることは利用始めてから知ったのだが、まあWordPressもブロックエディターを採用しているので、似たようなものだと思った。ただ、Notionでも、本文全体をコピーする際に、全ての内容を一度にコピーできないことがあった。「全体をコピーする」と言う問題にここでもぶつかるとは思わなかった。
あれ?解説と画面が違うんだが
Notionの解説動画を見ていると、画面のレイアウトが私のNotionの画面と違うことに気づいた。解説動画の画面は、左側にページの一覧が表示されているのに対して、私のNotionの画面表示されている項目が異なっているのだ。例えばデータベースの表示だ。解説動画では、データベースが左側に表示されているのに対して、私のNotionでは、データベースが表示されていないのだ。あれ?と思って、Notionの画面を色々と見てみると、どうやらNotionは、画面のレイアウトを自由にカスタマイズできるようになっていることがわかった。Notionの画面のレイアウトは、ユーザーが自由にカスタマイズできるようになっている。例えば、左側にページの一覧を表示することもできるし、データベースを表示することもできる。そこで、設定を見るのだが、どうやってもデータベースは出てこない。さらに確認するとデータベースが無いとデータベースと言う表示はされないのだという。さて困った。データベースの作り方を調べると、データベースはページの中に作成するものだということが書かれている。しかしデータベースの表示が無いのでどうやって作成するのかわからない。
データベースを作ったはずだけど、未だに左のセクションに「データベース」は現れていない。今はこれ以上詮索しないことにした。
テンプレート化
Notionはテキストをいろいろ管理してくれるツールだと思ったので、プロンプトを作成する際にあらかじめひな形(テンプレート)を用意しておき、そのテンプレートを呼び出すことで、プロンプトの品質を保てるのではないかと考えていたのだ。だから様々な利用シーンを考えてプロンプトのひな形を作ろうと考えたのだ。
Notion AIに聞いてみた―最初は意外な答え
Notion AIにテンプレートの作成方法を聞いてみた。すると、まず提案してくれたのは、新規ページを作って、以降はそれを複製して使うという方法だった。まあ、分からなくはない。手間がかからずに済むしね。でも、そうじゃないよね。それで良ければツールなんか使わず、適当なエディターで作成して、文書コピーしながら使えば良いじゃない。
追加で聞いてみた
なので、次の様に、イメージ化して、やりたいことをどうすれば良いか聞いてみた。
【私の質問】
私が行っているAIとの相談は一つのスレッド(相談事項)について複数会話にまたがる相談をしていて、別スレッドの初回スレッドに該当するものは2回目とはまた異なる。そして、さらにその後にプロンプトが続く形になる。下記のイメージで4回目のプロンプトがそれに該当。1回目の会話で確定した事項を抽出して受け渡す必要がある。
(相談のイメージ)
最初の会話
1回目のプロンプト⇒2回目のプロンプト⇒3回目のプロンプト
| | |
⇒ 1回目の回答 ⇒2回目の回答 ⇒ 3回目の回答
2番目の会話
4回目のプロンプト⇒5回目の会話
| |
⇒ 4回目の回答 ⇒5回目の回答
AIからの回答を少し長くなるけれど、引用したい。
【AIからの回答】
そのイメージだと、設計のコツは「DBを分ける/分けない」よりも、“相談スレッド”を親にして、プロンプト同士のつながり(何回目・どの会話セッションか・前のプロンプトはどれか)を持たせることです。本文テンプレが複数あっても、DBは1つで運用できます。
結論:あなたの図は「親=相談スレッド」+「子=プロンプト(時系列)」で綺麗に表現できますDB構成(おすすめ)
1) 相談スレッドDB(親)
1つの相談事項(案件)を1行で管理
2) プロンプトDB(子)(※初回/2回目以降/別会話の初回も全部ここに入れる)
1つのプロンプトを1行(1ページ)で管理
本文はテンプレで分岐(初回用/継続用/別会話の初回用 など)
3) 回答DB(子)(必要なら)
1つの回答を1行で管理
元プロンプト でプロンプトに紐付け(基本1つ、必要なら複数もOK)あなたの「1回目→2回目→3回目→(別会話の)4回目→5回目」を表すために、プロンプトDBに持たせると強いプロパティ
本文が違う前提でも、プロパティは共通でOKです。追加するならこのあたりが効きます。
必須級(管理に効く)
相談スレッド(Relation → 相談スレッドDB)
プロンプト番号(Number:1,2,3,4,5…)
会話セッション(Select:会話1 / 会話2 / 会話3…)
あなたの図の「最初の会話」「2番目の会話」を表すためあると便利(受け渡しに効く)
前のプロンプト(Relation → 同じプロンプトDB)
例:2回目は「前=1回目」、3回目は「前=2回目」、4回目は「前=3回目」みたいに張れる
※「別会話の初回」でも、スレッドとしては続きなので“前”を張れるのが強いです
プロンプト種別(Select:初回 / 継続 / 別会話の初回 など)
ここで本文テンプレを使い分ける
この形にすると、あなたの図は 「プロンプト番号」+「会話セッション」+「前のプロンプト」で完全に再現できます。
実は、もう少しいろいろと質問して、DBもAIに作ってもらっているうちに無料の制限が来てしまった。ただ、AIに質問したおかげで、やりたいことがある程度実現してしまった。
Notion利用で効果があったのか?
相談スレッドDBを親にして、プロンプトと回答を紐づけることで、一続きのスレッドを相談スレッドに紐づけることで複数のチャットにまたがる相談も追える。また、プロンプト用にいくつかページを用意しておき、ひな形として使うことも実装して、使っていくことにした。その結果、利用開始一日で相談DBには16個の相談が蓄積されて、44個のプロンプトと回答が蓄積される状況だった。Notionを使うことで確認できた効果を次にまとめておく。
ごみが減った
今まではAIからお回答を受けて、すぐに次の指示を行っていた。打ち間違いや途中送信はそういう状況もあって良く発生していた。ある意味私自身の責任もあったと思う。それが、指示をすぐに出すのではなく、一旦、前の回答を回答DBにコピペして、次のプロンプトを作成するという作業を挟むことで、確実に打ち間違いや、途中送信が減った。また、プロンプトを作るためのひな形に、AIが回答を行う際に無駄な情報は流さないことを明記した。それらによって、確実にAIが生み出していたゴミが減った。
複数チャットにまたがる相談自体が減った。
プロンプトをあらかじめ作っておいたひな形を活用して作ることで、今までなら、AIの記憶の壁に達してしまい改めて次のチャットに移動しなければいけなかったのが、1会話内で指示できるプロンプトの回数が増えたこともあり、概ね一つの会話内で相談が完結するケースが増えた。どうしても相談の内容から複数チャットにまたしてしまうケースは無くならないが、今までならコミュニケーションミスのために吐き出されたごみが減ったことで多くの相談が一つのチャットで済む用になった。
チャット全体のコピペが減った
もともとGeminiにもChatGPTにも指示単位でのコピー機能は存在している。Notionのページは指示単位に作成したので、一回一回コピーするのは面倒だが、特に特別なツールは不要で、AIのインタフェースが元々提供してくれる機能で済むので、全体のコピーが取れず感じていたモヤモヤがずいぶん減った。
Notionの限界(今後の課題)
おそらく自分でNotionと連携するプログラムを組むことが出来る様になれば限界と言う訳でもないのだが、現時点で感じたNotionの限界も分かってきた。
プロパティ(メタデータ)の手動入力の手間
まずは、基本的な機能を使う限り、過去のページを複製するのでない限り、あらかじめ作っておいたひな形に自動で項目を設定する機能は無い。なので、文章を作る際に、Notionページの本文とデータベース的に使う項目(プロパティ)には手動で、情報を設定する必要がある。まあ、面倒なのだが、その作業を通じてプロンプトの精度を上げているのだと割り切ることが必要だと思う。
リレーション先レコードの同時自動生成ができない点
基本的に、プロンプトと回答は1対1になる。なので、プロンプトページを作成する時に回答ページも同時に作成して欲しいのだが、そういうことは出来ない。(人間がプロンプトDBでページ追加した、さらに回答DBにページ追加をする。両者に共通のプロパティがあっても、両方ともに人間が手動で情報を設定しなければいけない。)ある意味当たり前な事だが、一気に作ってくれて、共通した項目は自動で情報を設定して欲しいとは思ってしまう。
Notionを今後も使うのか?
Notionの限界もあるが、効果は相当に大きい。なので当面はNotionを活用していきたいと思う。そしてNotionに記載したページが増えた段階で、少し自動化について考えてみようと考えている。Notionにはそもそもノーコードのツールなどもあるので、今後活用していこうと思う。
まとめ
AIへの指示を作成・管理し、AIからの回答を整理するために無料で使えるNotionを利用することにした。最初はNotionの使い方に戸惑うこともあったが、無料枠のAIに助けてもらって、利用を開始することが出来た。Notionの利用で、AIが吐き出すゴミが相当減り、打ち間違いや途中送信も減ったため、AI活用が効率的にできるようになった。
