Vercel/src/services/openai.ts
2024-03-19 20:07:56 -05:00

42 lines
816 B
TypeScript

'use server';
import OpenAI from 'openai';
import { createStreamableValue, render } from 'ai/rsc';
const provider = new OpenAI({ apiKey: process.env.OPENAI_SECRET_KEY });
export const streamOpenAiImageQuery = async (
imageBase64: string,
query: string,
) => {
const stream = createStreamableValue('');
render({
provider,
model: 'gpt-4-vision-preview',
messages: [{
'role': 'user',
'content': [
{
'type': 'text',
'text': query,
}, {
'type': 'image_url',
'image_url': {
'url': imageBase64,
},
},
],
}],
text: ({ content, done }): any => {
if (done) {
stream.done(content);
} else {
stream.update(content);
}
},
});
return stream.value;
};