Fix prompt message duplication issue.
This commit is contained in:
parent
77e3983d5e
commit
9803512c0b
|
|
@ -92,10 +92,14 @@ export const ChatSidebar = () => {
|
|||
|
||||
const countTokens = async () => {
|
||||
try {
|
||||
const messages: LLM.ChatMessage[] = [];
|
||||
const messages: ChatMessage[] = [];
|
||||
|
||||
if (input.trim()) {
|
||||
messages.push({ role: 'user', content: input.trim() });
|
||||
messages.push({
|
||||
id: crypto.randomUUID(),
|
||||
role: 'user',
|
||||
content: input.trim(),
|
||||
});
|
||||
}
|
||||
|
||||
const chatRequest = Prompt.compilePrompt(appStateRef.current, messages);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import LLM from "./llm";
|
||||
import Chapters from "./chapters";
|
||||
import { type AppState, CharacterRole } from "../contexts/state";
|
||||
import { type AppState, CharacterRole, type ChatMessage } from "../contexts/state";
|
||||
import { Tools } from "./tools";
|
||||
|
||||
namespace Prompt {
|
||||
|
|
@ -313,7 +313,7 @@ namespace Prompt {
|
|||
return parts.join('\n\n');
|
||||
}
|
||||
|
||||
export function compilePrompt(state: AppState, newMessages: LLM.ChatMessage[] = []): LLM.ChatCompletionRequest | null {
|
||||
export function compilePrompt(state: AppState, newMessages: ChatMessage[] = []): LLM.ChatCompletionRequest | null {
|
||||
const { currentStory, model, enableThinking } = state;
|
||||
|
||||
if (!currentStory || !model) {
|
||||
|
|
@ -332,12 +332,21 @@ namespace Prompt {
|
|||
storyTokenBudget = model.max_context - otherTokens;
|
||||
}
|
||||
|
||||
const messages: LLM.ChatMessage[] = [
|
||||
{ role: 'system', content: formatSystemPrompt(state, storyTokenBudget) },
|
||||
const messages: ChatMessage[] = [
|
||||
{
|
||||
id: crypto.randomUUID(),
|
||||
role: 'system',
|
||||
content: formatSystemPrompt(state, storyTokenBudget),
|
||||
},
|
||||
...currentStory.chatMessages,
|
||||
];
|
||||
|
||||
messages.push(...newMessages);
|
||||
const presentMessages = new Set(messages.map(m => m.id));
|
||||
for (const newMessage of newMessages) {
|
||||
if (!presentMessages.has(newMessage.id)) {
|
||||
messages.push(newMessage);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
model: model.id,
|
||||
|
|
|
|||
Loading…
Reference in New Issue