Главная / Статьи

Режим агентного видео Gemini: проектирование схемы и смещение временных меток

Тестирование агентных и статических режимов видео Gemini на китайском художественном фильме: как проектирование схем влияет на точность временных меток, их смещение, цитаты и диапазоны времени.

Издатель: REACTAPP.TOP16 мин чтения3645 слов

Источники: Unlocking Gemini's Agentic Video Mode: Schema Design, Timestamp Drift, and Jay Chou's Secret

Недавно Google выпустил функцию понимания видео типа «агент», предназначенную для Gemini, и это стало отличным предлогом для проведения практических экспериментов с сложным тестовым случаем: полнометражным китайским фильмом Secret (2007) режиссера Джэя Чоу. Эксперименты сосредоточены на одном вопросе: если спросить модель о моментах в видео, когда появляются ключевые идеи, насколько точны временные метки, и насколько способ проектирования схемы вывода влияет на результат?

Вам понадобится GOOGLE_API_KEY, который AI Studio предоставляет в рамках приличного бесплатного тарифа. Подробности настройки приведены в приложении в конце.

Почему китайский фильм — хороший тест

Идея зародилась с учебного инструмента, созданного для помощи студентам в изучении заданного материала, хотя любознательные взрослые также могли извлечь из него пользу, сталкиваясь с неизвестными трудностями. Обнаружив, что модель Gemini Flash Lite может как подводить итоги текста на китайском языке, так и отвечать на вопросы на китайском, стало логичным расширить его функции с образовательных до развлекательных. Фильм оказался отличным вариантом, поскольку это романтическая история с акцентом на фортепиано, запоминающейся саундтреком и актрисой-главной героиней, которая справляется с тихими моментами сценария.

Внимание: здесь может быть спойлер — далее раскрывается главная тайна фильма. Исходным видео для тестирования является анализ фильма на YouTube, в котором рассказывается сюжет примерно до 16:23, после чего рассказчик переходит к анализу того, как сюжет был вдохновлен собственной жизнью Джэя Чоу. Сам фильм тем не менее стоит посмотреть благодаря музыке и тонким выражениям лица главной актрисы, причем на Bilibili имеются по меньшей мере две версии.

То, что делает этот тест по-настоящему сложным, — это язык. У китайского языка гораздо меньше автоматически сгенерированных транскрипций по сравнению с английскими видео, поэтому модель с самого начала ограничена в возможностях и должна показать, на что способна без такой поддержки. Чтобы понять содержимое, не обязательно уметь читать по-китайски, хотя это помогает лучше оценить результаты.

Почему важна неточность временных меток

Как в учебных, так и в развлекательных целях существует общая потребность в локализации временных меток — возможности сразу перейти к важным моментам. Студенты используют это для повторного изучения объяснений тех или иных концепций, а зрители — чтобы найти скрытые элементы и снова насладиться качественным повествованием.

Проблема постепенного смещения временных меток в аудио-транскрипциях Gemini часто обсуждается на форуме разработчиков Google. Надежным решением является использование более старой модели, не основанной на ИИ, однако это вряд ли может считаться интересным экспериментом; поэтому возникла надежда, что режим агентов покажет лучшие результаты.

Кратко: отклонения всё ещё наблюдаются. Примерно в 95% случаев ошибка остаётся в пределах одной секунды, но в некоторых случаях отклонения достигают 10–20 секунд. Интересно, что отклонения сосредотачиваются в одних и тех же участках, что достаточно хорошо, чтобы обычное использование не вызывало раздражения. Разработчики также могут позже отфильтровать некорректные временные метки путём сравнения с текстом с временными метками в определённом временном окне, при условии наличия такого текста.

Проектирование схем лучше, чем проектирование промптов

Схемы больших языковых моделей обычно записываются в формате JSON Schema. Библиотеки вроде Pydantic в Python или Zod в TypeScript позволяют определять их на уровне приложения и автоматически компилировать в JSON Schema перед вставкой в промпт. Уже по именам и типам переменных обычно можно предсказать, что вернёт модель.

