Как работают и как ошибаются LLM: риски, возможности, результаты 2024

Как ИИ помогает в обработке текстовой информации на примере реальных задач? Когда для этого подойдёт готовая большая языковая модель (LLM), а когда нужно обучать свою, и сколько это будет стоить? Прочитав статью, вы получите ответы на эти вопросы. Узнаете о самых успешных и самых провальных примерах применения LLM — и сможете определить для себя, есть ли смысл использовать такие решения в вашей компании.

В NLABTEAM мы более 20 лет разрабатываем модели машинного обучения для обработки естественного языка — решили собрать для вас свою экспертизу в полезный материал.

Что такое LLM и какие результаты уже получили компании, начавшие применять их

LLM (большая языковая модель, от англ. large language model) — это решение, которое оценивает вероятность последовательности слов в естественном языке, понимает контекст и предсказывает, какие слова будут идти далее в предложении. В основе лежит нейросеть, обученная на большом количестве неразмеченного текста.

Используется для:

  • автоматической генерации текста на разных языках;
  • классификации текста;
  • генерации гипотез;
  • машинного перевода;
  • распознавания речи;
  • обработки естественного языка и суммаризации (выделения смыслов);
  • создания программного кода;
  • получения быстрых ответов на вопросы в формате чат-бота.

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

Одними из самых прогрессивных LLM, доступных широкой публике, стали:

  • GPT-3 от компании OpenAI, её запустили Илон Маск и Сэм Олтмен,а Microsoft — инвестировала в развитие. Недавно компания презентовала продвинутую модель, GPT-4o, предлагающую ещё более впечатляющие возможности.
  • Llama 3* от компании Meta*, умеет не только работать с текстом, но и решать математические задачи.
  • Mistral AI, у истоков создания которой — Артур Менш, CEO стартапа, ранее исследователь Google DeepMind. Сейчас развитие проекта поддерживает MIcrosoft.
  • Command R+, новая модель от Cohere, в развитии которой примет участие Microsoft.
  • GigaChat — русскоязычная языковая модель от Сбера, поражающая качеством своей работы и умением объяснять сложные вещи просто.
  • YandexGPT — известное всем русскоязычным пользователям решение от Яндекса. Новая линейка генеративных моделей YandexGPT 3 подходит в том числе для IT-сферы.

Производители конечных продуктов для бизнеса на основе схожих архитектур создают специализированные модели, адаптации вышеперечисленных решений. Например: SpeechXplore от группы компаний ЦРТ для аналитики переговоров в контакт-центрах; Replit Ghostwriter для помощи в написании программного кода; WordAI для рерайтинга и пр.

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

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

  • Автоматизация обработки звонков. В компании МегаФон большая языковая модель позволяет быстро и эффективно обрабатывать большое количество звонков, снижая затраты на персонал.
  • HR-аналитика. Помогает определять настроения на основе сообщений сотрудников и понимать, когда у конкретного человека падает мотивация, наблюдаются негативные паттерны поведения, недовольство. В результате HR может оперативно среагировать и удержать сотрудника, пока не стало слишком поздно. Например, мы недавно работали над таким решением по запросу клиента, крупной российской компании.
  • Генерация текста для маркетинговых кампаний и блогов. Компания Phrasee использует LLM для создания заголовков и текстов электронных писем для клиентов.
  • Обработка запросов клиентов. DigitalGenius применяет LLM для автоматизации обработки запросов клиентов в службу поддержки.
  • Анализ отзывов клиентов. Revuze использует LLM-модель для анализа отзывов своих клиентов о товарах и услугах.
  • Создание персонализированных рекомендаций. Netflix создаёт персонализированные рекомендации для своих клиентов с помощью LLM. А в Яндекс.Дзен, благодаря LLM, пользователи получают более релевантный контент. Это повышает их лояльность и увеличивает время, проводимое в приложении.
  • Создание презентаций. Нейросеть может последовательно обработать серию запросов, ориентированных на создание слайдов презентаций с подходящими вам заголовками, текстовым и графическим наполнением. При этом слайдов будет столько, сколько вы запросите, в выбранном формате, pdf или pptx.

Как работают и ошибаются LLM, и к чему эти ошибки приводят

