What does your feature entail? What is it for? How will it affect existing workflows or user experience?
This feature would allow users to delete previous messages in chats with the Assistant.
Sometimes a good conversation can go off the rails for whatever reason: a user question that sends things off track, an tangent that was useful but uses up a lot of context length, or a response from the Assistant that is mostly good but contains something nonsensical or inaccurate that will pollute the context. (Or, heaven forbid, an unrecoverable error in the conversation!) In each of these cases, it's very useful to back up a step or two by deleting messages to get things back on track. In some cases, it's useful to edit either the Assistant's message or your own message (like the aforementioned mostly-good message, or a user query that was mostly good but needs more specificity).
Reasons to maybe not do this
- This would add another element (or two) to the delightfully uncluttered Assistant UI and would require a method for keeping the contents of the browser window and the contents of the chat session cache in sync.
- While OpenAI's interface allows editing the contents of user messages, it does not allow editing the content of responses; this suggests that it might be frowned upon (or disallowed) by providers.
- It would be a boon to power users, encouraging the most voracious users to cultivate long chats and send a whole bunch of tokens worth of context to the expensive LLM endpoints.
What are the exact ways that you see a user using your proposed feature? Please go into as much detail as possible, and provide examples of how other browsers/apps implement this feature, if applicable. If your feature suggestion adds on to an existing feature, how would it work into it to extend its usefulness?
- Choosing to edit a message would allow the user to edit the contents of a message element. It would behave the same way as typing a message in the "Ask a follow-up question" textarea.
- Choosing to delete a message would alert the user that the selected message and all subsequent messages would be deleted irreversibly. If the user confirms, the messages would be deleted.
- If the deleted message was a user message, display the "Ask a follow-up question" form as normal.
- If the deleted message was an Assistant message, populate the "Ask a follow-up question" form with the contents of the previous user message so that the conversation can continue.
This feature, while useful and powerful, has some things to consider from a user perspective:
- It's more of a power-user feature; it's meant for grooming longer chat sessions and isn't as useful in short sessions (which can just be restarted)
- It introduces destructive actions; there would not be a way to recover the previous chat
- It dispels the illusion of a trustworthy, all-knowing Assistant (although the "regenerate response" button already does that a bit)
- An action button on the user messages would introduce a chin to the message element 🙁
It may make sense to hide these features behind a "more" menu in line with the current "regenerate response" and "copy response" buttons. A confirmation step may also be necessary if the user intends to delete a message.
An alternative implementation
OpenAI implements somewhat similar functionality on their chat web interface; when you hover over a user message, a "pencil in a box" edit icon appears. Selecting that icon makes the user message editable with two buttons underneath: "Save and submit" and "Cancel". Pressing "Save and submit" removes all subsequent messages in the conversation and regenerates the LLM's response. This implementation is more limited than the one proposed but addresses the biggest "this chat went off the rails" problem.