mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-10-14 03:28:14 +00:00
feat(message-handling): fix repeated first token, think tag handling
closes #889
This commit is contained in:
@@ -399,6 +399,7 @@ export const ChatProvider = ({
|
|||||||
(m, j) =>
|
(m, j) =>
|
||||||
j > i &&
|
j > i &&
|
||||||
m.role === 'source' &&
|
m.role === 'source' &&
|
||||||
|
m.sources &&
|
||||||
(nextUserMessageIndex === -1 || j < nextUserMessageIndex),
|
(nextUserMessageIndex === -1 || j < nextUserMessageIndex),
|
||||||
) as SourceMessage | undefined;
|
) as SourceMessage | undefined;
|
||||||
|
|
||||||
@@ -417,7 +418,7 @@ export const ChatProvider = ({
|
|||||||
const closeThinkTag =
|
const closeThinkTag =
|
||||||
processedMessage.match(/<\/think>/g)?.length || 0;
|
processedMessage.match(/<\/think>/g)?.length || 0;
|
||||||
|
|
||||||
if (openThinkTag > closeThinkTag) {
|
if (openThinkTag && !closeThinkTag) {
|
||||||
processedMessage += '</think> <a> </a>';
|
processedMessage += '</think> <a> </a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -426,7 +427,11 @@ export const ChatProvider = ({
|
|||||||
thinkingEnded = true;
|
thinkingEnded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sourceMessage && sourceMessage.sources.length > 0) {
|
if (
|
||||||
|
sourceMessage &&
|
||||||
|
sourceMessage.sources &&
|
||||||
|
sourceMessage.sources.length > 0
|
||||||
|
) {
|
||||||
processedMessage = processedMessage.replace(
|
processedMessage = processedMessage.replace(
|
||||||
citationRegex,
|
citationRegex,
|
||||||
(_, capturedContent: string) => {
|
(_, capturedContent: string) => {
|
||||||
@@ -635,23 +640,22 @@ export const ChatProvider = ({
|
|||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
added = true;
|
added = true;
|
||||||
|
setMessageAppeared(true);
|
||||||
|
} else {
|
||||||
|
setMessages((prev) =>
|
||||||
|
prev.map((message) => {
|
||||||
|
if (
|
||||||
|
message.messageId === data.messageId &&
|
||||||
|
message.role === 'assistant'
|
||||||
|
) {
|
||||||
|
return { ...message, content: message.content + data.data };
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
setMessages((prev) =>
|
|
||||||
prev.map((message) => {
|
|
||||||
if (
|
|
||||||
message.messageId === data.messageId &&
|
|
||||||
message.role === 'assistant'
|
|
||||||
) {
|
|
||||||
return { ...message, content: message.content + data.data };
|
|
||||||
}
|
|
||||||
|
|
||||||
return message;
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
recievedMessage += data.data;
|
recievedMessage += data.data;
|
||||||
setMessageAppeared(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.type === 'messageEnd') {
|
if (data.type === 'messageEnd') {
|
||||||
|
Reference in New Issue
Block a user