! Только для тех, кто разрабатывает свои AI системы
Пишу только потому что его нет в официальной документации, и мне самому было бы полезно узнать о нем откуда-то
Вводные:
1. Я сейчас активно использую Gemini в качестве поискового движка вместо эмбеддингов
2. Я работаю с PDFками
3. Я использую OpenAI-compatible API (тут гугл красавчики, конечно)
4. У OpenAI API нет поддержки пдфок
Короче, хочется и все плюшки OpenAI формата использовать, и при этом специфичные для гугла фичи, типа умения кушать PDF в обычном chat completion режиме.
Оказалось, есть незадокументированный способ это сделать. Используем методы OpenAI для загрузки изображений, но меняем
image/png на appication/pdf. Всё!messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt,
},
{
"type": "image_url",
"image_url": {"url": f"data:application/pdf;base64,{base64_file}"},
},
],
},
]
P.s. помним, что google читает пдфки с потерями (на вход идет раза в три меньше токенов, чем если грузить пдфку текстом). Для надежности лучше перегнать пдфки в текст, например в markdown через MarkerPDF и сравнить метрики двух подходов. На многих задачах оказывается, что достаточно отправлять PDF напрямую (+ в комментах потестили)