img2text.js 1.2 KB

1234567891011121314151617181920212223242526272829
  1. const { runWithModel } = require('./shared')
  2. /**
  3. * 入参:prompt, model, imageUrl
  4. * imageUrl:单张 data URL / https,或 **多张 URL 的数组**(与 OpenAI 多图 content 一致)
  5. */
  6. async function executeImg2text ({ prompt, model, imageUrl, folderPath }) {
  7. const p = prompt != null ? String(prompt).trim() : ''
  8. let url
  9. if (Array.isArray(imageUrl)) {
  10. url = imageUrl.map((u) => String(u || '').trim()).filter(Boolean)
  11. } else {
  12. url = imageUrl != null ? String(imageUrl).trim() : ''
  13. }
  14. if (!url || (Array.isArray(url) && url.length === 0)) {
  15. return { success: false, error: 'img2text 缺少 imageUrl(或非空 URL 数组)' }
  16. }
  17. try {
  18. const result = await runWithModel('img2text', 'doubao_img2text', [p, url], model)
  19. if (!result.success) return { success: false, error: result.error || 'img2text 失败' }
  20. const data = result.data
  21. const text = data?.choices?.[0]?.message?.content ?? data?.choices?.[0]?.text ?? ''
  22. return { success: true, value: typeof text === 'string' ? text : String(text) }
  23. } catch (e) {
  24. return { success: false, error: (e && (e.message || String(e))) || 'img2text 异常' }
  25. }
  26. }
  27. module.exports = { executeImg2text }