Merge pull request #6727 from menloresearch/fix/prompt-token

fix: prompt token
This commit is contained in:
Faisal Amir 2025-10-03 20:12:12 +07:00 committed by Louis
parent 816d60b22a
commit 61c3fd4b5a
No known key found for this signature in database
GPG Key ID: 44FA9F4D33C37DE2
3 changed files with 31 additions and 9 deletions

View File

@ -332,12 +332,14 @@ export default class llamacpp_extension extends AIEngine {
) )
// Clear the invalid stored preference // Clear the invalid stored preference
this.clearStoredBackendType() this.clearStoredBackendType()
bestAvailableBackendString = bestAvailableBackendString = await this.determineBestBackend(
await this.determineBestBackend(version_backends) version_backends
)
} }
} else { } else {
bestAvailableBackendString = bestAvailableBackendString = await this.determineBestBackend(
await this.determineBestBackend(version_backends) version_backends
)
} }
let settings = structuredClone(SETTINGS) let settings = structuredClone(SETTINGS)
@ -2151,7 +2153,12 @@ export default class llamacpp_extension extends AIEngine {
if (mmprojPath && !this.isAbsolutePath(mmprojPath)) if (mmprojPath && !this.isAbsolutePath(mmprojPath))
mmprojPath = await joinPath([await getJanDataFolderPath(), path]) mmprojPath = await joinPath([await getJanDataFolderPath(), path])
try { try {
const result = await planModelLoadInternal(path, this.memoryMode, mmprojPath, requestedCtx) const result = await planModelLoadInternal(
path,
this.memoryMode,
mmprojPath,
requestedCtx
)
return result return result
} catch (e) { } catch (e) {
throw new Error(String(e)) throw new Error(String(e))
@ -2279,12 +2286,18 @@ export default class llamacpp_extension extends AIEngine {
} }
// Calculate text tokens // Calculate text tokens
const messages = JSON.stringify({ messages: opts.messages }) // Use chat_template_kwargs from opts if provided, otherwise default to disable enable_thinking
const tokenizeRequest = {
messages: opts.messages,
chat_template_kwargs: opts.chat_template_kwargs || {
enable_thinking: false,
},
}
let parseResponse = await fetch(`${baseUrl}/apply-template`, { let parseResponse = await fetch(`${baseUrl}/apply-template`, {
method: 'POST', method: 'POST',
headers: headers, headers: headers,
body: messages, body: JSON.stringify(tokenizeRequest),
}) })
if (!parseResponse.ok) { if (!parseResponse.ok) {

View File

@ -132,7 +132,10 @@ const ChatInput = ({
const activeModels = await serviceHub const activeModels = await serviceHub
.models() .models()
.getActiveModels('llamacpp') .getActiveModels('llamacpp')
setHasActiveModels(activeModels.length > 0) const hasMatchingActiveModel = activeModels.some(
(model) => String(model) === selectedModel?.id
)
setHasActiveModels(activeModels.length > 0 && hasMatchingActiveModel)
} catch (error) { } catch (error) {
console.error('Failed to get active models:', error) console.error('Failed to get active models:', error)
setHasActiveModels(false) setHasActiveModels(false)
@ -145,7 +148,7 @@ const ChatInput = ({
const intervalId = setInterval(checkActiveModels, 3000) const intervalId = setInterval(checkActiveModels, 3000)
return () => clearInterval(intervalId) return () => clearInterval(intervalId)
}, [serviceHub]) }, [serviceHub, selectedModel?.id])
// Check for mmproj existence or vision capability when model changes // Check for mmproj existence or vision capability when model changes
useEffect(() => { useEffect(() => {

View File

@ -578,6 +578,9 @@ export class DefaultModelsService implements ModelsService {
} }
}> }>
}> }>
chat_template_kwargs?: {
enable_thinking: boolean
}
}) => Promise<number> }) => Promise<number>
} }
@ -654,6 +657,9 @@ export class DefaultModelsService implements ModelsService {
return await engine.getTokensCount({ return await engine.getTokensCount({
model: modelId, model: modelId,
messages: transformedMessages, messages: transformedMessages,
chat_template_kwargs: {
enable_thinking: false,
},
}) })
} }