vision-agent / lib /utils /message.ts
wuyiqunLu
feat: remove image from vision agent request param (#114)
cef4233 unverified
import { Message } from '@prisma/client';
import { MessageUI } from '../types';
/**
* The Message we saved to database consists of a prompt and a response
* for the API to use, we need to break them to 2 messages, User and Assistant(if responded)
*/
export const convertDBMessageToAPIMessage = (
messages: Message[],
): MessageUI[] => {
return messages.reduce((acc, message) => {
const { id, mediaUrl, prompt, result, chatId } = message;
// fileName could be null if it's example media url
const [prefix, fileName] = mediaUrl.split(`${chatId}/`);
if (mediaUrl && prompt) {
acc.push({
id: id + '-user',
role: 'user',
content: prompt,
media: [
fileName
? prefix +
`${chatId}/` +
encodeURIComponent(decodeURIComponent(fileName))
: mediaUrl,
],
});
}
if (result && result.type === 'final_code') {
acc.push({
id: id + '-assistant',
role: 'assistant',
content: result?.payload.code,
});
}
return acc;
}, [] as MessageUI[]);
};