Финал и подкапотные подробности истории со спасением проекта. Дни 6 и 7
Итак, подходит deadline сдачи проекта (Дни 1, 2, 3, 4, 5).
7:19 SGR Team: Выгрузку прислать не можем! Пайплайн вылетел ночью на неожиданных данных. Добавили try catch, больше параллелизма и запустили доделывать.
8:49 SGR: 27k сущностей, где-то 1k не хватает.
9:28 SGR: У нас не хватает несколько сотен сущностей, есть три категории ошибок:
(1) в 20 сущностях у нас нет ссылок на документы. Pipeline - чините!
(2) агент не может написать код инструмента в пайплайн
(3) есть классы документов с несколькими PDF. На такое мы были не готовы
Договариваемся, что eval team добавит новые три сущности в ground_truth (по одной на категорию ошибок). Это и новые документы в GT и очень неприятные кейсы в целом.
10:03 SGR: Третий класс ошибок исправлен
10:30 SGR: Второй класс ошибок исправили. Пришлось разрешить агенту адаптироваться.
11:50 SGR присылает выгрузку на 27407 сущностей.
12:48 Pipeline присылают фикс на последнюю категорию ошибок
14:11 Передаем клиенту данные на независимую проверку. Точность 83.8%(Карта ошибок в комментариях).
Следующий день
13:24 PM говорит, что команда клиента взяла 25 случайных продуктов и вручную сравнила наши данные с ожидаемыми.
Они нашли 4 ошибки среди 25*60 полей
Может, нам повезло с выборкой, может клиент тестировал не очень внимательно (на приемке, ага), может eval team просто собрали такой хардкорный датасет/бенчмарк. Но по факту, команда за 6 дней работы вместе подняла видимую клиенту точность на их выборке с ~60% до 99.7%.
Что дальше?
А дальше проект может катиться по колее. Процессы поставлены, люди знают, что делать. Добавление еще трех источников документов - не вызывает никаких вопросов. Как добавлять новые edge cases и контроллировать качество - тоже. Причем клиенту завели документ, куда он может добавлять ошибки (обязательно со скриншотами), чтобы потом eval team переносила их в ground truth, а SGR улучшала качество. Те 4 ошибки тоже торжественно занесли в документ.
Как оно работает под капотом?
Первый промпт: "Вот тебе PDF с кучей сущностей. Заполни шаблон анализа закономерностей". Да, там два предложения плюс SGR схема на 160 строчек кода (в ней где-то 20 каскадов на 80 полей)
Второй промпт: "Вот тебе PDF с кучей сущностей и анализ закономерностей. Напиши tool, который сможет разобрать название любого компонента и заполнить специфичные для него поля. Жесткие требования прилагаются."
Второй промпт работает как линейный SGR NextStep Agent. Пайплайн берет код полученного инструмента и запускает его. Если же есть проблемы/вопросы - добавляет edge cases в контекст и повторяет попытку.
Система сгенерировала 687 инструментов себе в пайплайн, общим размером 109922 строчек кода (или 4.5MB). Этот код не видел ни один человек (только я видел stack traces, когда ставил архитектуру). Размер и качество этого кода не имеют значения, пока у нас есть общий результат работы проекта - точность, скорость и стоимость.
(1) Точность работы - 83.8% на бенчмарке из самых сложных кейсов и 99.7% при оценке клиентом.
(2) Скорость работы - можно получить результаты за ночь (против 3.5-7 дней раньше). При желании можно и быстрее - выкрутив параллелизм. Лимиты - не проблема.
(3) Стоимость работы всего этого комбайна, включая разработку, эксперименты и полные прогоны пайплайна - $26.6 (против $800+ в попытках предыдущей команды). Скриншот расходов OpenAI по дням - в комментариях.
Архитектура не является ничем выдающимся - это побочный эффект от решения задачки, которую eval команда оформила в качественный ground truth датасет.
В этом проекте мы вложили половину времени - целых три дня - на сбор и запуск тестов. И это позволило получить нужный результат за оставшиеся три дня.
По итогам команды говорят, что получился классный тимбилдинг и экспресс-практикум. Даже не против повторения подобного, но без стресса (дней 8 вместо 6). А ведь все начиналось вечность назад как проект, который уже не спасти.
Спасибо, что читали эту историю и проживали ее вместе с командой проекта Hail Mary!
Ваш, @llm_under_hood 🤗
Post #656
14.6K
- 🔥 348
- ❤ 140
- 👏 51
- 👍 26
- 😁 3
- 🤝 2
- ⚡ 1
- 🤗 1