update trimmer logic
parent
95bf0aef6c
commit
746981ed9e
|
@ -46,10 +46,29 @@ export class ChatHistoryTrimmer {
|
||||||
return this.output;
|
return this.output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const systemPrompt = this.messages.find(m => m.role === 'system');
|
||||||
|
const firstUserMessage = this.messages.find(m => m.role === 'user');
|
||||||
const last = this.messages[this.messages.length - 1];
|
const last = this.messages[this.messages.length - 1];
|
||||||
|
|
||||||
|
this.output = [
|
||||||
|
tokenizer.truncateMessage(systemPrompt!, 100),
|
||||||
|
];
|
||||||
|
|
||||||
|
if (firstUserMessage === last) {
|
||||||
|
this.output.push(tokenizer.truncateMessage(firstUserMessage, this.options.maxTokens - 100));
|
||||||
|
} else {
|
||||||
|
this.output.push(tokenizer.truncateMessage(firstUserMessage!, 100));
|
||||||
|
this.output.push(tokenizer.truncateMessage(last, this.options.maxTokens - 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
excessTokens = this.countExcessTokens();
|
||||||
|
if (excessTokens === 0) {
|
||||||
|
return this.output;
|
||||||
|
}
|
||||||
|
|
||||||
this.output = [
|
this.output = [
|
||||||
tokenizer.truncateMessage(last, this.options.maxTokens),
|
tokenizer.truncateMessage(last, this.options.maxTokens),
|
||||||
]
|
];
|
||||||
|
|
||||||
return this.output;
|
return this.output;
|
||||||
}
|
}
|
||||||
|
@ -82,13 +101,13 @@ export class ChatHistoryTrimmer {
|
||||||
const output: OpenAIMessage[] = [...this.output];
|
const output: OpenAIMessage[] = [...this.output];
|
||||||
|
|
||||||
for (let i = 0; i < this.output.length && tokenizer.countTokensForMessages(output) > this.options.maxTokens; i++) {
|
for (let i = 0; i < this.output.length && tokenizer.countTokensForMessages(output) > this.options.maxTokens; i++) {
|
||||||
if (i == lastMessageIndex) {
|
if (i === lastMessageIndex) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (i !== systemPromptIndex && !this.options.preserveSystemPrompt) {
|
if (i === systemPromptIndex || this.options.preserveSystemPrompt) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (i !== firstUserMessageIndex && this.options.preserveFirstUserMessage) {
|
if (i === firstUserMessageIndex || this.options.preserveFirstUserMessage) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
output[i].content = '';
|
output[i].content = '';
|
||||||
|
|
Loading…
Reference in New Issue