Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

utils.ts 1.6KB

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