Как уже отметили, LLM работает путём оценки вероятности каждого слова в предложении на основе предыдущих слов. Изначально состоит из двух файлов: большого, с огромным множеством параметров (весов) и маленького, с 500 и более строками кода, используемого для запуска модели.

В «сердце» большей части LLM — модель трансформера, предложенная Google почти 7 лет назад. У неё есть три важнейшие для обучения LLM функции:

  • Энкодинг позиции (position encoding) — так модель учится понимать порядок слов в последовательности и использовать эту информацию для векторного представления слов (эмбеддингов, или embedding).
  • Самовнимание (self-attention) — за счёт этого происходит взаимодействие слов в последовательности, и модель понимает, на что в предложении нужно обратить внимание в первую очередь.
  • Многоголовое внимание (multi-head attention) — когда модель, многократно пробуя определить взаимосвязи между словами в тексте, учится понимать их безошибочно.

И здесь просится пример, как всё это выглядит на практике. Рассмотрим простое для человека предложение:

Мой друг Мартин завершил серьёзный исследовательский проект, но он не принёс желаемого роста выручки его компании.

У нас три существительных мужского рода, и хорошо обученная модель быстро определяет, к которому из них относятся местоимения «он» и «его». На основе этого может дать нам верный ответ на вопрос: «Чем увенчался проект вашего друга?» Однако в целом такой запрос мог бы запутать LLM, при недостаточном внимании разработчика.

Вот архитектура модели трансформера, которая поможет вам глубже погрузиться в вопрос последовательностей и зависимостей, лежащих в основе LLM:

<p>Ещё больше о технических деталях обучения языковых моделей можно узнать в <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DzjkBMFhNj_g&postId=1184299" rel="nofollow noreferrer noopener" target="_blank">видео от Andrej Karpathy</a>, учёного, бывшего директора по развитию ИИ и автопилотного зрения в Tesla, а также специалиста по глубокому обучению и компьютерному зрению в OpenAI</p>

Ещё больше о технических деталях обучения языковых моделей можно узнать в видео от Andrej Karpathy, учёного, бывшего директора по развитию ИИ и автопилотного зрения в Tesla, а также специалиста по глубокому обучению и компьютерному зрению в OpenAI

А так выглядят основные этапы процесса обучения, в том числе на основе модели трансформера:

<p>Более детально мы проиллюстрировали процесс в следующем большом разделе статьи, с примером обучения LLM для подбора оборудования из нашей практики</p>

Более детально мы проиллюстрировали процесс в следующем большом разделе статьи, с примером обучения LLM для подбора оборудования из нашей практики

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

  • Ошибки в подборе информации. Когда в ответ на один и тот же вопрос модель выдаёт связный ответ, который содержит ложную информацию (это называется галлюцинированием моделей).
  • Ошибки предсказания: когда она предсказывает слова или фразы, которые не соответствуют контексту предложения.
  • Ошибки грамматики: когда модель генерирует предложения с неправильной грамматикой или синтаксисом.
  • Ошибки семантики: неправильно понимает смысл предложения или отдельных слов.
  • Ошибки стиля: генерирует текст, который не соответствует стилю или тону оригинального текста.
  • Ошибки этического характера: когда модель не учитывает контекст и генерирует смыслы, противоречащие общепринятым нормам общения, морали.
Пример смысловой ошибки: описание нашего продукта INENEX, разработанного <i>только</i> для обследования кишечника. На основе <a href="https://vc.ru/ml/1148704-inenex-sistema-obektivnoy-ocenki-kachestva-endoskopicheskih-issledovaniy-kak-my-ee-razrabotali" rel="nofollow noreferrer noopener" target="_blank">статьи о продукте</a> нейросеть сделала неправильные выводы — указала, что решение подходит для большого перечня обследований, хотя это не так <br />
Пример смысловой ошибки: описание нашего продукта INENEX, разработанного только для обследования кишечника. На основе статьи о продукте нейросеть сделала неправильные выводы — указала, что решение подходит для большого перечня обследований, хотя это не так
Ещё один пример: нейросеть определила БАР как хроническую обструктивную болезнь легких, притом что автор вопроса подразумевал биполярное аффективное расстройство. Это не грубая ошибка, но ответ мог бы быть более многосторонним<br />
Ещё один пример: нейросеть определила БАР как хроническую обструктивную болезнь легких, притом что автор вопроса подразумевал биполярное аффективное расстройство. Это не грубая ошибка, но ответ мог бы быть более многосторонним

