From 75874f0dfa4080a9c9b5fa3240f6b87a72446a7d Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 22 Nov 2023 03:01:57 +0000 Subject: [PATCH] fix image fetching method --- .../agents/OpenAIAssistant/OpenAIAssistant.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts b/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts index ed7baf7de..b119599dc 100644 --- a/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts +++ b/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts @@ -358,7 +358,7 @@ class OpenAIAssistant_Agents implements INode { const dirPath = path.join(getUserHome(), '.flowise', 'openai-assistant') const filePath = path.join(getUserHome(), '.flowise', 'openai-assistant', `${fileObj.filename}.png`) - await downloadFile(fileObj, filePath, dirPath, openAIApiKey) + await downloadImg(openai, fileId, filePath, dirPath) const bitmap = fsDefault.readFileSync(filePath) const base64String = Buffer.from(bitmap).toString('base64') @@ -380,6 +380,22 @@ class OpenAIAssistant_Agents implements INode { } } +const downloadImg = async (openai: OpenAI, fileId: string, filePath: string, dirPath: string) => { + const response = await openai.files.content(fileId) + + // Extract the binary data from the Response object + const image_data = await response.arrayBuffer() + + // Convert the binary data to a Buffer + const image_data_buffer = Buffer.from(image_data) + + // Save the image to a specific location + if (!fsDefault.existsSync(dirPath)) { + fsDefault.mkdirSync(path.dirname(filePath), { recursive: true }) + } + fsDefault.writeFileSync(filePath, image_data_buffer) +} + const downloadFile = async (fileObj: any, filePath: string, dirPath: string, openAIApiKey: string) => { try { const response = await fetch(`https://api.openai.com/v1/files/${fileObj.id}/content`, {