| UI or UX | UI + UX - AI response regeneration and same-turn retry control with version and context preservation | UI + UX - Scoped failed-operation retry control | UI + UX - Multi-turn conversation surface with transcript, composer, assistant responses, and conversation history | UI + UX - Incremental generated-output surface that renders response chunks before final completion | UI + UX - Primary editable input surface for composing and submitting an AI request | UI + UX - Editable generated draft with provenance, review, and apply controls |
| UI guidance | Render regenerate / retry as a response-level control that names whether it will rerun the same prompt, continue after failure, regenerate a new answer version, or retry failed tool and source work. | Place Retry next to the failed operation, object, or request summary, and name the exact action being retried such as Retry export or Retry payment authorization. | Render chat as an ordered transcript with visible user and assistant roles, turn boundaries, timestamps or relative position, current draft composer, submitted prompt, response status, source or tool indicators, and conversation-level controls. | Render streamed output with a visible generation state, partial-answer label, stop control, final-complete state, and clear distinction between text that is still arriving and content that has passed final citation, safety, tool, or format checks. | Render the prompt box as a labelled, editable composer with visible draft area, send control, context chips, attachment controls, model or mode indicator when relevant, character or token boundary feedback, and clear disabled or blocked-send reasons. | Render editable AI output as a generated draft with a clear boundary between original generated text, user-edited text, tracked changes, source mapping, citation preservation, and final applied output. |
| UX guidance | Use regenerate / retry when users need another AI attempt for the same submitted request, or need recovery from a failed, stopped, low-quality, stale, blocked, or partially generated response. | Use retry when a specific operation likely failed for a transient reason and the same operation can be attempted again without losing user context or duplicating side effects. | Use a chat interface when users need a multi-turn assistant conversation where later prompts can depend on earlier turns, responses can be inspected or continued, and conversation history can be saved, resumed, deleted, or limited by policy. | Use a streaming response when showing partial generated output helps users start reading or monitoring work before the model finishes, and when the product can explain that early chunks may still change, be filtered, or lack final sources. | Use a prompt box when users need to author a natural-language request for AI generation, transformation, analysis, or automation and must remain in control of the exact request being submitted. | Use editable AI output when users need to revise generated content after creation while retaining provenance, citations, source coverage, and a deliberate apply or save contract. |
| Good UI | A chat answer shows Regenerate answer, Retry failed sources, and Compare versions with the original prompt, source scope, model, and tool changes visible. | A report export card says Export CSV failed, keeps the saved filters visible, shows Attempt 1 of 3, and offers Retry export with request EXP-2048. | A research assistant chat shows user and assistant bubbles, turn numbers, source chips, streaming status, Stop, Copy answer, Regenerate, New chat, and a conversations list with the active chat title. | A policy assistant shows Answer generating, streams paragraphs into a stable answer region, marks citations pending, exposes Stop generation, then changes to Complete when citations and safety checks finish. | An assistant composer labels the selected source as Contract draft, shows Attach file, Use selected text, Format: table, and Send, and blocks sending when the referenced file is no longer available. | A policy assistant shows a generated draft answer with citation chips, user-edited spans, tracked change controls, source mapping indicators, and Apply output disabled until unsupported edits are reviewed. |
| Bad UI | A Try again button silently changes the prompt, model, sources, and tools, then overwrites the previous answer and citations. | A generic Try again button appears after every error, including validation and permission failures users cannot fix by repeating the request. | A chat panel shows one undifferentiated wall of text with no user or assistant roles, no submitted prompt, and no visible conversation identity. | A generated answer appears word by word with no partial label, no stop control, and a Copy button that looks ready before sources arrive. | A blank AI field shows only Ask me anything and sends vague requests with hidden page context. | A final-looking answer becomes editable with no generated-versus-user-edited distinction, no citation preservation state, and no undo to the generated draft. |
| Good UX | A user sees answer v1 has stale citations, chooses Regenerate with refreshed sources, compares v1 and v2, then restores v1 because v2 lost a required caveat. | A user retries the same export after a network timeout, sees the attempt change to sending, and then returns to the recovered download state without re-entering filters. | A user asks for a policy summary, follows up with Compare that to the renewal clause, sees that the second answer used the first answer and selected file, then exports the two-turn transcript. | A user sees the first-token state quickly, reads early outline bullets while the answer continues, stops generation after enough detail, and sees the result labelled Partial with Continue and Regenerate options. | A user selects a policy paragraph, writes Summarize risks for a non-lawyer, sees Selected text and Output: bullets chips, submits, then edits and resends the exact prompt after the first answer is too broad. | A reviewer changes one sentence, sees it marked as user edited, accepts the tracked change, reviews a stale source warning, and applies the output only after unsupported text is resolved. |
| Bad UX | A user taps Regenerate and the product removes the original answer, so copied recommendations and review comments no longer have a version reference. | The app retries aggressively every second during an outage and makes the service harder to recover. | A follow-up uses prior conversation context after chat history has been switched off, without explaining that current-session context still exists. | A user copies an early legal recommendation before the final paragraph reverses the conclusion after a tool result arrives. | A user presses Enter expecting a new line and accidentally sends an unfinished prompt to an external model. | A user edits a generated compliance summary and all citations disappear, leaving no way to know which claims remain source-backed. |
| Best fit | A user needs another AI-generated answer for the same request or a visible recovery path after response failure. | A load, save, submit, upload, export, sync, payment, or background request failed for a transient or uncertain reason. | The user needs a back-and-forth assistant conversation with follow-up questions and answer refinement. | Generated text or structured content can be read or monitored before completion. | Users must write or revise an AI request before generation, analysis, transformation, or automation begins. | Generated content is expected to be revised before it is copied, saved, sent, published, or applied. |
| Avoid when | The task is a simple non-AI operation retry already covered by the Retry pattern. | The error is caused by invalid user input and correction is required. | The task can be completed with a single structured prompt box, form, or command. | Intermediate chunks may expose unsafe, private, or misleading content. | The task is better expressed as a fixed form, button, or command with known parameters. | Users only need to write or revise the request before generation. |
| Required state | Initial answer state with prompt snapshot, response version, source scope, model or mode, and available regenerate or retry controls. | Retryable failed state with affected operation, object, and preserved request context. | Empty new chat with conversation title, mode, history or retention status, and a labelled composer. | Queued or receiving state before first output arrives. | Empty prompt state with label, helpful instruction, and no implied hidden submission. | Generated draft state with original generated content, creation time, model or run reference, and source coverage visible. |
| Accessibility burden | Expose same prompt, changed context, regenerating, retrying, version created, compare available, cooldown, exhausted, blocked, and restored states as text. | Use an action label that names the operation, not only an icon or generic phrase. | Expose the transcript as an ordered region and use a sequential update strategy such as role=log for appended messages where appropriate. | Expose stream milestones such as started, still generating, stopped, failed, citation ready, and complete as status messages. | Provide a programmatic label for the prompt editor and named controls for send, attach, remove context, clear, retry, and cancel. | Expose generated draft, user edited, tracked change, unsupported edit, unsafe edit, stale source, review required, accepted, rejected, saved, copied, regenerated, and applied states as text. |
| Common misuse | Using one Try again button for same-prompt retry, prompt edit, tool retry, source refresh, and alternate answer generation. | Offering Retry for every error regardless of whether the user or system state can change. | Treating chat as a large textarea plus latest answer with no durable turn identity. | Showing a blinking cursor with no state, stop control, or elapsed feedback. | Showing Ask anything as the only instruction while hiding what sources and tools the model can use. | Letting users edit a final-looking AI answer without generated-versus-user-edited status. |