К чему приводят такие ошибки?

В первую очередь — к неожиданным и неправильным решениям поставленных задач. Будь то подбор спецификаций товара, приводящий к недовольству покупателей и бессмысленности внедрения LLM в процессы компании. Или же возможность манипуляции ответами модели и её использования с целью обмана общества.

  • Одним из самых громких скандалов, связанных с LLM-моделями, стал случай с ботом Microsoft Tay, который был запущен в Твиттере в 2016 году. Бот разработали для общения с пользователями и обучения на основе этих взаимодействий, но вскоре после запуска он начал публиковать расистские, сексистские и другие оскорбительные комментарии. Бот проектировали для обучения на основе взаимодействия с пользователями — и многие из них начали манипулировать им, посылая ему неприемлемые сообщения. В результате Microsoft был вынужден отключить решение менее чем через сутки после его запуска.
  • Другим громким скандалом стал случай с моделью GPT-3 от OpenAI, которая была использована для создания фейковых новостей и дезинформации. Модель способна генерировать убедительный текст, при с ложными на тот момент смыслами. Это вызвало опасения, что такие модели могут быть использованы для манипулирования общественным мнением и влияния на выборы.

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

Для уменьшения количества ошибок LLM-модель необходимо тестировать в реальных условиях, причём многократно и до тех пор, пока она не начнёт работать так, как вы ожидаете. Например, мы в таких случаях движемся спринтами по 1-2 недели на каждый, по результатам которых демонстрируем клиенту промежуточный результат и получаем обратную связь. Так мы проще и быстрее обнаруживаем сложности, устраняем их — и создаём качественное решение, готовое к «бою».

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

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

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

Затем её совершенствуют для конкретных задач, о которых мы писали выше.

Что нужно понимать при выборе решения для своих целей

Отвечает Сергей Егоров, CTO NLABTEAM:

Важный вопрос при выборе языковой модели — в каком виде эту модель можно использовать для своих задач? Есть компании, предоставляющие к ним доступ через внешнее API, программный интерфейс, либо страницу на сайте (как происходит в случае чат-ботов).

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

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

Когда стоит использовать готовую LLM, а когда — обучать свою

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

Вот основные сценарии, когда это уместно:

  • Для вас критически важна конфиденциальность. Используя готовую облачную модель для обработки ваших данных, вы так или иначе передаёте конфиденциальную информацию сторонней компании, разработчику готового решения. В некоторых компаниях это неприемлемо — рисков утечки нельзя допустить. При этом есть понимание, что на некоторых рутинных задачах можно сильно сэкономить, если внедрить LLM. Тогда обучение собственной большой языковой модели — ваш вариант. Модель можно развернуть как в облаке, так и локально — что предполагает ещё более высокую степень защиты данных.
  • В вашей сфере используется узкоспециализированная лексика. Тогда LLM обучается непосредственно под неё, с использованием словарей — так, чтобы при анализе естественного языка не возникало смысловых ошибок. Примеры таких сфер: медицина (и здесь будет уместно сказать о продукте Voice2Med от группы компаний ЦРТ для автоматизированного заполнения медицинских протоколов, и нашей адаптации этого продукта для мобильных устройств, Voice2Med Mobile — рекомендуем интереснейший кейс к прочтению); производство и подбор оборудования, проведение научных исследований в разных областях.
  • У вас есть большой объём данных, специфичных для сферы, и работа с эти данными может быть автоматизирована. И на основе этих данных вы хотите анализировать отзывы и жалобы клиентов, автоматизировать их общение со службой поддержки и менеджерами по продажам первой линии. Ошибка чат-бота в таком общении может привести к потере покупателя, запутать его, порекомендовать неподходящий товар, перепутать адрес доставки. (Подробнее о том, как с помощью LLM решаются задачи по автоматизации работы менеджеров по продажам, Кирилл Левин, наш CEO, рассказывал в статье.)

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

Как мы решаем узкие запросы по разработке LLM: пример из практики

К нам обращаются с запросами на создание локальных LLM с нуля или копий общедоступных решений, которые будут использоваться только внутри компании.

