group-telegram.com/prompt_design/1377
Last Update:
Привет, это samlowry!
Когда Тёма написал пост про то, что мы возобновляем консультации из 12 обратившихся 5 задали вопрос о примерах автоматизаций, которые мы делаем. Действительно, подумал я, а давай-ка я начну вести на канале рубрику, в которой буду рассказывать какие-то детали о том, как мы делали тот или иной проект.
Итак, проект первый, публикую с разрешения заказчика
Нужно было разработать автоматизацию с использованием нейросетей для анализа рекламных картинок и видео. Автоматизация должна работать в n8n для удобства заказчика, нужно сканировать корпоративный Google Drive и в нём обрабатывать все файлы, отвечающие корпоративной системе наименования.
Каждый рекламный креатив нужно анализировать по проприетарной системе заказчика и заносить полученные параметры в соответствующие поля Google Spreadsheet.
В проекте было 2 интересных места:
Анализ видео Gemini
Слава силиконовым богам, уже не надо резать видео на опорные кадры и заливать кучу файлов в LLM — в Gemini 1) можно просто сначала кинуть видеофайл, 2) дождаться его распаковки, 3) задавать вопросы по загруженному видео.
Как водится, у n8n пока что нет полной поддержки API Gemini, поэтому городить интеграцию с Gemini API для залива видосов пришлось вручную.
Ну а дальше — дело промпта
Так как у нас вполне себе структурированный отчёт, то юзаем структурированный вывод в JSON. В случае с Gemini для этого достаточно указать в промпте "Return ONLY a valid JSON object (no markdown wrappers, no extra text, no explanations) matching the following schema" ну и задать правильное описание формата JSON - schema - это для вас может сгенерить любая LLM.
Основные танцы с бубном начались с доработкой промпта — чтобы в полях JSON были именно те показатели и выжимки, какие надо, а не те, какими их видит Gemini. Как обычно, пришлось маскимально точно формализовать, что же именно такое есть эти показатели. Для списка жанров рекламы в промпт пришлось добавить таблицу-справочник, где каждый жанр подробно формально расписан. Естественно, мы бы не смогли сделать этого сами без плотной работы с заказчиком.
Смешной/поучительный момент
Пока искал, как заливать файлы, нашёл, как «в интернетах пишутьб»:
- что ссылки на видео на Google Drive в промпте Gemini качает и обрабатывает
- нет, не те ссылки — а ссылки на Google Buckets
Друзья, будьте внимательны к подобным советам: если для http:// ссылок в промпте юзерский интерфейс Gemini сразу показал пометку о том, что ссылки не поддерживаются — то для gs:// всё прошло гладко, и только через несколько тестов я расстроился из-за того, что не то, что все параметры плавали — плавала даже цифра протяжённости видео, а судя по ризонингу Gemini использует линуксовую утилиту ffprobe и там всё должно быть мегаточно.
Читая портянки ризонинга я наткнулся на внутренний диалог Gemini о том, что он не может качать файлы с гуглбакета, поэтому он попытается проанализировать файл, основываясь на его названии. Результат был так правдоподобен, что я не сразу заметил, что нейросеть придумывает отчёты!
Обход всех низлежаших папок Google Drive
Это был второй интересный момент, я использовал запретную рекурсию — дочерний воркфлоу вызывает сам себя каждый раз, когда натыкается на новую папку. Сколько папок вложенности — столько и будет в один момент висеть воркфлоу в работе. Для n8n этот метод будет упираться в их платные ограничения, проблема решается установкой n8n на свой хост.
И именно поэтому рекурсия — довольно нелюбимый алгоритм в программировании. Тяжело отлаживать, тяжело читать, легко профукать ресурсы.
Но для ограниченной парадигмы langchain/langgraph
нод n8n, к сожалению, это наиболее простой в исполнении трюк.
Результат
Сейчас клиент проводит полное сканирование всей корпоративной базы рекламных креативов для последующего анализа полученных отчётов.
BY Силиконовый Мешок
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/prompt_design/1377