| 12 | } |
| 13 | |
| 14 | export async function generatePromptFromThread({ |
| 15 | messages, |
| 16 | }: ConversationsRepliesResponse) { |
| 17 | if (!messages) throw new Error('No messages found in thread') |
| 18 | const botID = messages[0].reply_users?.[0] |
| 19 | |
| 20 | const result = messages |
| 21 | .map((message: any) => { |
| 22 | const isBot = !!message.bot_id && !message.client_msg_id |
| 23 | const isNotMentioned = !isBot && !message.text.startsWith(`<@`) |
| 24 | if (isNotMentioned) return null |
| 25 | |
| 26 | return { |
| 27 | role: isBot ? 'assistant' : 'user', |
| 28 | content: isBot |
| 29 | ? message.text |
| 30 | : message.text.replace(`<@${botID}> `, ''), |
| 31 | } |
| 32 | }) |
| 33 | .filter(Boolean) |
| 34 | |
| 35 | return result as ChatCompletionMessageParam[] |
| 36 | } |