Against Chat
The most prevalent interface of recent fame is undeniably the chat window. Today it feels ubiquitous, almost as if all interactions gravitate into a single indistinguishable blob. There may be many different reasons for this, some good, some bad, but for now this does not interest us any further. Instead I'd like to talk about LLMs (again). In particular about how they, when not thought of simply in terms of replacing, but augmenting existing interfaces, can lend software a dimension of fluidity that was previously unattainable. Since LLMs rose to prominence, I have wondered how they might eventually allow for novel ways to display information that previous rule-based, traditional algorithms never managed to. Our world is simply too messy to yield to their will. As part of my work on Mochi, I had the chance to implement and experience for myself what this kind of fluidity feels like in practice.
The term Gen-AI is already so politically charged that it is hard to disassociate it from the all-encompassing empty input field waiting for us at every turn. When hearing "fluidity" and "computing" in a single sentence, one might be tempted to think of the fever dreams some designers imagine as the future, where every user interface becomes infinitely malleable. While for some this might be counterintuitive, using LLMs to generate, rather than merely process, works best when we confine them to a narrow domain with strict rules they have to adhere to. This limits the uncertainty on both ends: the model doesn't have to bend over backwards to interpret our instructions, and what it produces naturally stays within the bounds of what we had in mind when we first envisioned the desired artifact.
I'm sure there are endless possible use cases I have not yet even considered, so I will limit myself for now to the one I do have personal experience with: dictionaries. Like many others, I use spaced repetition to study foreign languages. In practice this is a rather fancy way of describing (electronic) flashcards: a word on one side and its meaning on the other. Now, language is a delicate thing, and spanning semantic boundaries across languages means bridging differences in how cultures perceive the world. There is rarely a clean bijective mapping between concepts; instead, we end up with superficially related, but essentially different, words for the same idea. Most dictionaries offer a lemma, alongside some form of definition, or, in monolingual dictionaries, a paraphrase that strives to give an adequate explanation of its meaning. But just as concepts differ between languages, so does each learner's understanding of them, which rests on prior experience and knowledge. No pre-compiled resource can account for the countless permutations of possible questions individual learners might bring with them. Just as we might ask a teacher about the contexts in which a term applies, or how it relates to words we already know, we can now pose these questions to the computer and accommodate these differences.
Let's make all this abstract talk more tangible: After two months of doing spaced repetition to study Korean, I ended up with a bit less than 1,000 terms in my database of flashcards. Each of these has a field prosaically named "question", which allows me to pose a question to an LLM, with the contents of the current card as context. The field may be unused, in which case it is simply invisible. I use this special field type on around 40% of all my cards (exactly 432 as of ). These can be categorized as follows:
- Disambiguation
How is this different from 번호?
This was used to ask about 호수, 'number', which is easily confused with 번호, 'number'. You see why additional context might be necessary? - Contextualization
In what context is this commonly used?
This question appears verbatim across 50 different cards. - Collocation
With what verbs is this commonly paired?
- Rest
- One-offs that hardly generalize
From a technical perspective, what all of these have in common is the following:
-
The brevity and closed nature of a single question and answer pair
-
The targeted context that the LLM is exposed to
Compared to the conversation mimicry enforced by the chat window, we obviously give up some degrees of freedom when limiting ourselves to intentionally confined interactions like this, but the gains are undeniable.
First, practical concerns like context pollution are non-existent as there,
again, is (almost) no context that could get polluted to begin with. Second,
such a limited application permits smaller, seemingly less capable models, a
win on both economic and ecological grounds. Finally, there is no task being
completed on our behalf. The output is not something to skim and verify but
something we actively sought and attentively read. The artifact
is the textual answer itself. The question about the human
in the loop does not arise, because there is no loop in the first place. If
we instead weave their capabilities into the interfaces we already use, we
might eventually arrive at something far more productive.