diff --git a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageActions.svelte b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageActions.svelte
index 3cb48157d8..dbd9b98228 100644
--- a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageActions.svelte
+++ b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageActions.svelte
@@ -5,6 +5,7 @@
ChatMessageBranchingControls,
DialogConfirmation
} from '$lib/components/app';
+ import { Switch } from '$lib/components/ui/switch';
interface Props {
role: 'user' | 'assistant';
@@ -26,6 +27,9 @@
onConfirmDelete: () => void;
onNavigateToSibling?: (siblingId: string) => void;
onShowDeleteDialogChange: (show: boolean) => void;
+ showRawOutputSwitch?: boolean;
+ rawOutputEnabled?: boolean;
+ onRawOutputToggle?: (enabled: boolean) => void;
}
let {
@@ -42,7 +46,10 @@
onRegenerate,
role,
siblingInfo = null,
- showDeleteDialog
+ showDeleteDialog,
+ showRawOutputSwitch = false,
+ rawOutputEnabled = false,
+ onRawOutputToggle
}: Props = $props();
function handleConfirmDelete() {
@@ -51,9 +58,9 @@
}
-
+
+
+ {#if showRawOutputSwitch}
+
+ Show raw output
+ onRawOutputToggle?.(checked)}
+ />
+
+ {/if}
') ?? false
+ messageContent?.includes('<<>>') ?? false
);
const processingState = useProcessingState();
+ // Local state for raw output toggle (per message)
+ let showRawOutput = $state(false);
+
let currentConfig = $derived(config());
let isRouter = $derived(isRouterMode());
let displayedModel = $derived((): string | null => {
@@ -184,7 +187,7 @@
{:else if message.role === 'assistant'}
- {#if config().disableReasoningFormat}
+ {#if showRawOutput}
{messageContent || ''}
{:else if isAgenticContent}
@@ -258,6 +261,9 @@
{onConfirmDelete}
{onNavigateToSibling}
{onShowDeleteDialogChange}
+ showRawOutputSwitch={currentConfig.disableReasoningFormat}
+ rawOutputEnabled={showRawOutput}
+ onRawOutputToggle={(enabled) => (showRawOutput = enabled)}
/>
{/if}
diff --git a/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte b/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte
index 9964c95fc3..10583b6e21 100644
--- a/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte
+++ b/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte
@@ -273,7 +273,7 @@
fields: [
{
key: 'disableReasoningFormat',
- label: 'Show raw LLM output',
+ label: 'Enable raw LLM output switch',
type: 'checkbox'
},
{
diff --git a/tools/server/webui/src/lib/constants/settings-config.ts b/tools/server/webui/src/lib/constants/settings-config.ts
index a100a6e69e..15d8a351f6 100644
--- a/tools/server/webui/src/lib/constants/settings-config.ts
+++ b/tools/server/webui/src/lib/constants/settings-config.ts
@@ -94,7 +94,7 @@ export const SETTING_CONFIG_INFO: Record = {
custom: 'Custom JSON parameters to send to the API. Must be valid JSON format.',
showThoughtInProgress: 'Expand thought process by default when generating messages.',
disableReasoningFormat:
- 'Show raw LLM output without backend parsing and frontend Markdown rendering to inspect streaming across different models.',
+ 'Enable raw LLM output switch to show unprocessed model output without backend parsing and frontend Markdown rendering to inspect streaming across different models.',
keepStatsVisible: 'Keep processing statistics visible after generation finishes.',
showMessageStats:
'Display generation statistics (tokens/second, token count, duration) below each assistant message.',