enh: allow image only message

This commit is contained in:
Timothy Jaeryang Baek 2025-02-11 21:52:31 -08:00
parent a5bba20915
commit 24cbc469cc
2 changed files with 242 additions and 234 deletions

View File

@ -1226,7 +1226,7 @@
selectedModels = _selectedModels; selectedModels = _selectedModels;
} }
if (userPrompt === '') { if (userPrompt === '' && files.length === 0) {
toast.error($i18n.t('Please enter a prompt')); toast.error($i18n.t('Please enter a prompt'));
return; return;
} }
@ -1478,7 +1478,7 @@
params?.stream_response ?? params?.stream_response ??
true; true;
const messages = [ let messages = [
params?.system || $settings.system || (responseMessage?.userContext ?? null) params?.system || $settings.system || (responseMessage?.userContext ?? null)
? { ? {
role: 'system', role: 'system',
@ -1499,8 +1499,9 @@
...message, ...message,
content: removeDetails(message.content, ['reasoning', 'code_interpreter']) content: removeDetails(message.content, ['reasoning', 'code_interpreter'])
})) }))
] ].filter((message) => message);
.filter((message) => message?.content?.trim())
messages = messages
.map((message, idx, arr) => ({ .map((message, idx, arr) => ({
role: message.role, role: message.role,
...((message.files?.filter((file) => file.type === 'image').length > 0 ?? false) && ...((message.files?.filter((file) => file.type === 'image').length > 0 ?? false) &&
@ -1524,7 +1525,8 @@
: { : {
content: message?.merged?.content ?? message.content content: message?.merged?.content ?? message.content
}) })
})); }))
.filter((message) => message?.role === 'user' || message?.content?.trim());
const res = await generateOpenAIChatCompletion( const res = await generateOpenAIChatCompletion(
localStorage.token, localStorage.token,
@ -2007,7 +2009,7 @@
} }
}} }}
on:submit={async (e) => { on:submit={async (e) => {
if (e.detail) { if (e.detail || files.length > 0) {
await tick(); await tick();
submitPrompt( submitPrompt(
($settings?.richTextInput ?? true) ($settings?.richTextInput ?? true)
@ -2050,7 +2052,7 @@
} }
}} }}
on:submit={async (e) => { on:submit={async (e) => {
if (e.detail) { if (e.detail || files.length > 0) {
await tick(); await tick();
submitPrompt( submitPrompt(
($settings?.richTextInput ?? true) ($settings?.richTextInput ?? true)

View File

@ -145,6 +145,7 @@
</div> </div>
{/if} {/if}
{#if message.content !== ''}
{#if edit === true} {#if edit === true}
<div class=" w-full bg-gray-50 dark:bg-gray-800 rounded-3xl px-5 py-3 mb-2"> <div class=" w-full bg-gray-50 dark:bg-gray-800 rounded-3xl px-5 py-3 mb-2">
<div class="max-h-96 overflow-auto"> <div class="max-h-96 overflow-auto">
@ -254,7 +255,9 @@
</svg> </svg>
</button> </button>
<div class="text-sm tracking-widest font-semibold self-center dark:text-gray-100"> <div
class="text-sm tracking-widest font-semibold self-center dark:text-gray-100"
>
{siblings.indexOf(message.id) + 1}/{siblings.length} {siblings.indexOf(message.id) + 1}/{siblings.length}
</div> </div>
@ -383,7 +386,9 @@
</svg> </svg>
</button> </button>
<div class="text-sm tracking-widest font-semibold self-center dark:text-gray-100"> <div
class="text-sm tracking-widest font-semibold self-center dark:text-gray-100"
>
{siblings.indexOf(message.id) + 1}/{siblings.length} {siblings.indexOf(message.id) + 1}/{siblings.length}
</div> </div>
@ -414,6 +419,7 @@
</div> </div>
</div> </div>
{/if} {/if}
{/if}
</div> </div>
</div> </div>
</div> </div>