線形チャットUIのオルタナティブを考える
はじめに
ChatGPTなどの線形チャットUIはLLMと深く議論したり、試行錯誤を重ねながら考えを深めたりするには限界があるのではないでしょうか?
ユーザーは過去のメッセージを編集し再送信したり、別モデルによるレスポンスを生成したり、元の会話の流れを維持しつつ異なるアイデアを追求したい場合があります。
例えば木構造によるチャットUIは並行した対話スレッドを作成することでこの制約に対処します。
課題
とはいえ機能性とUIの複雑さはトレードオフの関係です。
分岐が増えるほど画面上の要素も増え、直感的に使いこなすには工夫が必要です。
実例
ここではいくつかのプロジェクトを紹介します。
Libre Chat
LibreChatはオープンソースのChatUIで、シンプルながら強力な拡張機能を持ちます。その1つとして会話のフォーク機能があります。
メッセージ編集と再送信
過去のユーザ発言を編集して再送信し、その時点から会話をやり直す「編集モード」があります。ChatGPTにも類似の編集機能がありますが、LibreChatでは編集前の履歴も保持したまま新たなスレッドを作成することでの分岐を管理できます。
スレッドのフォーク
任意の発話を起点に新しいスレッドを作成でき、元の会話履歴は保ったまま別の流れを平行して試せます。
詳細はLibre Chatドキュメントのフォークの説明にて。
chat-tree
OpenAIでSoraの研究開発を行っているMichael Chang氏によるchat-treeというアイデアです。
実際のデモもデプロイされているので実際に触ることもできます。
チャットをツリー構造で表示するWeb UIです。任意のメッセージからフォークアイコンをクリックして分岐できキャンバス上にノードが配置されます。
Michael Chang氏「人間は並列的な視覚処理が非常に得意です。ツリー全体を表示することで、人間は文脈全体を把握できるようになります。」
詳細は以下のスレッドにて。
Tangent
Tangentではチャットの各ブランチを実験として扱い、マージ、比較、破棄することができます。コンテキスト制限に達した会話を復活させたり、放棄されたスレッドを拾い上げたり、異なる議論間の隠れたつながりをマッピングしたりすることができます。
「チャットアプリ」というよりは、「思考のワークベンチ」のような感覚で、自由に実験したり、まだ可能性を秘めた古いスレッドを復活させたり、話題を転換したりできる場です。
詳細はGitHubにて、動画で概要を確認できます。
個人的な考え
個人的には分岐の操作はLibreChatのメッセージの編集と再送信による操作を踏襲したうえで新たなスレッドを作成する代わりにXのツリーやThreadsのスレッドのように分岐が起こる1つ前のメッセージを選択することで分岐したメッセージの一覧が見れるようなUIが1つ現実的な落としどころとしてよいのではないかと思っています。
デモ(追記)
これを実装したデモを公開しました。
以上この記事がLLMとの対話を行う新たなUIを考えるきっかけとなれば幸いです。
Discussion