Самый интересный запрос, с которыми уже работали — это автоматизация подбора оборудования. Делимся деталями работы.

Запрос. Разработать решение, которое позволило бы на основе общего описания оборудования покупателем вычленить его точные характеристики, а затем — подобрать по ним конкретную спецификацию.

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

Цель нашей работы — обучить языковую модель с низким коэффициентом вариативности ответов («уровнем фантазии»). Это значит, что ИИ будет хорошо понимать запрос, заданный в свободной форме, выделять характеристики оборудования точно — в том числе, к чему оно подключается, а к чему нет — и предлагать спецификацию оборудования, которое закажет конечный покупатель.

Для решения таких задач мы сводим «уровень фантазии» модели к нулю. И на основе как можно большего количества вариантов запросов покупателей обучаем её выделять нужные смыслы. Так постепенно снижаем уровень ошибок (точность ответов наших моделей составляет более 97 %) и заставляем инструмент работать на результат. Например, сокращение времени, которое затрачивают реальные люди на анализ запросов, а затем — полная автоматизация такой работы и экономия средств на отдел продаж.

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

При этом не используем облако, аналогичное закрытому от нас ChatGPT, а запускаем языковые модели локально. В случае с подбором оборудования, например, мы выделяем из свободного запроса атрибуты и далее работаем с ними. Делаем так, чтобы ответ модели был точным и однозначным, а не вариативным.

Работаем и над задачами более высокой сложности: когда нужно обучить модель на основе серии точно подобранных нами для клиента промптов выдавать данные в нужном виде. В инженерно-технических сферах это может доходить вплоть до автоматизации создания текста для коммерческих предложений (КП) — с декомпозированием полноценного запроса на десятки маленьких задач и подзадач и планированием порядка их выполнения.

Одному клиенту мы недавно помогли сократить процесс создания такого КП для его заказчиков с 3 дней до 2 часов (!). На его стороне сейчас — только сборка заранее подготовленного языковой моделью текста в оформленный документ и оценка стоимости. К слову, мы уже отчётливо видим, как автоматизировать и этот процесс.

Сергей Егоров, CTO NLABTEAM

Как долго обучать LLM, сколько это может стоить и как окупится

В среднем процесс создания решения на основе готовой LLM занимает от двух месяцев до одного года в зависимости от задачи. Стоимость начинается от 3 млн руб. в зависимости от объёма информации на входе и конечной цели разработки.

Важно понимать, что 3 млн руб. — не порог для входа. В 80% случаев обучать свою модель не требуется, и большинство задач решаются грамотной работой промпт-инженера.

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

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

И, что важно, мы поддерживаем решение на протяжении всего жизненного цикла, становясь для вас надёжным бизнес-партнёром на годы.

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

Кирилл Левин, CEO NLABTEAM

На сроки окупаемости решения влияют: качество разработанной и протестированной модели, скорость и правильность внедрения. А главным образом — готовность персонала к использованию решения, и руководителей — к контролю процесса и постоянному сопоставлению результатов до создания модели и после.

Чем качественнее будут выстроены процессы тестирования решения в реальных условиях, тем скорее такая работа окупится. Понимая это, мы в NLABTEAM помогаем своим клиентам ещё на старте проекта продумать процесс внедрения, проверки и анализа эффективности LLM. Оцениваем риски и предлагаем решение, глубоко погружаясь в конкретные задачи.

Мы предоставляем намного больше, чем просто услуги по разработке: становимся полноценным бизнес-партнёром для своих клиентов, и нас за это ценят.

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

