const { runWithModel } = require('./shared') /** * 入参:prompt, model, imageUrl * imageUrl:单张 data URL / https,或 **多张 URL 的数组**(与 OpenAI 多图 content 一致) */ async function executeImg2text ({ prompt, model, imageUrl, folderPath }) { const p = prompt != null ? String(prompt).trim() : '' let url if (Array.isArray(imageUrl)) { url = imageUrl.map((u) => String(u || '').trim()).filter(Boolean) } else { url = imageUrl != null ? String(imageUrl).trim() : '' } if (!url || (Array.isArray(url) && url.length === 0)) { return { success: false, error: 'img2text 缺少 imageUrl(或非空 URL 数组)' } } try { const result = await runWithModel('img2text', 'doubao_img2text', [p, url], model) if (!result.success) return { success: false, error: result.error || 'img2text 失败' } const data = result.data const text = data?.choices?.[0]?.message?.content ?? data?.choices?.[0]?.text ?? '' return { success: true, value: typeof text === 'string' ? text : String(text) } } catch (e) { return { success: false, error: (e && (e.message || String(e))) || 'img2text 异常' } } } module.exports = { executeImg2text }