Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { MessageType } from '@/constants/chat';
  2. import { IConversation, IReference } from '@/interfaces/database/chat';
  3. import { EmptyConversationId } from './constants';
  4. import { IMessage } from './interface';
  5. export const isConversationIdExist = (conversationId: string) => {
  6. return conversationId !== EmptyConversationId && conversationId !== '';
  7. };
  8. export const getDocumentIdsFromConversionReference = (data: IConversation) => {
  9. const documentIds = data.reference.reduce(
  10. (pre: Array<string>, cur: IReference) => {
  11. cur.doc_aggs
  12. ?.map((x) => x.doc_id)
  13. .forEach((x) => {
  14. if (pre.every((y) => y !== x)) {
  15. pre.push(x);
  16. }
  17. });
  18. return pre;
  19. },
  20. [],
  21. );
  22. return documentIds.join(',');
  23. };
  24. export const buildMessageItemReference = (
  25. conversation: { message: IMessage[]; reference: IReference[] },
  26. message: IMessage,
  27. ) => {
  28. const assistantMessages = conversation.message
  29. ?.filter((x) => x.role === MessageType.Assistant)
  30. .slice(1);
  31. const referenceIndex = assistantMessages.findIndex(
  32. (x) => x.id === message.id,
  33. );
  34. const reference = message?.reference
  35. ? message?.reference
  36. : (conversation?.reference ?? {})[referenceIndex];
  37. return reference;
  38. };