Chatgpt кодированное изображение в base64

Вопрос или проблема

Я пытаюсь передать изображение в формате base64 в gpt-4o, но получаю ошибку 400: неверный base64 image_url.

Я использую следующий код:

const openairesponse = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
  { role: 'system', content: "Преобразуйте изображение в текст" },
  {
  "role": "user",
  "content": [
    {
    "type": "image_url",
    "image_url": {
      //Закодированное изображение в формате base64
      "url": "data:image/jpeg;base64,"+base64Image
    }
    }
  ]
  }
],
});

base64Image – это строка, начинающаяся с ‘/9j/’, и она должна быть действительной. Но openai возвращает недопустимый URL изображения.

Какие идеи, как это исправить?

Ответ или решение

Вы столкнулись с проблемой передачи изображения в формате base64 через API OpenAI, что приводит к ошибке "400 Invalid base64 image_url". Давайте разберемся с возможными причинами и путями решения этой проблемы.

  1. Проверка формата base64: Убедитесь, что ваша строка base64 действительно корректна. Строка должна начинаться с соответствующего префикса (‘data:image/jpeg;base64,’) и содержать только допустимые символы. Если вы видите символы, отличные от латинских букв, цифр и некоторых специальных символов (например, ‘+’, ‘/’, ‘=’), это может быть причиной ошибки.

  2. Правильный конструкция запроса: В вашем коде есть некоторые моменты, которые стоит обратить внимание. Описание сообщения с изображением в iвидео, осуществляется с помощью массива, тогда как обычно ожидается объект. Вот исправленный пример вашего кода:

const openairesponse = await openai.chat.completions.create({
  model: "gpt-4o",
  messages: [
    { role: 'system', content: "Convert the image to text" },
    {
      role: "user",
      content: {
        type: "image_url",
        image_url: {
          url: "data:image/jpeg;base64," + base64Image
        }
      }
    }
  ],
});

Обратите внимание, что content теперь представляет собой объект, а не массив.

  1. Проверка длины строки: Некоторые API имеют ограничения на длину строки. Убедитесь, что ваш код не превышает допустимые пределы. Если ваше изображение очень большое, возможно, стоит уменьшить его размер перед кодированием в base64.

  2. Отладка: Попробуйте распечатать итоговую строку URL перед отправкой запроса, чтобы убедиться, что она корректна:

console.log("Prepared image URL: ", "data:image/jpeg;base64," + base64Image);
  1. Альтернативные подходы: В некоторых случаях бывает полезно сохранить изображение временно на сервере и передать его URL-адрес вместо использования base64. Это может упростить процесс и устранить потенциальные проблемы с форматированием.

Если все перечисленное выше не помогло, возможно, стоит обратиться в службу поддержки OpenAI с просьбой о более подробной информации. Они могут предоставить более точные указания или уведомить вас о любых текущих ограничениях на использование изображений в вашем конкретном случае.

Надеюсь, эти рекомендации помогут вам решить вашу проблему и успешно передать изображение для обработки.

Оцените материал
Добавить комментарий

Капча загружается...