fix prompt continuation for petals
This commit is contained in:
parent
54aac40788
commit
3b72f73080
|
@ -45,7 +45,7 @@ const chatModelBase = {
|
||||||
return prompts.reduce((a, m) => {
|
return prompts.reduce((a, m) => {
|
||||||
a += countMessageTokens(m, model, chat)
|
a += countMessageTokens(m, model, chat)
|
||||||
return a
|
return a
|
||||||
}, 0) + countTokens(model, getStartSequence(chat)) + ((prompts[prompts.length - 1] || {}).role !== 'assistant' ? countTokens(model, getLeadPrompt(chat)) : 0)
|
}, 0) + countTokens(model, getStartSequence(chat)) + countTokens(model, getLeadPrompt(chat))
|
||||||
}
|
}
|
||||||
} as ModelDetail
|
} as ModelDetail
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,12 @@ export const chatRequest = async (
|
||||||
const buildMessage = (m: Message): string => {
|
const buildMessage = (m: Message): string => {
|
||||||
return getRoleTag(m.role, model, chat) + m.content + getRoleEnd(m.role, model, chat)
|
return getRoleTag(m.role, model, chat) + m.content + getRoleEnd(m.role, model, chat)
|
||||||
}
|
}
|
||||||
|
const lastMessage = rMessages[rMessages.length - 1]
|
||||||
|
let doLead = true
|
||||||
|
if (lastMessage && lastMessage.role === 'assistant') {
|
||||||
|
lastMessage.content = leadPromptSequence + lastMessage.content
|
||||||
|
doLead = false
|
||||||
|
}
|
||||||
const inputArray = rMessages.reduce((a, m, i) => {
|
const inputArray = rMessages.reduce((a, m, i) => {
|
||||||
let c = buildMessage(m)
|
let c = buildMessage(m)
|
||||||
let replace = false
|
let replace = false
|
||||||
|
@ -96,7 +102,7 @@ export const chatRequest = async (
|
||||||
}
|
}
|
||||||
return a
|
return a
|
||||||
}, [] as Message[])
|
}, [] as Message[])
|
||||||
const leadPrompt = (leadPromptSequence && ((inputArray[inputArray.length - 1] || {}) as Message).role !== 'assistant') ? delimiter + leadPromptSequence : ''
|
const leadPrompt = (leadPromptSequence && doLead) ? delimiter + leadPromptSequence : ''
|
||||||
const fullPromptInput = getStartSequence(chat) + inputArray.map(m => m.content).join(delimiter) + leadPrompt
|
const fullPromptInput = getStartSequence(chat) + inputArray.map(m => m.content).join(delimiter) + leadPrompt
|
||||||
|
|
||||||
let maxLen = Math.min(opts.maxTokens || chatSettings.max_tokens || maxTokens, maxTokens)
|
let maxLen = Math.min(opts.maxTokens || chatSettings.max_tokens || maxTokens, maxTokens)
|
||||||
|
|
Loading…
Reference in New Issue