File size: 1,596 Bytes
cb33b9e 6a6f6eb faaabea 13080d4 8441328 058cd84 6a6f6eb aa396c5 6a6f6eb cb33b9e 6a6f6eb cb33b9e 8441328 cb33b9e faaabea cb33b9e faaabea cb33b9e faaabea cb33b9e 30090ae 28d7c08 30090ae 28d7c08 30090ae |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
import { MessageType } from '@/constants/chat';
import { IConversation, IReference } from '@/interfaces/database/chat';
import { isEmpty } from 'lodash';
import { EmptyConversationId } from './constants';
import { IMessage } from './interface';
export const isConversationIdExist = (conversationId: string) => {
return conversationId !== EmptyConversationId && conversationId !== '';
};
export const getDocumentIdsFromConversionReference = (data: IConversation) => {
const documentIds = data.reference.reduce(
(pre: Array<string>, cur: IReference) => {
cur.doc_aggs
?.map((x) => x.doc_id)
.forEach((x) => {
if (pre.every((y) => y !== x)) {
pre.push(x);
}
});
return pre;
},
[],
);
return documentIds.join(',');
};
export const buildMessageItemReference = (
conversation: { message: IMessage[]; reference: IReference[] },
message: IMessage,
) => {
const assistantMessages = conversation.message
?.filter((x) => x.role === MessageType.Assistant)
.slice(1);
const referenceIndex = assistantMessages.findIndex(
(x) => x.id === message.id,
);
const reference = !isEmpty(message?.reference)
? message?.reference
: (conversation?.reference ?? [])[referenceIndex];
return reference ?? { doc_aggs: [], chunks: [], total: 0 };
};
const oldReg = /(#{2}\d+\${2})/g;
// To be compatible with the old index matching mode
export const replaceTextByOldReg = (text: string) => {
return text.replace(oldReg, function (substring) {
return `~~${substring.slice(2, -2)}==`;
});
};
|