| 13 | // } |
| 14 | |
| 15 | export default async function handler( |
| 16 | request: NextApiRequest, |
| 17 | response: NextApiResponse |
| 18 | ) { |
| 19 | const token = process.env.GPT3_SECRETS_KEY; |
| 20 | const result: message[] = await prisma.$queryRaw`select messages.id as |
| 21 | messageid, body from messages join "threads" on messages."threadId" = "threads".id |
| 22 | where "threads"."channelId" = '4c850a46-0114-46dd-af00-7b21eb8720b9' and "externalThreadId" = "externalMessageId";`; |
| 23 | |
| 24 | const trimmedMessages = result.map((m) => { |
| 25 | return { |
| 26 | body: m.body.slice(0, 2046), |
| 27 | messageId: m.messageid, |
| 28 | embedding: null, |
| 29 | id: null, |
| 30 | }; |
| 31 | }); |
| 32 | |
| 33 | // console.log(trimmedMessages); |
| 34 | |
| 35 | const res = await superagent |
| 36 | .post('https://api.openai.com/v1/engines/babbage-similarity/embeddings') |
| 37 | .set('Authorization', 'Bearer ' + token) |
| 38 | .send({ input: trimmedMessages.map((m) => m.body) }); |
| 39 | |
| 40 | const data: embeddingResponse[] = res.body.data; |
| 41 | |
| 42 | for (let i = 0; i < trimmedMessages.length - 1; i++) { |
| 43 | const message = trimmedMessages[i] as any; |
| 44 | message.embedding = data[i].embedding; |
| 45 | message.id = i; |
| 46 | } |
| 47 | |
| 48 | fs.writeFile( |
| 49 | 'embeddingResults.json', |
| 50 | JSON.stringify(trimmedMessages), |
| 51 | (write) => { |
| 52 | console.log({ write }); |
| 53 | } |
| 54 | ); |
| 55 | |
| 56 | return response.status(200).json({ trimmedMessages }); |
| 57 | } |
| 58 | |
| 59 | // export const getSlackChannelInfo = async (channelId: string, token: string) => { |
| 60 | // const url = 'https://slack.com/api/conversations.info'; |