Add training messages to system prompt.
This commit is contained in:
parent
a3f60fee82
commit
5d617455c6
|
@ -154,27 +154,26 @@ export class ChatRequest {
|
|||
const content = m.content + (m.appendOnce || []).join('\n'); delete m.appendOnce; return { role: m.role, content }
|
||||
}) as Message[]
|
||||
|
||||
const chatResponse = new ChatCompletionResponse(opts)
|
||||
const promptTokenCount = countPromptTokens(messagePayload, model)
|
||||
const maxAllowed = maxTokens - (promptTokenCount + 1)
|
||||
|
||||
// Parse system and expand prompt if needed
|
||||
if (messagePayload[0]?.role === 'system') {
|
||||
const spl = chatSettings.sendSystemPromptLast
|
||||
const sp = messagePayload[0]
|
||||
if (sp) {
|
||||
if (messagePayload.length > 1) {
|
||||
sp.content = sp.content.replace(/::STARTUP::[\s\S]*::EOM::/, '::EOM::')
|
||||
sp.content = sp.content.replace(/::STARTUP::[\s\S]*::START-PROMPT::/, '::START-PROMPT::')
|
||||
sp.content = sp.content.replace(/::STARTUP::[\s\S]*$/, '')
|
||||
} else {
|
||||
sp.content = sp.content.replace(/::STARTUP::[\s]*/, '')
|
||||
}
|
||||
if (chatSettings.sendSystemPromptLast) {
|
||||
const splitSystem = sp.content.split('::START-PROMPT::')
|
||||
if (spl) {
|
||||
messagePayload.shift()
|
||||
if (messagePayload[messagePayload.length - 1]?.role === 'user') {
|
||||
messagePayload.splice(-2, 0, sp)
|
||||
} else {
|
||||
messagePayload.push(sp)
|
||||
}
|
||||
const splitSystem = sp.content.split('::START-PROMPT::')
|
||||
if (splitSystem.length > 1) {
|
||||
sp.content = splitSystem.shift()?.trim() || ''
|
||||
const systemStart = splitSystem.join('\n').trim()
|
||||
|
@ -186,9 +185,24 @@ export class ChatRequest {
|
|||
} else {
|
||||
sp.content = sp.content.replace(/::START-PROMPT::[\s]*/, '')
|
||||
}
|
||||
const eoms = (splitSystem.shift() || '').split('::EOM::')
|
||||
if (eoms.length > 1) {
|
||||
sp.content = eoms.shift()?.trim() || ''
|
||||
const ms = eoms.map((s, i) => {
|
||||
return {
|
||||
role: (i % 2 === 0) ? 'user' : 'assistant',
|
||||
content: s.trim()
|
||||
} as Message
|
||||
}).filter(m => m.content.length)
|
||||
messagePayload.splice(spl ? 0 : 1, 0, ...ms.concat(splitSystem.map(s => ({ role: 'system', content: s.trim() } as Message)).filter(m => m.content.length)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get token counts
|
||||
const promptTokenCount = countPromptTokens(messagePayload, model)
|
||||
const maxAllowed = maxTokens - (promptTokenCount + 1)
|
||||
|
||||
// Build the API request body
|
||||
const request: Request = {
|
||||
model: chatSettings.model,
|
||||
|
@ -224,6 +238,7 @@ export class ChatRequest {
|
|||
}
|
||||
|
||||
// Set-up and make the request
|
||||
const chatResponse = new ChatCompletionResponse(opts)
|
||||
try {
|
||||
// Add out token count to the response handler
|
||||
// (streaming doesn't return counts, so we need to do it client side)
|
||||
|
|
Loading…
Reference in New Issue