- BrainTools - https://www.braintools.ru -
Я прочитал на Хабре [1], как Андрей Карпатый в пятницу вечером разозлился на рекомендации YouTube, а в субботу утром за два часа сделал HackerTube [2]: витрину из 6454 видео, которые участники Hacker News годами советуют друг другу. Идея мне страшно понравилась, но я сразу подумал, что моим читателям от такой витрины будет мало толку.
Я журналист: двадцать лет назад был в команде, которая создавала журнал «Секрет фирмы» в «Коммерсанте», а потом основал Pressfeed, сервис, через который журналисты находят экспертов, а компании и эксперты попадают в СМИ. Теперь я ещё делаю журнал «Сигнал» [3], где мы пересказываем на русском длинные интервью людей из мира технологий. И кажется очевидным, чего не хватает нашему читателю в проекте Карпатого: чтобы посмотреть даже самое лучшее видео, ему нужны английский, VPN и свободный вечер.
Поэтому захотелось сделать на тех же данных другой продукт. Не ссылку на видео, а карточку на русском с русским текстом главных моментов в интервью. Такая карточка читается за минуту и честно отвечает на главный вопрос: стоит ли это видео вообще открывать.
Карпатый выложил все данные под открытой лицензией ODC‑By и буквально поощрил делать форки. Ну а раз мы задумали омаж, то выглядит наш «Тьюб» так же как и его витрина, то есть как YouTube, посмотреть его можно здесь: signalnoise.ru/tube [4]. Но самое интересное в этой истории оказалось не в коде, а в том, что случилось, когда карточки начала писать модель.
Сначала о том, что сделал Карпатый. Он собрал все комментарии Hacker News с 2007 года и оставил те, в которых люди советуют видео на YouTube. В выгрузке, которую он опубликовал, таких размеченных комментариев 39 834, а видео 6454. В рейтинге HackerTube видео получает балл за каждый месяц, когда его кто‑то рекомендовал, и ещё половину балла, если совет был восторженным. Получается, что совет, который повторяют [5] годами, весит больше разовой вспышки интереса [6], и это кажется очень разумным.
Дальше начинается наша работа. Из всех 6454 видео мы взяли те, что размечены как интервью или подкасты, потому что именно этим занимается «Сигнал». Таких оказалось 435. Затем я убрал новостные однодневки и видео, которые на Hacker News только упоминали, но не советовали, и осталось 310. Из них я вручную выбрал 30.
На этом последнем шаге никакой формулы нет, это обычное редакторское решение. Я брал людей, которые делают технологии и бизнес, а медицину и политику пропускал, хотя выпуски про дофамин и сон [7] стоят в рейтинге очень высоко. Четыре интервью я поднял снизу, потому что они нужны журналу. Так что это не «топ-30» в строгом смысле, а редакторский отбор внутри рейтинга.
Всё работает локально, на Python, без очередей и баз данных. Сначала yt‑dlp забирает субтитры, чаще всего автоматические. Потом мы режем их на блоки примерно по минуте, у каждого блока есть таймкод. Эти блоки вместе с комментариями с Hacker News получает Claude Sonnet и возвращает JSON с карточкой: кто говорит, три главные мысли, цитата, вердикт. После этого код проверяет то, что модель утверждает о тексте, а Python собирает статические страницы, которые раздаёт nginx.
Обложки мы тоже делаем сами. Как и Карпатый, мы берём средний кадр видео, только дополнительно красим его в два цвета. Кадры я один раз скачал и храню у себя, поэтому браузер читателя к Google не обращается.
Главное правило конвейера: модель не может просто заявить, что герой это сказал. Английский оригинал каждой цитаты код ищет в расшифровке. Если он нашёлся символ в символ, цитата получает статус «точно», если нашёлся очень похожий кусок, то «почти». Если не нашлось ничего, модель делает вторую попытку, а если и она не удалась, цитаты в карточке просто не будет.
Упрощённо сверка выглядит так:
frags = [f for f in (_norm(x) for x in re.split(r"...|…", quote))
if len(f.split()) >= 2]
found = [_find(f, words, text, starts) for f in frags] # точное совпадение или ratio ≥ 0.85
Из 30 цитат 26 совпали точно, 4 почти, а выбрасывать не пришлось ни одной. Таймкоды устроены так же: мы принимаем только номер блока, который действительно есть в транскрипте, поэтому ссылка «смотреть с 25:41» ведёт туда, куда обещано.
С цитатами такой приём работает, потому что их есть с чем сравнить. А вот остальной текст карточки код проверить не может, и именно там начались самые интересные находки.
Все 30 карточек мы вычитали и сверили сомнительные места с расшифровками. Вот что нашлось.
Самая неприятная ошибка [8] оказалась выдуманным фактом. Крису Сакке модель приписала личное банкротство, хотя в расшифровке он говорит обратное: банкротиться он отказался, чтобы не испортить будущую карьеру, и выплачивал долг сам. Формально все слова стояли рядом: долг, миллионы, личная ответственность. Модель просто договорила историю за героя так, как такие истории обычно заканчиваются.
Вторая ошибка касается времени. Про разговор Карпатого с Лексом Фридманом модель написала, что он вышел, «когда ChatGPT только появился». На самом деле видео загружено 29 октября 2022 года, то есть за месяц до появления ChatGPT. Такую ошибку легко пропустить, потому что фраза звучит совершенно естественно.
Третья, самая частая и, по‑моему, самая опасная: красивые утверждения, которые нечем проверить. «Единственное длинное интервью», «нигде больше не задокументировано», «такого нет ни в одном учебнике». На 30 карточек таких фраз нашлось не меньше пяти. Они звучат как журналистская находка, но за ними ничего нет. В журнале я бы вычеркнул такое при первом чтении, потому что слово «единственный» нужно доказывать. Модель же пишет его так же легко, как любое другое.
Были и совсем технические огрехи. В советах читателю, например, оказалось «самое плотное в блоках 14–26»: для модели эти блоки реальны, а читателю они ни о чём не говорят.
Важно, что бывает и наоборот. Я заподозрил выдумку в истории о том, как шахматный компьютер Кена Томпсона конфисковали в аэропорту по дороге в Москву из‑за речи Рейгана. Она оказалась правдой, причём в автоматических субтитрах Рейган записан как «regen», и модель сама догадалась, о ком речь. Отсюда я вынес простое правило: подозревать надо не странные истории, а гладкие обобщения.
У каждой нашей карточки есть вердикт: смотреть целиком, смотреть отрезок или хватит карточки. Ради этого вердикта, собственно, всё и затевалось. В таблице видно, как он менялся от прохода к проходу:
|
Вердикт |
Первый проход |
С жёсткими правилами |
В итоге |
|---|---|---|---|
|
Целиком |
0 |
7 |
8 |
|
Отрезок |
25 |
23 |
18 |
|
Хватит карточки |
5 |
0 |
4 |
Все пять «хватит карточки» из первого прохода достались роликам короче пяти минут. Про длинное интервью модель не сказала «не смотри» ни разу. Зато она советовала отрезки длиной в час, а это уже трудно назвать ответом на вопрос.
Тогда я ужесточил промпт: отрезок должен быть не длиннее 25 минут, «хватит карточки» заслуживает примерно каждое третье видео, а если отрезок выходит за рамки, код просит модель переделать карточку. Стало только хуже. «Хватит карточки» исчезло совсем, минутные ролики переехали в «целиком», а длинные интервью так и остались в «отрезке». Часть отрезков на час пережила даже повторный запрос.
В итоге четыре вердикта «хватит карточки» поставил я сам: Биллу Гейтсу, Джеффри Хинтону, Джорджу Хотцу и Крису Сакке. И честно скажу, что это тоже мнение, а не истина. Видео целиком при этом никто не пересматривал, вердикт опирается на расшифровку, а ценность живой подачи по тексту оценить вообще трудно.
Похоже, сказать великому человеку «можно не смотреть» остаётся редакторской работой. Модель охотно пересказывает, но неохотно берёт на себя решение, за которое могут упрекнуть. Меня, старого журналиста, это, надо признаться, немного утешает.
Мы попробовали два режима. С размышлениями модель тратит 10–20 тысяч токенов на выход и 2–5 минут на одну карточку. Так я прогнал только несколько пробных карточек: вердикты там были разнообразнее, но выборка слишком мала для выводов.
Без размышлений карточка стоит около тысячи токенов на выход и занимает примерно 20 секунд. Один проход по всем 30 видео в три потока длится около 5 минут, а на вход при этом уходит примерно 640 тысяч токенов. Я выбрал этот второй режим и вычитку руками. Возможно, для вердиктов это была ложная экономия, но проверить это ещё предстоит.
Когда мы запустились, один читатель написал мне, что некоторые видео устарели: у того же Хинтона уже есть гораздо более сильные свежие интервью. Он прав, но так устроена игра. У Карпатого в HackerTube попадает только то, что сообщество Hacker News накурировало за 19 лет, других видео его концепция не допускает. А совет, повторённый за долгие годы, по его формуле весит больше всего, так что наверх сама собой поднимается старая классика. Мы же работаем с производной от его подборки, поэтому у нас это смещение сохраняется: самому свежему видео три года, а почти половине десять лет и больше.
Признаюсь, мне и самому поначалу было сложно погружаться в разговоры, которым 10 лет. Но когда втянулся, оказалось, что они потрясающе интересные и ценные, а многие из них нравятся мне больше новых. Джим Саймонс рассказывает, как математик построил лучший фонд в истории, Стив Джобс в 1994 году осбъясняет, что мир вокруг создан людьми не умнее вас, Ричард Фейнман в 1983-м объясняет физику у себя дома, без формул и доски. Ни одно из этих видео не выглядит сегодня устаревшим. Великие идеи и мысли не стареют, и, наверное, это и есть настоящая проверка и идеи, и мыслителя на качество.
Конечно, всё это без звериной серьёзности: мы просто веселились на выходных, как и сам Карпатый. Серьёзный отбор самых свежих и интересных интервью остаётся главной линией «Сигнала», и мы продолжим делать русские рекапы самых горячих видео глобальной техносферы. А заглянуть за кулисы всего это можно в моём Telegram‑канале [9].
А у меня теперь главный вопрос к вам. Мы отобрали 30 видео из шести с лишним тысяч. Что делать с Тьюбом дальше? Пишите ваши советы.
Мы показали форк самому Карпатому реплаем в X [10]. Под его постом больше тысячи реплаев, так что шансов немного, но посмотрим, заметит ли.
Автор: bocharsky
Источник [11]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/37944
URLs in this post:
[1] прочитал на Хабре: https://habr.com/ru/news/1102292/
[2] HackerTube: https://hackertube.org/
[3] «Сигнал»: https://signalnoise.ru
[4] signalnoise.ru/tube: http://signalnoise.ru/tube
[5] повторяют: http://www.braintools.ru/article/4012
[6] интереса: http://www.braintools.ru/article/4220
[7] сон: http://www.braintools.ru/article/9809
[8] ошибка: http://www.braintools.ru/article/4192
[9] Telegram‑канале: https://t.me/konstboch
[10] реплаем в X: https://x.com/kbocharsky/status/2117309946895179912
[11] Источник: https://habr.com/ru/articles/1102954/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1102954
Нажмите здесь для печати.