Difyで実現する次世代の対話型思考ツール:ChatflowとIterationの活用事例
抽象的なお題を前にして「どこから考え始めたら良いのか…」と頭を抱えた経験、日々供給される情報洪水に埋もれて、自分は何を判断したかったのか迷子になってしまった、という経験はありませんか?
何かを考え始める際、とりあえず検索から始めてしまうことはやりがちなのですが、内田和成さんの『アウトプット思考』という本によると、これはあまり良いやり方とは言えないようです。
「まず、なるべくたくさんの情報を集め、整理する」というスタンスでは、差別化が難しいどころか、時間もお金も無駄になる。つまり、競争力を失う要因ともなり得るのだ。
(中略)
情報にかける時間は必要最低限にして、本当に大事な「考える」時間を増やすべきではないだろうか。
では、頭の中にあるふわっとした問題意識をどのように深めていけば良いのでしょうか?
我々のふわっとした要求を掘り下げ、思考過程の道筋に見通しをつけてくれる「思索の羅針盤」アプリを作ってみたので、本記事ではその設計方法の概要をご紹介したいと思います。
※このアプリを今すぐご自身のPC環境で動かしてみたい!という方は、こちらの記事をご覧ください(注: 2記事とも同じ内容です。英語の方が読みやすい方はMediumの記事をご覧ください。)
1.「思索の羅針盤」アプリの設計思想
このアプリは、LLMに4種類のタスクを実行させることで動いています。
- ユーザーの要望をもとに、仮想的なペルソナを生成させる
- ユーザーの要望をかなえるために検討すべき論点・質問事項を複数個生成させる
- 仮想的なペルソナを踏まえて、各質問に対する回答を生成させる
- Q&Aの結果を踏まえて、ユーザー要望を実現するために考えるべき論点・実現方法の仮説・深堀方針を生成させる
2. LLMを使うのは1回ではダメなのか?
冒頭のデモで投げかけた要望を、ChatGPTにそのまま聞いてみた場合と、LLMを複数回呼び出す「思索の羅針盤」アプリに聞いてみた場合の出力を比較してみましょう。
ChatGPTの場合(ユーザーの質問を、思考プロセスのステップを踏まずに処理する場合)は、ユーザーの要望に対する解決案そのものを提示してきます。一方、「思索の羅針盤」アプリの場合は、要望に対する解決案を考えるための観点や、次に深堀すべき方向性を提示しているのがわかると思います。
私がこのアプリに求めているのは「自分の代わり考えてもらうこと」ではなく「自分の壁打ち相手になってもらうこと」なので、自分主導で考える際の観点出し機能を重視し、このような仕様にしました。
チャットボットが提示してくる仮説はあくまで仮想ペルソナに基づいた仮説なので、それが自分の悩みとは合っていない可能性もありますが、それに気づくことさえできれば「自分はこういう点に悩んでいるのでその方向性で再考したい」と要求しなおせば良いのです。
3. DifyのChatflowでの実装方法
それでは、上述の設計思想を落とし込んだ、DifyのChatflowをお見せします。
- WorkflowではなくChatflowを選んだ理由は、ユーザーと何度も対話する形式のボットを作りたかったからです(何度も対話することでユーザーの「考えたいこと」はより明確になっていくはず)。
- 複数個の質問群について、対応する回答群を作らせるため、Difyのv0.6.9で追加されたイテレーション機能を使いました。
- また、質問群をArray[String]にするためにコードブロックを、回答群をStringにするためにテンプレートブロック(Jinja2)を使いました。
4. まとめ
今回は、知的生産プロセスにおける「論点整理」周りをサポートする生成AIアプリを作ってみました。事前情報がない状態で、視点や思考の方向性を見つけるという点においては、割と満足のいくものが作れたのではないかと思います。
一方で、事前にユーザーの情報が分かっていれば、RAGでそのデータを参照した上でよりユーザーに適した仮説を提示させる、ということもできそうなので、そのような方向性での改良にもチャレンジしてみたいです。
また、調査方針が見つかった後の生成AIサポートのあり方や実装方法についても、いろいろ考えてみたいです(Tavily SearchやFirecrawlなどをうまく使えば実装できるかもしれません)。
最近、思いついたことはすぐにプロトタイピングできるような環境が整備されてきているので、試行錯誤するのがとても楽しいです。
個人的に、「コンサルが装備しているような知的生産技術に生成AIを組み合わせることで、人の思考や意思決定プロセスを革新できるのでは?」という自由研究テーマに興味を持ち始めたので、進展があったらまた記事にしたいと思います。
Discussion