По мнению экспериментатора, всё просто: странно, что инжиниринг промптов пользуется таким большим интересом, в то время как именно инжиниринг схем обеспечивает настоящую мощность. Схема кодирует практически всё поведение модели. Даже при среднестатистическом промпте модель может понять, чего вы хотите, на основе структуры и названий полей, тогда как при плохой схеме приходится полагаться только на себя и надеяться, что гениальный промпт спасёт ситуацию.

Есть параллели с моделированием данных в инжиниринге данных, но отличие в том, что схемы вывода больших языков моделирования более похожи на дизайн NoSQL-систем, таких как MongoDB, чем на реляционное моделирование, такое как Postgres. Одно из интересных решений касается рекурсивных структур: их можно закодировать в виде плоских таблиц с самореференцией, где поля child_id и parent_id позволяют создавать бесконечные цепочки. Провайдеры различаются в том, разрешают ли они вообще рекурсивные JSON-схемы, поэтому вам может приходиться делать выбор самостоятельно.

Чтение схемы

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

Одна концепция имеет множество меток времени. В преподавании это происходит, когда несколько концепций сравниваются для развития мышления высшего уровня после их введения. В кино это происходит, когда режиссеры используют воспоминания или рассказывают историю в неправильном порядке.

Записи меток времени содержат несколько свойств:

  • seconds указывает на момент возникновения события.
  • description объясняет смысл цитаты, что может помочь при интерпретации шуток или сценария.
  • quote — это фрагмент текста, полученный дословно в результате преобразования речи в текст.
  • visual указывает на то, можно ли визуально представить данный момент.
  • visualDescription — это подпись, описывающая то, что отображается на экране в этот момент.
  • Также существуют точки контроля, каждая из которых содержит conceptLabel, question и answer. В образовательных целях они позволяют проверить уровень понимания учащихся. В развлекательных целях они побуждают зрителей обратить внимание на то, что было упущено при первом просмотре, или рассмотреть события с другой точки зрения. Модель оказалась достаточно умной, чтобы использовать абсолютно тот же текст как для conceptLabel, так и для соответствующего label в разделе concepts — это небольшой, но значимый признак внутренней последовательности.

    Что изменялось

    Типичное время выполнения составляло около 20 секунд. Некоторые запуски завершались за 9 секунд, вероятно, потому что Google кэшировал запрос и повторно использовал результаты. Один запуск занял 50 секунд сразу после изменения запроса, скорее всего, до того, как сформировался кэш.

    Режим обработки — агентный против статического — сам по себе почти не влиял, причем большинство временных меток в обоих случаях фиксировались в пределах одной секунды. Агентные запуски иногда занимали вдвое больше времени (около 40 секунд), а иногда — меньше. Время выполнения скрипта действительно влияло на качество: при более длительном выполнении находилось больше временных меток на одну концепцию, а также генерировались более длинные описания и цитаты.

    Задание включало указание найти по крайней мере три метки времени для каждой категории понятий. Без этого указания модель часто находила лишь по одной метке на понятие. С его наличием метки времени становились немного более точными, и рабочая гипотеза заключается в том, что повышение частоты поиска оказывало побочное воздействие на точность. Стоит попробовать изменить число «три», чтобы увидеть, что произойдёт.

    Дополнительная просьба предусматривала поиск момента, когда была произнесена определённая китайская фраза — кульминация фильма, в которой огромный железный шар летит прямо на главного героя. Это заставляет модель сопоставлять аудио с точной фразой и определять момент её произнесения.

    Первый раунд: статичные волонтеры добавляют дополнительные поля, а агентные модели их игнорируют

    При первой попытке в статическом режиме возникала тенденция добавлять ключи visual и visualDescription, которые никогда не требовались схемой. Это происходило непоследовательно: в одной и той же обработке для некоторых временных меток эти ключи добавлялись, а для других — нет. visualDescription полезен для обеспечения доступности и заполнения баз данных поиска, поскольку ключевые моменты можно найти через сгенерированный описатель, и он оказывался точным во всех рассмотренных примерах.

    Только ключ quote всегда сохранялся в оригинальном китайском виде. Все остальные ключи могли появляться либо на китайском, либо в английском переводе, причем это происходило непредсказуемо в разных запусках, независимо от того, использовался ли агентный или статический режим. В обоих режимах временные метки были аккуратно упорядочены внутри и между концепциями, что облегчало ручную проверку.

    Режим агента генерировал более длинные описания, и такая тенденция повторилась при второй попытке. Также впервые появилась сцена, которая продолжала возвращаться: режим агента отмечал определённый момент как 10:41, хотя на самом деле он происходит в 10:50 в видео. Если бы в этом выводе присутствовало поле visualDescription, оно бы показало, действительно ли модель смотрела на 10:41 или на 10:50.

    Поле description при статическом запуске для одной записи просто повторяло её название (“Механика путешествий во времени”), что почти ничего не добавляло, хотя при последующих запусках появились более значимые различия. С положительной стороны, статический режим хорошо распознавал старую книгу по игре на пианино и героиню, закрывающую глаза, в поле visualDescription, и даже правильно идентифицировал персонажа. Режим агента же просто игнорировал необязательные визуальные параметры.

    Второй запуск: статический режим правильно определил момент 10:50

    В режиме Static снова были добавлены необязательные визуальные ключи, тогда как в режиме agentic их не было. Static также правильно определил момент 10:50, который в первой попытке режима agentic был неправильно помечен, хотя в той попытке текст был верным. Static обозначил visualDescription этого момента как «сцена воспоминаний», что вызвало вопрос: откуда у Gemini информация о том, что это воспоминание, а не текущая временная линия?

    В обоих режимах временные метки оставались в правильном порядке внутри каждой метки. Между метками режим Static представлял анализ рассказчика последовательно, тогда как режим agentic чередовал такие временные моменты, как 10:41, 17:00, 15:00 и 17:51.

    Первый отрывок от Static, зафиксированный в 16:31, использовал китайские скобки для названий книг, которые также появлялись на экране, что указывает на то, что модель сгенерировала изображение, а не опиралась исключительно на аудио. Как и раньше, Static использовала более короткие отрывки. Agentic растягивала свои отрывки до тех пор, пока их середина не обрывалась тире; её отрывок за 15:00 на самом деле охватывает период с 15:01 по 15:38, а отрывок за 17:51 — с 17:54 по 19:56.

    Этот последний период примечателен, поскольку с 17:54 по 19:56 приводится полное описание четырех финалов фильма. Это вызывает вопрос: а что, если в запросе также просили бы время окончания? Этот вопрос стал причиной следующего изменения структуры.

    Третья попытка: добавление диапазонов времени

    Поле seconds изначально было строкой, поэтому его пришлось переработать. Существует два варианта. Первый — это массив:

    "seconds": {
        "type": "array",
        "description": "The start and end time range in HH:MM:SS or ISO format, structured as [start_time, end_time].",
        "prefixItems": [
            {
            "type": "string",
            "description": "Start time (e.g., '00:01:15' or ISO 8601 string)"
            },
            {
            "type": "string",
            "description": "End time (e.g., '00:02:30' or ISO 8601 string)"
            }
        ],
        "minItems": 2,
        "maxItems": 2
        }
    

    Второй — это объект:

    "seconds": {
          "type": "object",
          "properties": {
            "start_time": {"type": "string"},
            "end_time": {"type": "string"}
          },
          "required": ["start_time", "end_time"]
        }
    

    Массив использует меньше токенов, но требует громоздких границ минимума и максимума, чтобы логика начала и конца оставалась работоспособной; он применялся в приведённых ниже экспериментах. Объект обеспечивает более понятные ключи, но его код требует больше места для чтения; однако он допускает наличие дополнительных ключей, поэтому вне экспериментов считается предпочтительным вариантом.

    Цитата — это не только аудио

    В режиме агента один интервал длился с 6:20 до 6:42, хотя цитата на самом деле начиналась в 6:30. description совпадал со словами аудиофайла буквально с 6:20 в течение восьми слов, после чего переходил к собственному перефразированию. Кажется, что задача формирования цитаты была разделена между quote и description.

    В другом диапазоне времени, с 8:13 до 9:00, цитата (примерно «взгляды встречаются») начиналась в 8:21, в то время как в описании говорилось «появиться снова», и главная героиня действительно появляется около 8:13. Это подтверждает идею о том, что диапазоны времени формируются не только на основе аудио. Цитата заканчивалась в 8:55, за пять секунд до окончания диапазона, без очевидной причины.

    Это позволяет предположить, что при анализе видео аудио должно тесно соответствовать тому, что видно на экране, иначе возникает путаница с временными метками. Однако нет ничего очевидного, что определяет, какой из каналов информации мультиканальная модель будет учитывать в большей степени при формировании временной метки. Это настоящая возможность для исследований, и более четкие эксперименты (полное аудио и видео против затемненного видео против приглушенного видео) помогут выявить причину.

    Два новых способа сбоя

    Третья попытка обработки этой повторяющейся сцены выявила новую ошибку. В режиме статического анализа участок с временем с 14:49 до 15:02 содержал цитату, которая на самом деле принадлежит к моменту 10:49, что составляет ошибку в четыре минуты. Это тот же момент 10:50, который был точно определён во второй попытке, но в первой попытке система ошибочно отнесла его к 10:41.

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

    Вторая ошибка: статическая цитата для периода с 15:07 до 15:17 (примерно «он собирается найти Сяою») вообще отсутствует в аудиофайле. Похоже, модель самостоятельно делала краткое изложение вместо точной транскрипции.

    Статический метод побеждает в тесте «игла в копне сена»

    Чтобы определить, можно ли найти конкретную цитату, запрос был дополнен информацией о моменте падения железного шара. До внедрения схемы временных диапазонов алгоритм static нашел момент 15:22, а алгоритм agentic — 15:00. После внедрения схемы static смог определить точный момент — 15:21, а также продолжил поиск до 15:26, когда шар попадает в здание и шум стихает. Алгоритм agentic показал худшие результаты, выдав диапазон с 15:00 до 15:37, который был слишком широким. На практике даже трехсекундная ошибка может иссякнуть терпение зрителя.

    Что показывают тесты

    Алгоритм static лучше справляется с поиском конкретных моментов, а алгоритм agentic — с обобщением идей, развивающихся в течение длительного времени. Разумный вывод заключается не в выборе победителя, а в выборе подхода в зависимости от задачи и длительности материала: использовать static для точного поиска или коротких клипов, где разница в затратах практически не имеет значения, а agentic — для обработки более длинных материалов, например 90-минутных лекций, где экономия ресурсов начинает играть важную роль.

    Судя по эксперименту с поиском, переход от использования временной метки к диапазону времени не изменил начальную точку, поэтому разумно всегда получать также конечное время, что даёт приложению гораздо больше возможностей для проектирования пользовательского интерфейса. Это похоже на использование векторных вкладок в системе поиска без фактического включения каких-либо данных.

    Диапазоны времени могут определяться несколькими факторами, а даже внутри текста — несколькими ключевыми элементами, как показывает модель передачи цитат. Возможно, схема должна быть проще, чтобы модель не путалась, или же следует чётко определить связь между производными и смежными полями, например, указав, что description должна формироваться на основе quote, или же решив, являются ли концепции независимыми или должны объяснять взаимосвязь между собой.

    Ещё один паттерн заслуживает упоминания. После запроса определённого временного диапазона сервис static полностью перестал генерировать поля visual и visualDescription. Одна из гипотез заключается в том, что модель сосредотачивается на обязательных полях и отбрасывает необязательные при высокой нагрузке. Сделав их обязательными, возможно, удастся решить проблему, хотя это может повлиять на качество других аспектов, поскольку на обработку этих полей останется меньше ресурсов. Это похоже на ситуацию, когда инструмент для генерации слайдов может создать отличные слайды в один раз, а в следующий раз вернуться к примитивному дизайну в виде стик-фигур, словно ему нужен отдых.

    Как это может развиваться дальше

    Изучение языков. В некоторых неопубликованных экспериментах запрос на отображение английского и китайского текста рядом на одной строке срабатывал даже без явного указания на это.

    Создание видео. Временные метки и диапазоны позволяют таким инструментам, как ffmpeg, обрезать и отредактировать материал так, чтобы главные идеи оказывались в начале. Искусственные нейронные сети здесь дают искажённый результат, поэтому для сохранения всего содержимого и удаления только фоновых звуков лучше использовать более специализированные инструменты преобразования речи в текст, такие как Descript или новая модель транскрипции Gemini от Google.

    Что делает возможной точную локализацию:

    • Навигация по конкретным моментам. Временные метки служат ориентирами, превращающими линейное видео в индексируемый и поисковый ресурс, заменяя необходимость ручного прокручивания.
    • Автоматизированные подборки лучших моментов. Благодаря возможности находить конкретные моменты без ручного сканирования создатели могут собирать сцены из разных видео, а преподаватели — формировать интерактивные уроки с временными метками.
  • Поиск по естественному языку во время лекций и собраний. Функция «найти именно эту строку» в кульминационной сцене фильма — это тот же прием, который студент может использовать при просмотре записи лекции: ввести наполовину запомненное предложение и перейти к моменту, когда оно было сказано.
  • Рассмотрение не только узлов, но и рёбер

    В текущей структуре большая часть информации сосредоточена в узлах. Как можно моделировать рёбра для дальнейшего улучшения пользовательского опыта? Следует ли перенести часть информации из узлов в рёбра, или существуют другие способы представления знаний помимо графа узлов и рёбер? Могут быть применены методы из книги Learn Like a Polymath: отношения «часть-целое», «причина-следствие», «объект-функция», «проблема-решение», «факт-мнение» и «пример-тип». Вероятно, большие языковые модели уже способны создавать такие аналогии, и секрет заключается в том, чтобы в нужное время задать правильный вопрос и представить ответ подходящим образом.

    Уже существует один вариант решения в приложении для изучения только текста, которое создаёт динамическую карту концепций во время чата. Там агент сам генерирует рёбра. Если спросить о пении, а затем о технике вокала, агент объединяет эти темы в связанные узлы, не получая указаний относительно их взаимосвязи; цветовая маркировка используется для обозначения основной темы, уровня абстракции, связи между узлами и деталей в качестве информации о рёбрах. Свойство checkpoints в этой схеме также имеет свой аналог в реальном времени — оно отмечает нерешённые вопросы и возможные заблуждения во время чата, которые затем устраняются по мере прояснения понимания.

    Эксперименты, которые ещё предстоит провести

    Они достаточно конкретны, чтобы их мог попробовать каждый, а также указано, что они могут раскрыть.

    Устранение конфликта модальностей. Передайте одно и то же видео четырьмя способами: с полным звуком, видео и субтитрами; с полным звуком и видео без субтитров, включая те, что уже встроены в изображение; с выключенным видео, то есть только звук; и с приглушенным видео, то есть только изображение. Если отклонения исчезают в версии с только звуком, это означает, что звук доминирует, а встроенные субтитры мешали полученному результату. Если отклонения сохраняются в версии с только звуком, но меняют характер в версии с только изображением, это является более убедительным доказательством того, что временные метки действительно являются мультимодальными, а не просто звуком с визуальным шумом.

    Кэширование и параметр температуры и их влияние на воспроизводимость. Приведет ли сочетание кэширования промптов с параметром температуры равным нулю к одинаковым результатам при каждом запуске? Если отклонения исчезнут при нулевом значении параметра температуры, модель будет сохранять одно стабильное, пусть и неидеальное, представление о моменте времени, а отклонения между запусками будут в основном связаны с шумом выборки. Если отклонения сохранятся при нулевом значении параметра, то для этого момента времени вообще не будет стабильного внутреннего временного метки.

    Следуют ли отклонения за содержанием или за позицией? Если они зависят от характеристик самого момента, таких как быстрые переходы, перебивание друг друга или громкая музыка, то где бы этот момент ни находился, речь идет о сбое, не зависящем от формата, который передается вместе с содержанием. Если же ситуация ухудшается в длинном видео, это может быть связано с другими факторами, возможно, с явлением «потери информации в середине», когда производительность ЯИ-моделей снижается при обработке информации, находящейся в середине контекста.

    Связывание записей между сегментами схемы. Может ли модель распознать, что два обозначения понятий, сгенерированных в отдельных вызовах или разделенных длинным контекстом, относятся к одному и тому же реальному понятию? Это классическая проблема связывания записей или разрешения сущностей, близкая к проблеме ко-референции, когда она возникает в рамках одного поколения. Это сработало однажды, когда модель использовала идентичный текст для параметров conceptLabel и label, но остается открытым вопрос о том, сохраняется ли последовательность между независимыми вызовами.

    Межъязыковая анкорация. Оцените, насколько точно Gemini преобразует устную китайскую речь в поля схемы на английском языке, сохраняя при этом точность временных меток.

    Измеряйте, а не оценивайте визуально. Простая таблица с указанием временных меток проверок, среднего отклонения, процента данных, попадающих в диапазон одной секунды, и наихудшего отклонения при всех шести попытках позволит перевести такие наблюдения из категории «замеченных» в категорию «измеренных», причем необходимые исходные данные уже существуют.

    Проверьте, улучшает ли требуемое visualDescription качество. По-видимому, по мере увеличения сложности схемы модель начинала удалять необязательные поля.

    Лекции, фильмы и память

    Лекция и фильм предъявляют к зрителю разные требования. Лекция требует внимания, а фильм — эмоций. Персонажи в истории — это не решённые проблемы, как в учебнике; их создают как настоящих людей, мотивы которых подлежат интерпретации. Часто не существует правильного ответа или чёткого решения, есть лишь компромиссы, а также необходимость извлечь максимум из неприятной ситуации, что становится уроком жизни, имеющим значение далеко за пределами одной темы.

    Невролог Оливер Сакс описал пациента по имени Клайв Уэринг, у которого амнезия не позволяла ему сохранять воспоминания дольше нескольких секунд, за исключением музыки, которую он всё ещё мог исполнять, читать и полностью вспоминать. Сакс выразился так: сила музыки должна застать человека врасплох и проявиться спонтанно как благословение.

    Это почти то, чем может стать для нас большая языковая модель: она не заменит память, но поможет справиться с её несовершенством, возвращая нас к важным моментам и приводя их в более связный порядок, когда мы растеряны и ошеломлены.

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

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

    Приложение: настройка и воспроизведение экспериментов

    Получите GOOGLE_API_KEY в AI Studio, затем экспортируйте его в своей оболочке:

    export GOOGLE_API_KEY=<your key>
    

    Чтобы избежать экспорта после каждой перезагрузки терминала, поместите ключ в файл .env и добавьте это в скрипт:

    from dotenv import load_dotenv
    load_dotenv()
    

    Проблемы с API

    Незнакомство с функцией client.models.generate_content() стало одной из причин проблем, а на странице представления продукта Google был показан код, использующий более новый API Interactions (client.interactions.create()), что наводило на мысль, что агентные видео не поддерживаются в старом API generate_content, пока документация не подтвердила обратное. Также не было ясности относительно того, как и можно ли указать определённые параметры, такие как краткое изложение мыслей. К этому добавились изменения в API Interactions в мае 2026 года, циклические ответы от собственного веб-чата Gemini, и настройка работы заняла несколько часов попыток.

    Пустые краткие изложения мыслей

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