Какие известные компании уже обучили собственные LLM под узкоспециализированные задачи

  • Мегафон разработала LLM для автоматизации работы с документами. Модель распознаёт текст на изображениях, классифицирует документы и выделяет необходимую информацию. Это позволяет сократить время на обработку документов и снизить риск ошибок.
  • «ВКонтакте» создала LLM-модель для анализа контента и выявления нежелательной информации. Модель умеет распознавать текст, изображения и видео, анализировать их содержание и выявлять нарушения правил сообщества.
  • Компания Zendesk, которая предоставляет программное обеспечение для управления взаимодействием с клиентами, разработала свою LLM-модель, которая автоматически классифицирует запросы клиентов и направляет их в соответствующую группу поддержки.
  • Американская компания JPMorgan Chase создала модель под названием COiN (Contract Intelligence) для анализа юридических документов и извлечения из них ключевой информации. Благодаря этой модели, компания смогла сократить время на анализ документов с нескольких тысяч часов до нескольких секунд.
  • Китайская компания Alibaba разработала LLM-модель для улучшения работы своей системы рекомендаций. Модель называется AliME (Alibaba Machine Reading Comprehension Engine) и помогает анализировать поведение пользователей на платформе, их предпочтения и интересы. С помощью этой модели компания улучшила качество рекомендаций и увеличить продажи.

Коротко о главном

  1. Практически любая бизнес-задача, которая связана с анализом имеющегося текста или речи и сейчас решается человеком, может быть автоматизирована современными AI на базе LLM. Это полезно в таких сферах, как: продажи, юриспруденция, маркетинг, искусство, медицина.
  2. LLM помогают решить даже сложные задачи: например, по разработке плана работ в технологических проектах и декомпозиции задач; написанию коммерческих предложений, в том числе в инженерно-технических сферах; автоматизацию заполнения медицинских протоколов и т. д.
  3. LLM обучается на основе большого количества текстовых данных и помогает пользователям получать ответы на вопросы. При этом уровень вариативности ответов настраивается в ходе обучения такой модели под конкретные бизнес-задачи.
  4. В 80 % процентов случаев для решения бизнес-задачи достаточно работы промпт-инженеров: специалистов, которые знают, как получить от языковой модели нужный ответ. Как ввести такой запрос, чтобы она выдала точную информацию в ответ.
  5. Существуют несколько способов дообучения LLM, они используются для глубокой адаптации языковых моделей под данные заказчика. Их стоит применять, только если не подходит решение с промпт-инженерами.
  6. Если у вас нет высоких требований к конфиденциальности данных, передаваемых языковой модели, и вам не требуются ответы на основе узкоспециализированной лексики, подойдёт готовое облачное решение. В ином случае лучшим решением будет установка собственных серверов для обработки языковых моделей.
  7. Подрядчик, которого вы выберете для решения вашей бизнес-задачи по интеллектуальной обработке текстовых данных, должен: уметь подобрать нужную языковую модель; располагать штатом промпт-инженеров для её настройки; уметь строить на базе LLM законченные бизнес-приложения, развёртывать их на локальных серверах и сопровождать их в течение жизненного цикла. Обратите внимание, что подрядчик должен вам предложить, в первую очередь, именно конфигурирование LLM через промпты. А если требуется дообучение, то грамотно обосновать это трудоемкое решение.

*Llama 3 — продукт компании Meta, признанной экстремистской организацией на территории РФ

*компания Meta, упомянутая в статье, признана экстремистской организацией на территории РФ

1111
5 комментариев

Интересно, дойдут ли когда нибудь подобные технологии до уровня когда валидация со стороны человека не потребуется.
Ну то есть операции хирургические (условно) - где вероятность ошибки компьютере допустима, и примерно равна вероятности человеческой ошибки (люди же тоже ошибаются), опустим моральные вопросы.
Не совсем по теме LLM)

3
Ответить

pixel, спасибо за ваш комментарий!

Действительно, вопрос очень интересный и пока открытый. Хочется поразмышлять в сторону того, будут ли и врачи, и пациенты одинаково готовы к этому при указанном вами сценарии. А ещё — стоит ли обществу терять способность врача думать и принимать решения в момент проведения операций, и кто будет юридически ответственен в случае «врачебной» ошибки в разных странах мира.

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

2
Ответить

Занимательно. Очень интересно было бы заглянуть в будущее и посмотреть, какие новые профессии появятся на фоне столь быстро растущей популярности ИИ для анализа текстов. И как изменятся старые.

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

2
Ответить

Камила, спасибо, что читаете нас!

Это действительно так. Развитие искусственного интеллекта — основа для появления новых профессий, а не то, чего стоит бояться специалистам. Но есть одно «но», о котором стоит знать всем, кто пользуется нейросетями — очень рекомендуем прочитать короткий пост Кирилла Левина по теме: https://t.me/IT_BTS/17

3
Ответить