messageToChatInput.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { Message, ContentItem, InputMessage, } from "../foundation";
  2. import { Attachment, Content, MessageContent } from "../../aiChatInput/interface";
  3. export default function messageToChatInput(message: Message): MessageContent {
  4. const attachments: Attachment[] = [];
  5. const inputContents: ContentItem[] = [];
  6. // const setup: Setup = {
  7. // model: message.model,
  8. // thinkType: message.thinkType,
  9. // thinkTime: message.thinkTime,
  10. // thinkDepth: message.thinkDepth,
  11. // };
  12. if (message.content && typeof message.content === 'string') {
  13. return {
  14. references: message?.references,
  15. attachments,
  16. inputContents: [{ type: 'text', text: message.content }],
  17. // setup
  18. };
  19. } else if (message.content && Array.isArray(message.content)) {
  20. (message.content as ContentItem[]).forEach((messageItem: ContentItem) => {
  21. if (messageItem.type === 'message') {
  22. const { content } = messageItem as InputMessage;
  23. (content as ContentItem[]).forEach((item: any) => {
  24. if (item.type === 'input_text') {
  25. inputContents.push({
  26. type: 'text',
  27. text: item?.text,
  28. });
  29. } else if (item.type === 'input_image') {
  30. attachments.push({
  31. name: item?.name,
  32. url: item?.image_url,
  33. status: 'success',
  34. size: item?.size,
  35. uid: item?.uid,
  36. });
  37. } else if (item.type === 'input_file') {
  38. attachments.push({
  39. name: item?.filename,
  40. url: item?.file_url,
  41. status: 'success',
  42. size: item?.size,
  43. uid: item?.uid,
  44. });
  45. }
  46. });
  47. }
  48. });
  49. }
  50. return {
  51. references: message?.references,
  52. attachments,
  53. inputContents: inputContents as Content[],
  54. // setup
  55. };
  56. }