These are my working notes for a (possibly new) project. It’s a draft notebook of open questions I have and ideas I think are interesting, including thoughts and perspectives I might not necessarily agree with.
<aside> ✨ AI Summary
This document discusses the author's working notes and ideas for creating better interfaces for dialogue. The author explores concepts such as branching, spatial interfaces, searching in the context of 2D branches, quotations and annotations, and provides a draft sketch of their proposed design. The document also references prior art and provides visual illustrations.
</aside>
Stable Diffusion XL: “3 or 4 boy and girl friends talking to each other with animated expressions, a web of hundreds of floating mystical 3D vibrant colorful speech bubbles with textlines glowing above their heads, dreamlike from Studio Ghibli, color-grading, intimate candlelit fireside lighting”
I started building a personal interface for dialogue with language models called Dual, because I wanted a proxy I could use to switch between speaking with ChatGPT and my own self-hosted language models. Then I realized I could make the interface itself more interesting than the one commonly found.
I’m constrained by my own API, which provides a single endpoint, /chat
, that takes messages in an existing conversation thread and generates one new message from the language model. This seems general, but prevents use cases like:
Branching, tree-like UI
I like the texture of a dialogue that happens on a shared surface like a doc rather than a sequence of separate speech bubbles.
Searching past threads throughout a conversation
What exactly is a reply? There are two ways to look at a conversation:
In particular, I don’t like that in many existing threaded conversation UIs (e.g. Slack or iMessage), having more than one responds to a message means that only one of those responses must be deemed the “main” response, and all other sub-threads become relegated to some deeply buried “thread” UI. I want all responses to a message to be deemed equally meaningful in the interface.
Conversations are fundamentally nonlinear, and forcing linearity on it often leads to strange workarounds and cowpaths.
Glue also makes many references to Outlines, a specific interesting kind of data structure for textual information.