2025-03-04 17:25:46 -08:00
|
|
|
import { myProvider } from '@/lib/ai/providers';
|
2025-02-13 08:25:57 -08:00
|
|
|
import { createDocumentHandler } from '@/lib/artifacts/server';
|
2025-02-04 17:15:39 +03:00
|
|
|
import { experimental_generateImage } from 'ai';
|
|
|
|
|
|
|
|
|
|
export const imageDocumentHandler = createDocumentHandler<'image'>({
|
|
|
|
|
kind: 'image',
|
2025-02-05 18:11:19 +03:00
|
|
|
onCreateDocument: async ({ title, dataStream }) => {
|
2025-02-04 17:15:39 +03:00
|
|
|
let draftContent = '';
|
|
|
|
|
|
|
|
|
|
const { image } = await experimental_generateImage({
|
|
|
|
|
model: myProvider.imageModel('small-model'),
|
|
|
|
|
prompt: title,
|
|
|
|
|
n: 1,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
draftContent = image.base64;
|
|
|
|
|
|
|
|
|
|
dataStream.writeData({
|
|
|
|
|
type: 'image-delta',
|
|
|
|
|
content: image.base64,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return draftContent;
|
|
|
|
|
},
|
|
|
|
|
onUpdateDocument: async ({ description, dataStream }) => {
|
|
|
|
|
let draftContent = '';
|
|
|
|
|
|
|
|
|
|
const { image } = await experimental_generateImage({
|
2025-02-05 18:11:19 +03:00
|
|
|
model: myProvider.imageModel('small-model'),
|
2025-02-04 17:15:39 +03:00
|
|
|
prompt: description,
|
|
|
|
|
n: 1,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
draftContent = image.base64;
|
|
|
|
|
|
|
|
|
|
dataStream.writeData({
|
|
|
|
|
type: 'image-delta',
|
|
|
|
|
content: image.base64,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return draftContent;
|
|
|
|
|
},
|
|
|
|
|
});
|