webui: Fix context available value in Multi-model Router mode (#17804)
* fix: Use context size from `/props?model=...` in ROUTER mode * chore: update webui build output
This commit is contained in:
parent
21f24f27a9
commit
e31b5c55c3
Binary file not shown.
|
|
@ -2,7 +2,11 @@ import { DatabaseService, ChatService } from '$lib/services';
|
||||||
import { conversationsStore } from '$lib/stores/conversations.svelte';
|
import { conversationsStore } from '$lib/stores/conversations.svelte';
|
||||||
import { config } from '$lib/stores/settings.svelte';
|
import { config } from '$lib/stores/settings.svelte';
|
||||||
import { contextSize, isRouterMode } from '$lib/stores/server.svelte';
|
import { contextSize, isRouterMode } from '$lib/stores/server.svelte';
|
||||||
import { selectedModelName, modelsStore } from '$lib/stores/models.svelte';
|
import {
|
||||||
|
selectedModelName,
|
||||||
|
modelsStore,
|
||||||
|
selectedModelContextSize
|
||||||
|
} from '$lib/stores/models.svelte';
|
||||||
import {
|
import {
|
||||||
normalizeModelName,
|
normalizeModelName,
|
||||||
filterByLeafNodeId,
|
filterByLeafNodeId,
|
||||||
|
|
@ -261,6 +265,13 @@ class ChatStore {
|
||||||
return activeState.contextTotal;
|
return activeState.contextTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isRouterMode()) {
|
||||||
|
const modelContextSize = selectedModelContextSize();
|
||||||
|
if (modelContextSize && modelContextSize > 0) {
|
||||||
|
return modelContextSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const propsContextSize = contextSize();
|
const propsContextSize = contextSize();
|
||||||
if (propsContextSize && propsContextSize > 0) {
|
if (propsContextSize && propsContextSize > 0) {
|
||||||
return propsContextSize;
|
return propsContextSize;
|
||||||
|
|
@ -458,6 +469,14 @@ class ChatStore {
|
||||||
onError?: (error: Error) => void,
|
onError?: (error: Error) => void,
|
||||||
modelOverride?: string | null
|
modelOverride?: string | null
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
// Ensure model props are cached before streaming (for correct n_ctx in processing info)
|
||||||
|
if (isRouterMode()) {
|
||||||
|
const modelName = modelOverride || selectedModelName();
|
||||||
|
if (modelName && !modelsStore.getModelProps(modelName)) {
|
||||||
|
await modelsStore.fetchModelProps(modelName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let streamedContent = '';
|
let streamedContent = '';
|
||||||
let streamedReasoningContent = '';
|
let streamedReasoningContent = '';
|
||||||
let streamedToolCallContent = '';
|
let streamedToolCallContent = '';
|
||||||
|
|
|
||||||
|
|
@ -158,6 +158,22 @@ class ModelsStore {
|
||||||
return this.modelPropsCache.get(modelId) ?? null;
|
return this.modelPropsCache.get(modelId) ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get context size (n_ctx) for a specific model from cached props
|
||||||
|
*/
|
||||||
|
getModelContextSize(modelId: string): number | null {
|
||||||
|
const props = this.modelPropsCache.get(modelId);
|
||||||
|
return props?.default_generation_settings?.n_ctx ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get context size for the currently selected model or null if no model is selected
|
||||||
|
*/
|
||||||
|
get selectedModelContextSize(): number | null {
|
||||||
|
if (!this.selectedModelName) return null;
|
||||||
|
return this.getModelContextSize(this.selectedModelName);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if props are being fetched for a model
|
* Check if props are being fetched for a model
|
||||||
*/
|
*/
|
||||||
|
|
@ -579,3 +595,4 @@ export const loadedModelIds = () => modelsStore.loadedModelIds;
|
||||||
export const loadingModelIds = () => modelsStore.loadingModelIds;
|
export const loadingModelIds = () => modelsStore.loadingModelIds;
|
||||||
export const propsCacheVersion = () => modelsStore.propsCacheVersion;
|
export const propsCacheVersion = () => modelsStore.propsCacheVersion;
|
||||||
export const singleModelName = () => modelsStore.singleModelName;
|
export const singleModelName = () => modelsStore.singleModelName;
|
||||||
|
export const selectedModelContextSize = () => modelsStore.selectedModelContextSize;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue