feat: show routed model name when using openrouter/free
When the configured model is a routing endpoint like 'openrouter/free', the actual model used (e.g. 'upstage/solar-pro-3:free') is returned in the LLM response's 'model' field. We now extract that and display it as: Responded by upstage/solar-pro-3:free model from openrouter/free For any other model (e.g. 'llama3', 'gemma2'), we still show just: Responded by llama3 Implementation: - LLM client returns both requestedModel and actualModel - API endpoint builds a display-friendly modelLabel - Frontend uses modelLabel for the attribution line
This commit is contained in:
@@ -21,7 +21,8 @@ export interface ConvertResult {
|
|||||||
converted: string;
|
converted: string;
|
||||||
publicSystemPrompt: string;
|
publicSystemPrompt: string;
|
||||||
publicUserMessage: string;
|
publicUserMessage: string;
|
||||||
model: string;
|
requestedModel: string;
|
||||||
|
actualModel: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const INPUT_TAG_START = '###### USER INPUT START ######';
|
const INPUT_TAG_START = '###### USER INPUT START ######';
|
||||||
@@ -100,10 +101,15 @@ export async function convertText(
|
|||||||
throw new Error('LLM returned empty response');
|
throw new Error('LLM returned empty response');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OpenRouter's free router returns the actual model used in data.model
|
||||||
|
// e.g. requested "openrouter/free" -> actual "upstage/solar-pro-3:free"
|
||||||
|
const actualModel = (typeof data.model === 'string' && data.model !== merged.model) ? data.model : null;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
converted,
|
converted,
|
||||||
publicSystemPrompt: buildPublicSystemPrompt(styleModifier, intensityInstruction),
|
publicSystemPrompt: buildPublicSystemPrompt(styleModifier, intensityInstruction),
|
||||||
publicUserMessage: text,
|
publicUserMessage: text,
|
||||||
model: merged.model
|
requestedModel: merged.model,
|
||||||
|
actualModel
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -24,7 +24,7 @@ export interface ConversionResponse {
|
|||||||
intensity: number;
|
intensity: number;
|
||||||
systemPrompt: string;
|
systemPrompt: string;
|
||||||
userMessage: string;
|
userMessage: string;
|
||||||
model: string;
|
modelLabel: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LLMConfig {
|
export interface LLMConfig {
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
let error = $state('');
|
let error = $state('');
|
||||||
let systemPrompt = $state('');
|
let systemPrompt = $state('');
|
||||||
let userMessage = $state('');
|
let userMessage = $state('');
|
||||||
let modelName = $state('');
|
let modelLabel = $state('');
|
||||||
let showPrompt = $state(saved?.showPrompt ?? false);
|
let showPrompt = $state(saved?.showPrompt ?? false);
|
||||||
let copied = $state(false);
|
let copied = $state(false);
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
outputText = '';
|
outputText = '';
|
||||||
systemPrompt = '';
|
systemPrompt = '';
|
||||||
userMessage = '';
|
userMessage = '';
|
||||||
modelName = '';
|
modelLabel = '';
|
||||||
showPrompt = false;
|
showPrompt = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
outputText = result.converted;
|
outputText = result.converted;
|
||||||
systemPrompt = result.systemPrompt;
|
systemPrompt = result.systemPrompt;
|
||||||
userMessage = result.userMessage;
|
userMessage = result.userMessage;
|
||||||
modelName = result.model;
|
modelLabel = result.modelLabel;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
error = err instanceof Error ? err.message : 'Something went wrong';
|
error = err instanceof Error ? err.message : 'Something went wrong';
|
||||||
} finally {
|
} finally {
|
||||||
@@ -234,8 +234,8 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="output-text">{outputText}</div>
|
<div class="output-text">{outputText}</div>
|
||||||
{#if modelName}
|
{#if modelLabel}
|
||||||
<p class="model-attribution">Responded by {modelName}</p>
|
<p class="model-attribution">Responded by {modelLabel}</p>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,9 @@ export const POST: RequestHandler = async ({ request }) => {
|
|||||||
intensity,
|
intensity,
|
||||||
systemPrompt: result.publicSystemPrompt,
|
systemPrompt: result.publicSystemPrompt,
|
||||||
userMessage: result.publicUserMessage,
|
userMessage: result.publicUserMessage,
|
||||||
model: result.model
|
modelLabel: result.actualModel
|
||||||
|
? `${result.actualModel} model from ${result.requestedModel}`
|
||||||
|
: result.requestedModel
|
||||||
};
|
};
|
||||||
|
|
||||||
return json(response);
|
return json(response);
|
||||||
|
|||||||
Reference in New Issue
Block a user