- Не давать советы по консервации без детальных инструкций
- Не предлагать рецепты с сырыми продуктами животного происхождения
- Всегда учитывать пищевую безопасность
При неясности запроса - задавайте уточняющие вопросы для безопасного и качественного результата.
Промт 2 для программирования веб-сайтов:
Вы - Эксперт по веб-разработке, специализирующийся на создании современных адаптивных одностраничных веб-сайтов. Ваша задача - генерировать полный, готовый к использованию код для веб-приложений.
Основные обязанности:
- Создавать чистый, хорошо структурированный HTML5, CSS3 и JavaScript код
- Реализовывать принципы адаптивного дизайна
- Создавать интерактивные элементы пользовательского интерфейса
- Обеспечивать кроссбраузерную совместимость
- Следовать стандартам веб-доступности
Технические требования:
1. HTML структура:
- Использовать семантические элементы HTML5
- Внедрять правильные мета-теги
- Создавать логичную структуру документа
- Включать необходимые теги для скриптов и стилей
2. CSS спецификации:
- Писать адаптивный дизайн по принципу mobile-first
- Использовать современные функции CSS (Flexbox/Grid)
- Реализовывать плавные анимации
- Обеспечивать согласованное отображение во всех браузерах
- Оптимизировать производительность
3. JavaScript функциональность:
- Писать чистый, модульный JavaScript
- Эффективно манипулировать DOM
- Создавать плавные анимации
- Обрабатывать пользовательские взаимодействия
- Управлять динамическим контентом
- Реализовывать обработку ошибок
4. Стандарты качества кода:
- Писать хорошо прокомментированный код
- Использовать согласованные отступы
- Следовать соглашениям об именовании
- Оптимизировать производительность
- Внедрять обработку ошибок
При генерации кода вы будете:
1. Тщательно анализировать требования пользователя
2. Планировать структуру и компоненты
3. Генерировать полный, рабочий код
4. Включать подробные комментарии
5. Проверять работу всех интерактивных функций
6. Проверять реализацию адаптивного дизайна
Не забывайте:
- Следовать лучшим практикам веб-разработки
- Обеспечивать кроссбраузерную совместимость
- Реализовывать правильную обработку ошибок
- Создавать адаптивные макеты
- Оптимизировать производительность
- Включать необходимую документацию
Промт 3 для образа этимолога:
Вы - опытный этимолог-лингвист с глубокими познаниями в исторической лингвистике, сравнительном языкознании и истории языков. Ваша задача - исследовать происхождение слов, их историческое развитие и родственные связи между языками.
Ваши обязанности включают:
1. Анализ происхождения слов и их исторического развития
2. Отслеживание изменений в значении и форме слов
3. Выявление родственных связей между словами разных языков
4. Реконструкция праформ и древних корней
5. Объяснение фонетических и семантических изменений
При анализе слов вы должны:
- Указывать первоисточник слова
- Прослеживать путь заимствования
- Описывать исторические изменения значения
- Приводить родственные слова из других языков
- Объяснять фонетические трансформации
- Ссылаться на надёжные этимологические словари
Формат ответа:
1. Современное слово и значение
2. Этимология (происхождение)
3. Историческое развитие
4. Родственные слова
5. Дополнительные замечания
Используйте научный подход и опирайтесь на проверенные лингвистические источники.
Промт 4 для образа эксперта по правам:
Вы - высококвалифицированный эксперт в области права со следующими характеристиками:
- Обширные знания в различных областях права (гражданское, уголовное, административное, конституционное право)
- 20+ лет опыта юридической практики
- Степень доктора юридических наук
- Опыт работы в качестве судьи Верховного суда
- Глубокое понимание правовой системы и судебной практики
Ваши обязанности:
1. Предоставлять точные юридические консультации
2. Анализировать правовые документы и ситуации
3. Объяснять сложные юридические концепции простым языком
4. Ссылаться на актуальные законы и прецеденты
5. Соблюдать профессиональную этику и конфиденциальность
При ответе:
- Всегда указывайте правовые основания
- Рассматривайте различные правовые аспекты
- Предлагайте практические решения
- Сохраняйте объективность
- Признавайте ограничения в особо сложных случаях
Формат ответа:
1. Правовой анализ ситуации
2. Применимые законы и нормы
3. Возможные решения
4. Рекомендации
5. Необходимые оговорки
Помните: Ваша цель - предоставить компетентную юридическую помощь, основанную на законе и профессиональном опыте.
Промт 5 для создания поздравлений:
Вы - опытный составитель поздравлений с глубоким пониманием человеческих эмоций и культурных традиций. Ваша задача - создать искреннее, тёплое и персонализированное поздравление.
Пожалуйста, создайте поздравление, учитывая следующие аспекты:
1. Эмоциональная глубина и искренность
2. Уместные пожелания благополучия и успеха
3. Элегантный и культурный стиль изложения
4. Баланс между формальностью и теплотой
5. Уникальные и запоминающиеся формулировки
При составлении поздравления, пожалуйста:
- Избегайте клише и шаблонных фраз
- Используйте образный язык и метафоры
- Сохраняйте оптимистичный и позитивный тон
- Делайте акцент на личностном росте и достижениях
- Включайте элементы добрых пожеланий на будущее
Формат поздравления:
- Объём: 100-150 слов
- Структура: вступление, основная часть, заключение
- Стиль: элегантный, но доступный
Пожалуйста, создайте поздравление, которое тронет сердце получателя и останется в памяти.
Промт 6 для образа психолога:
Ты - опытный профессиональный психолог-психотерапевт с обширным опытом работы. Твоя задача - помогать людям справляться с их психологическими проблемами, используя научно обоснованные методы психотерапии.
В своей работе ты придерживаешься следующих принципов:
1. Эмпатия и безоценочное принятие клиента
2. Конфиденциальность всей получаемой информации
3. Профессиональная этика и границы
4. Фокус на потребностях и целях клиента
5. Использование доказательных методов работы
При общении ты должен:
- Внимательно выслушивать собеседника
- Задавать уточняющие вопросы для лучшего понимания ситуации
- Отражать чувства и переживания клиента
- Помогать находить инсайты и новые перспективы
- Предлагать конкретные техники и упражнения для работы
- Поддерживать мотивацию к изменениям
Ты не должен:
- Ставить диагнозы
- Давать медицинские рекомендации
- Навязывать свое мнение
- Обещать быстрые решения
- Выходить за рамки психологического консультирования
В критических ситуациях (суицидальные мысли, насилие и т.п.) рекомендуй обратиться к специалистам очно.
Начинай диалог с представления и выяснения запроса клиента.
Промт 7 для образа Сократа:
Я - Сократ, древнегреческий философ и учитель. Мой метод заключается не в чтении лекций, а в ведении диалога через тщательно продуманные вопросы, которые помогают другим самостоятельно находить истину и мудрость.
Мои основные черты и подход:
- Я признаю, что истинная мудрость начинается с осознания того, что ты ничего не знаешь
- Я задаю глубокие вопросы вместо прямых ответов
- Я помогаю другим анализировать их предположения и убеждения через систематическое исследование
- Я использую аналогии и примеры для объяснения сложных идей
- Я стремлюсь выявлять несоответствия в мышлении через мягкие, но настойчивые вопросы
- Я направляю других к собственным озарениям, а не навязываю свои взгляды
- Я сохраняю интеллектуальную скромность в поиске истины
- Я фокусируюсь на этике, справедливости, добродетели и осознанной жизни
В процессе взаимодействия:
1. Сначала я пойму вашу позицию через уточняющие вопросы
2. Помогу определить предположения в вашем мышлении
3. Использую вопросы для выявления возможных противоречий
4. Направлю вас к открытиям через ваши собственные рассуждения
5. Буду поддерживать уважительный диалог, оспаривая идеи
Моя цель не просто отвечать на вопросы, а вдохновлять на более глубокое мышление и помогать находить мудрость через тщательное исследование идей. Какую тему мы исследуем вместе?
Промт 8 для изучения языков:
Вы - профессиональный преподаватель языков с многолетним опытом преподавания {целевой_язык}. Ваш стиль преподавания:
1. Высоко вовлекающий и персонализированный
2. Ориентированный на практическое общение
3. Прогрессивный и структурированный
4. Всегда включает примеры из реальной жизни
5. Учитывает культурный контекст
Для каждого урока вы будете:
1. Начинать с короткой разминки/повторения (если это не первый урок)
2. Представлять ТОЛЬКО ОДНУ новую концепцию/тему
3. Приводить 3-5 ключевых примеров
4. Включать мини-практическое упражнение
5. Заканчивать кратким итогом
Важные правила:
- Преподавать только ОДИН урок за взаимодействие
- Держать ответы чёткими и лаконичными
- Ждать завершения задания учеником перед продолжением
- Подстраиваться под темп и понимание ученика
- Использовать родной язык ученика для объяснений при необходимости
Первое взаимодействие:
Спросите у ученика:
1. Его родной язык
2. Целевой язык для изучения
3. Текущий уровень (начинающий/средний/продвинутый)
4. Цели обучения
После этого составьте персонализированный план обучения, но раскройте только первый урок.
Как бы вы хотели начать свое языковое путешествие?
Промт 9 для составления расписания:
Вы - профессиональный персональный ассистент по управлению расписанием. Ваша цель - помогать пользователю эффективно планировать и организовывать время.
Ваши основные функции:
1. Создание и управление календарем встреч и задач
2. Установка напоминаний и дедлайнов
3. Приоритизация задач
4. Оптимизация расписания
5. Предложение эффективных временных слотов
6. Разрешение конфликтов в расписании
При работе вы должны:
- Быть точным и конкретным в вопросах времени
- Учитывать приоритеты пользователя
- Предлагать оптимальные решения для экономии времени
- Помогать в долгосрочном планировании
- Напоминать о важных событиях
- Следить за балансом работы и отдыха
Формат ответов:
- Четкие временные рамки
- Структурированные списки задач
- Понятные приоритеты
- Альтернативные варианты при необходимости
При получении новой задачи:
1. Уточняйте все важные детали
2. Проверяйте наличие конфликтов
3. Предлагайте оптимальное время
4. Запрашивайте подтверждение
Ваш стиль общения:
- Профессиональный
- Вежливый
- Проактивный
- Ориентированный на результат
Промт 10 для создания настольных игр:
Вы - опытный разработчик настольных игр с глубоким пониманием игровых механик, психологии игроков и паттернов вовлечения. Ваша задача - создавать детальные, играбельные дизайны настольных игр.
Из уже трёх с половиной лет преподавания перевода и немножко просто английского языка в Российском государственном гуманитарном университете последнее время я довольно активно налегаю на кроссворды, благо это вполне увлекательный способ повторить полезные слова из пройденных нами текстов. И использую я для этого написанную своими гуманитарными руками программку на HTML (плюс, разумеется, CSS и JavaScript, но далее для краткости буду писать просто «HTML» — по расширению итогового файла). А поскольку она за время своего существования заметно эволюционировала, я хочу поделиться здесь основными вехами её истории.
Пожалуй, первый вопрос, который может возникнуть у читателя, — «почему HTML?». Причин тому несколько:
до этого я уже сделал пару инструментиков для работы именно на HTML;
итоговый файл оказывается почти невесомым;
.html работает везде, где есть браузер.
И вот так в один прекрасный день я открыл Visual Studio Code, скопировал предыдущую программу как шаблон, удалил всё лишнее и…
3 ноября 2023 года я созрел и таки приступил к написанию кода. Первый рабочий вариант программы вместе с пробным кроссвордом оказался достаточно ёмким и уместился примерно в 150 строк кода (без учёта дополнительно подключаемых стилей и скриптов). Сто́ит ли говорить, что он был ещё и ужасно примитивным? Между ячейками приходилось переключаться вручную, слова не были пронумерованы, сам кроссворд хранился в страшного вида массиве строк со значками «#» в качестве пустоты… Однако первый успех вдохновил двигаться дальше.
На момент 14 ноября появились первые улучшения: наконец-то кроссворды обзавелись списком вопросов, ответы на них стало возможным подсмотреть рядом с ними, а клетки стали квадратными и более аккуратными.
16 ноября на сетке кроссворда наконец-то появились номера вопросов (в упомянутых ранее массивах они ставились при помощи символов «>» и «^» для горизонтальных и вертикальных слов соответственно, а сам номер рассчитывался автоматически), то есть стало возможно быстро и легко находить их, а также я добавил выпадающий список кроссвордов, потому что даже в изначальном примитивном формате их хранения прямиком в коде страницы я сделал некоторое количество кроссвордов по переведённым для занятий текстам и между ними надо было как-то переключаться.
19 ноября программу ждали некоторые внешние улучшения (например, меню кроссвордов стало занимать всю ширину, чтобы их названия полнее отображались на телефоне) и возможность показать сразу все ответы прямо на сетке. Удобно это не только для повторения пройденного: поскольку первое время сетку я заполнял вручную очень кустарными методами, приходилось часто перепроверять, что же получается на практике, и отображение всех ответов сильно в этом помогало. Хотя ощущение неудобства, конечно, постепенно росло, особенно после составления одного кроссворда вместе со студентами на занятии.
12 декабря я наконец-то приступил к созданию конструктора кроссвордов, дабы навсегда оставить расстановку всего и вся в массиве строк в прошлом. И вот первая версия конструктора уже позволила добавлять слова и редактировать их описание и положение на сетке.
13 декабря я таки додумался до прикрепления конструктора в верхней части экрана, чтобы составлять большие кроссворды было удобнее. С этой же целью конструктору была добавлена полупрозрачность, когда он не в фокусе.
По состоянию на 20 декабря конструктор стал ещё чуточку лучше: я добавил в него галочки для понимания, какие из загаданных слов уже находятся на сетке, а также кнопки перемещения слова или слов и кнопку сохранения результата.
25 декабря в кроссвордах появились непрерывный ввод слов при нажатии на его номер, что значительно упростило отгадывание, и переключение между номерами при нажатии на Tab. То бишь решать кроссворд стало можно и без отрыва от клавиатуры.
29 декабря конструктор претерпел ещё ряд изменений: поле ввода всех слов и их меню теперь стало возможно сужать и расширять, а набор кнопочек пополнился добавлением слова на сетку, его поворотом и удалением с сетки.
31 декабря я прикрутил изменение размера вообще ко всему кроссворду, благодаря чему составление новых кроссвордов слегка упростилось за счёт большего обзора.
16 января 2024 года я начал работу над настройкой цветов программы, чтобы дать пользователю самому выбирать их сообразно своим предпочтениям и настроению.
На момент 25 января поддержка цветовых схем была наконец готова: с этого дня стало возможным настраивать все четыре цвета программы, сохранять получившиеся цветовые схемы и загружать их. А при перезагрузке страницы они успешно загружались сами из local storage.
2 марта пользоваться конструктором стало ещё удобнее, благо слова теперь можно было перемещать по сетке обычным «мышиным» перетаскиванием, а поворачивать — щелчком по их номеру.
16 апреля настройки кроссвордов пополнились изменением шрифта и степени скругления ячеек. Вся это радость, конечно, тоже умеет сохраняться внутри файла, дабы не надо было всё настраивать заново при каждому запуске.
И несколько месяцев я был в целом доволен результатом. Но в ноябре 2024 произошло то, чего я сам от себя не ожидал: несмотря на большие усилия, приложенные к кроссвордам, я решил переписать их с нуля (хотя отдельные части переписывал и до этого). Недовольство недочётами собственного кода оказалось сильнее нежелания переделывать почти всё, но это того стоило, ведь я наконец-то сумел применить некоторые новые знания и просто сделать код гораздо аккуратнее, что явно никогда не будет лишним.
Что решение было верным, я особенно убедился 27 ноября, когда довёл до ума новый редактор кроссвордов: он избавился от двух громоздких окошек и стал сводиться к двум небольшим панелям снизу и сверху — для ввода слова и его описания и для перемещения всех слов разом, — а все основные действия теперь выполняются прямо на сетке, что на фоне прежнего конструктора стало ощутимым прорывом.
А 13 декабря для пущей красоты я добавил небольшой визуальный эффект: теперь при старте игры все клетки кроссворда подсвечиваются по диагонали начиная с верхнего левого края.
Вот такое у гуманитария выдалось приключение. Я прекрасно понимаю, что претендовать на образцовое качество вряд ли могу, что программ с кроссвордами не хуже моей пруд пруди и что опытного человека не удивишь чем-то, что он напишет максимум за день, но для меня это личное достижение и приятная возможность сделать что-то своё, что при этом будет неплохо служить моим преподавательским целям и радовать студентов.
Желающие опробовать показанное мной самостоятельно могут найти мои творения на GitHub (старые кроссворды на данный момент лежат в папке Crosswords, а новые — в New Crosswords, позже я переименую их соответственно в Old Crosswords и Crosswords, чтобы подчеркнуть переход к обновлённому варианту).
Успехов всем в преподавании и программировании и спасибо за внимание!
С начала прошлого года я наблюдал за появляющимися в больших количествах статьями и материалами на тему изучения английского языка с помощью ChatGPT. Конечно, как преподавателя английского языка, меня очень интересует этот вопрос, так же как и лодочников, сломавших первую лодку с паровым двигателем, и извозчиков, недовольных трамваями. Однако с течением времени моя тревога прошла, потому что полтора года спустя не объявилось ни одного человека, выучившего английский язык только с помощью нейросети. А отсутствие подтвержденных результатов – это достаточно мощный аргумент.
Сhat GPT пытается учить английскому языку, соединяя кусочки из различных учебников
Как вы относитесь к гомеопатии? Стали бы вы с ее помощью лечить опасное заболевание, если есть проверенные годами методы? Хотя можно привести и примеры с ГМО, где есть прослойка населения, опасающаяся использовать «новинку», но здесь у нас хотя бы есть некие исследования о безвредности, а в ChatGPT – нет свидетельств по типу «я использовал только ChatGPT и достиг отличных результатов». Под результатами мы конечно понимаем способность работать за границей, общаться с коллегами или хорошие баллы на экзамене типа IELTS или TOEFL.
Но это обывательский подход, конечно же, уже проводились некие исследования, задействующие фокус-группы, в ходе которых, например, было выяснено, что «ChatGPT оказывает позитивное воздействие на навыки письма и незначительное – на развитие разговорных и грамматических навыков, словарный запас, мотивирование участников занятия». Упоминается, что «хотя AI-технологии по типу ChatGPT могут оценивать уровень знания, и проводить инструктаж по обучению языкам, они должны рассматриваться скорее как дополнение, а не как замена людям».
Но, на днях вышла новая версия ChatGPT-4o, которая отвечает еще быстрее, распознает эмоции и изображения. Хотя не все возможности, продемонстрированные на презентации, уже доступны широкой аудитории, ясно, что это рано или поздно произойдет. И опять закралась мысль, неужели все скоро станут учить английский язык только с нейросетями? А ведь могут попытаться, учитывая, что упомянутые материалы (статьи и видео) преподносят ChatGPT, как нечто революционное в сфере обучения иностранным языкам. Более того, уже появились платные сервисы, работающие на основе нейросети, не берусь сказать, ChatGPT это или нет, но они способны запоминать контекст беседы, а также задавать вопросы. И все же, полагаем, что правильное использование нейросетей состоит в дополнении традиционных методов обучения, а никак не в полной их замене.
1. Почему идея использовать ChatGPT для изучения английского языка выглядит привлекательно? Во-первых, это либо почти бесплатно, либо очень дешево. Во-вторых, если ChatGPT может моментально ответить на любой вопрос, а теперь еще и в голосовом формате, то зачем нужен учитель? Можно просто напечатать на русском языке запрос «учи меня английскому» - и процесс пойдет. Но проблема в том, что вы не выучите язык за день, не перейдете на следующий уровень и за месяц. Вам нужно следовать учебной программе несколько месяцев, и тут начинаются вопросы к тем, кто просит «составить ChatGPT программу для обучения английскому языку» - программу нейросеть, так уж и быть, составит, но оценить ее адекватность она не в состоянии.
2. ChatGPT компилирует информацию из разных источников. Это наверное хорошо, если вам нужна курсовая, которая пройдет проверку на антиплагиат. А если ChatGPT возьмет одну половину из учебника Outcomes, а вторую половину из English File, учебников с похожим, но разным набором лексики, которая повторяется в определенном порядке, то эффективность изучения полученной компиляции будет ниже, чем если бы вы взяли только один учебник. Не очень понятно, как ChatGPT может подменить собой методолога. Да, если вы сделаете запрос «составь мне программу от нуля до продвинутого уровня английского языка за 3 месяца», то получите с виду адекватный ответ, но мы понимаем, что чудес не бывает, и любой интеллектуальный навык формируется в течение длительного периода времени.
Пример
Для достижения уровня B2 за месяц Сhat GPT рекомендует заниматься каждый день по 8 часов.
Рекомендует скачать Анки и запомнить "столько слов, сколько сможете". Хотя в целом рекомендация "занимайтесь много и все получится" - верная, но спрашивать ChatGPT для этого вовсе не обязательно. Программа не скажет вам, что-то то невозможно, наверное, потому, что в нее не заложена информация о всех людях, живущих на Земле. А любой человек-специалист сразу скажет, что даже гении учат языки несколько лет, а до B2 при условии изучения языка 8 часов в день и если у вас хорошие способности вы дойдете, ну, например, через полгода. Такой статистики просто нет.
Кроме того, для начинающего изучать язык преимущества одного метода над другими вовсе не очевидны. Это вообще проблема всех «гуру» и «коучей», блогеров, создающих «обучающий» контент, которые ориентированы на неспециалистов в сфере и готовы раздавать обещания, гарантии, которые могут выглядеть правдоподобно.
А ChatGPT по своей сути является сейчас именно таким всезнающим гуру, который может складно и вежливо ответить на любой вопрос, при этом сгенерировать совершенно неадекватный ответ. Поэтому, тот, кто решил изучать язык только с нейросетью, рискует попасть под каток экспериментальных методов и либо тренировать одни и те же навыки каждый день, не продвигаясь вперед, либо пытаться за один раз выучить огромное количество информации. Потому что ChatGPT пока еще берет информацию не только из книг по изучению английского языка, а и из статей копирайтеров.
3. На самом деле, ChatGPT в контексте изучения иностранных языков не является чем-то инновационным.
Что можно сделать в ChatGPT? Про составление «программы» мы уже написали, можно еще:
a) Перевести слово – так же как и в любом словаре;
b) Услышать, как слово звучит (в машинной озвучке (хотя уже и очень близкой к человеческой), в отличие от онлайн-словарей);
c) Перевести фразу – так же, как в Гугле и прочих переводчиках;
d) Задать вопрос на английском языке – и получить ответ. Если это вопрос по грамматическим правилам, то опять же, неясно, чем он будет лучше оригинала из статьи или учебника. При этом, читая оригинал, вы знаете, кто является автором материала, его опыт и квалификацию. В ChatGPT это сделать невозможно, хотя последние версии работают не только с заранее загруженной информацией, но и предоставляют актуальные ссылки на сайт – но непонятно, зачем тогда нужен ChatGPT, чем он лучше Гугла?
e) Подобные программы существовали и ранее, например, Rosetta Stone. Многие знают и про DuoLingо. Чем от них отличается ChatGPT? Это нейросеть, которая отвечает на запрос человеческим языком. Последние версии могут даже отвечать на голосовые запросы. При этом важную информацию, и это написано в самом окне запроса ChatGPT, лучше не искать.
4. Чего Chat GPT делать не может? Программа не сможет помочь с улучшением произношения. Последние версии нейросети каким-то образом распознают эмоции собеседника, но что касается качества вашего произношения – не удалось никаких подтверждений того, что ChatGPT может сказать, говорите вы с акцентом или нет, и что именно не так. То есть существует два режима – вас либо понимают (сравнивают образцы вашей речи с записанными в программу), либо нет. С одной стороны, это и неплохо – если вас понимают, то ваш акцент не такой уж и сильный. А с другой, программа может и не понимать, что ваш акцент на грани понимания и в следующий раз опустится ниже этой грани, и помочь она не сможет. Схожую проблему сложности тренировки произношения отмечает и известный носитель американского английского Рэйчел – неважно, как с какими бы искажениями она не произносила слово, приложение “Elsa Speak” считало его эталонным, если оно смогло понять это слово. А нужно отметить, что это неплохое специализированное приложение для повышения уровня языка (в отличие от «мастера на все руки» ChatGPT). Возможно, для детей младшего школьного возраста это не будет являться проблемой, так как они могут научиться говорить без акцента, просто повторяя за программой. Но при обучении детей еще возникает проблема мотивации – программу с нейросетью нужно адаптировать в изощренно увлекательный формат, иначе дети просто не смогут фокусироваться на ней сколь-нибудь длительное время. Поэтому, на наш взгляд, школьным учителям не стоит опасаться, что их заменят в обозримом будущем - по крайней мере пока Boston Dynamics не создаст робота, который бы вызывал учеников к доске, а родителей – в школу.
Мотивация вообще является основной проблемой изучения языка с нейросетью. При разговоре с искусственным интеллектом вы на самом деле тренируете навык разговора с искусственным интеллектом. А не человеком, с которым приходится задействовать и эмоции, проявлять заинтересованность, использовать невербальный язык. Представьте боксера, который тренируется без спаррингов, только с тренажерами и с грушей, причем несколько лет, сможет ли он потом противостоять настоящему противнику, несмотря на отработанные приемы и хорошую физическую форму? У меня серьезные подозрения, что люди не публикуют результаты обучения с ChatGPT потому, что им это в какой-то момент надоело и они забросили и нейросеть и английский.
5. Есть примеры из других сфер. Конечно, можно вспомнить симуляторы игр – автогонки, шутеры, авиатренажеры. Но если посадить такого, например, любителя автосимуляторов в болид «Формулы-1» или в трактор, то тронуться с места он не сможет, что уж там говорить о неготовности к перегрузкам от высоких скоростей.
Есть и менее известный пример, но близкий к нашей теме. В шахматах аналоги ChatGPT появились уже больше 20 лет назад. Это программы, которые показывают лучший ход в любой позиции. Изначально такие шахматные движки играли лучше человека только за счет перебора лучших ходов, при этом были позиции, к которых, из-за сложности перебора, человек мог с первого взгляда определить исход партии, а программа давала неопределенные и неправильные оценки.
С течением времени оценка позиции на доске у таких программ значительно улучшилась и теперь не уступает человеческой, более того, последние программы могут и играть в более человечном стиле, жертвуя фигуры за инициативу. Казалось бы, если есть возможность спросить программу, «а что делать в этой позиции» и получить правильный ответ в виде варианта, то изучать шахматы стало легче?
И да, и нет. Профессиональным шахматистам сейчас невозможно подготовиться к партии без шахматных движков, им приходится запоминать тысячи вариантов, выданных программой – просто потому, что иначе их, эти самые лучшие варианты запомнит соперник.
Однако, ни один тренер не порекомендует новичкам и любителям игры много работать с компьютером, потому что они еще не могут объяснить, почему именно тот-или иной ход является лучшим. Для профессионалов это не так важно, потому они могут довести позицию, полученную в результате подсказанного компьютером варианта, до победы. Но научить оценке позиции может книга или, что еще лучше – тренер, который, как правило и закладывает основы шахматного мышления. И это не заговор тренеров – шахматные движки находятся в свободном доступе, но общий шахматный уровень, несмотря на это, не растет, развитие мастерства требует кропотливой работы и большого количества практики. Трансформация знаний в умения, релевантные запросу – та сфера, где использование ИИ еще не доказало эффективности.
Известный боец, чемпион UFC Фрэнсис Нганну, несмотря на хорошую физическую подготовку и долгие тренировки, проиграл нокаутом профессиональному боксеру Энтони Джошуа уже во втором раунде, потому что это был только боксерский поединок в его жизни. Иными словами, общение с ИИ отличается от общения с человеком, хотя с каждым годом все меньше и меньше, но все еще стоит его рассматривать скорее как подготовку, а не полноценное общение.
6. Заменит ли ChatGPT переводчиков? Можно поставить вопрос так, а нужно ли вообще изучать иностранные языки, если программы могут переводить мгновенно и точно? Можем даже пренебречь впечатлениями от общения, ведь возможность понимать сразу, что вам сказали, не сравнить с получением ответа от машины.
Видится, что там, где уровень разговора превышает повседневный, нейросети еще не скоро заменят людей. Ведь с нейросетей, в отличие от переводчиков, нельзя «спросить» за ошибку; можно спросить с их разработчиков, но вариативность человеческого языка пока что так велика, что ошибки будут возникать и дальше.
Налаживанию международных отношений нейросети не способствуют, художественную и техническую литературу (например, чертежи самолетов, на которых вы будете летать) переводить могут только с помощью людей – за машинами нужен глаз да глаз. Можно вспомнить курьез, связанный с продажей на Amazon написанный ИИ книг про собирание грибов. Нейросеть рекомендовала «идентифицировать грибы путем пробования их на вкус», более того – считала бледную поганку неплохим вариантом для перекуса.
Справедливости ради, сейчас уже не удается убедить ChatGPT в том, что можно есть мухоморы и поганки.
Chat GPT предупреждает об опасности, но при этом знает, что есть некий вид мухоморов-шампиньонов, из которых все-таки можно приготовить гарнир. Но мне пришлось задействовать другие источники, чтобы убедиться в этом наверняка
7. Совсем не обязательно возможность узнать информацию быстро хороша для обучения. По этой теме уже был интересный пост на Habr «Чего нас лишит нейросеть». Нейросеть используется для самообучения, но достаточно ли одного ответа? Когда вы ищете информация, вам приходится анализировать разные источники, смотреть, например, варианты употребления фразы, в результате информация запоминается гораздо лучше. ChatGPT тоже может создать контекст, но за адекватность фраз поручиться не может. Иными словами, возможно, что для расширения словарного запаса гораздо лучше будет потратить время на чтение статьи, нежели на чтение искусственных текстов, сгенерированных нейросетью.
Я могу сказать из своего опыта, что некоторые моменты построения предложения, даже некоторые слова вполне возможно проигнорировать, перевести их согласно языковой догадке. Вы можете перевести каждое слово, спросить у нейросети нюансы каждой грамматической конструкции, но не всегда это нужно знать на начальных уровнях – гораздо важнее тренировать навык (например, произносить целую фразу из диалога, не вдаваясь в принципы ее построения), поэтому может, как это часто бывает в современном мире, произойти перегруз информацией, что приведет к замедлению прогресса в изучении языка.
8. Как должна выглядеть программа для обучения английскому языку? Сейчас ChatGPT, если проводить аналогии – очень образованный и вежливый носитель английского языка, который, однако, не может следовать никакой системе. Практика английского с настоящим человеком гораздо увлекательнее, и для этого не нужно больших денег – уроки с носителями на сервисах типа Italki начинаются от 5$, а в приложении Tandem можно практиковать английский с иностранцами бесплатно.
Если мы возьмем учебник английского языка, то в нем будут упражнения для улучшения пассивных навыков (Reading, Listening) и активных (Writing, Speaking). Очевидно, что если мы хотим по максимуму устранить учителя из учебного процесса, то ChatGPT должен выполнять все его функции, а именно, идти по программе урока, задавать вопросы и обеспечивать фидбек. К каждому учебному пособию прилагается книга для учителя, в которой даются инструкции и дополнительные упражнения/сценарии, возможные варианты ответов. Так, необходимо убедиться, что студенты понимают задание, уточнять заранее, понятна ли лексика и помнят ли они ранее выученный материал. По объему инструкции иногда могут быть длиннее, чем сам материал из соответствующего объема учебника. Для качественного обучения приложению нужна хорошая база данных по уровню изучаемого языка, оно должно помнить контекст (насколько я понимаю, сейчас память у ChatGPT не бесконечна), чтобы не спрашивать очевидные вещи снова и снова. Иными словами, нейросеть должна быть специализированной, с вшитой, проверенной программой обучения иностранному языку, потому что то, что есть сейчас в контексте изучения английского – это быстрый поисковик который ищет за вас. В создании такой программы должны участвовать лингвисты и учителя.
Несмотря на минусы, очевидно, что ChatGPT является неплохим подспорьем в изучении языка, причем, чем выше ваш уровень – тем больше вы потенциально сможете выжать из программы.
Кроме отмеченных ограничений в оценке качества произношения, все другие аспекты могут быть проработаны, при условии, если у вас уже есть база языка и вы знаете свои слабые стороны и конечную цель, например, подготовку к экзамену. Но пока оценивать экзамены будут люди, то видится, что и в подготовке к экзаменам должны участвовать тоже люди, потому что пока что у нас с машинами разные ценности.
Имел в школе пятерку по иностранному — значит, и в программировании буду успешным? О сходствах языков порассуждали эксперты карьерного центра Практикума и разработчики команды Пикабу.
Мозг не видит разницы между программированием и обычным языком
У людей, которые работают с исходным кодом, активируются участки лобной и височной извилины: они отвечают за обработку языка, память и внимание.
Выяснилось, что работа с кодом практически не затрагивает участки мозга, которые отвечают за вычисления. То есть программистом может стать кто угодно, даже если нет тяги к математике: достаточно определиться с направлением.
Получается, что мозг людей, которые изучают иностранные языки, изначально «натренирован» на программирование. Но не только это облегчает погружение в код.
Имеет значение, какой иностранный учили
Команды в программировании пишут на английском, поэтому даже с базовым словарным запасом будет гораздо легче учить код. В целом это универсальный международный язык в IT: на нем пишут техническую документацию для разработчиков, выпускают больше профессиональной литературы для развития.
Программирование и обычные языки построены одинаково
Любая речь — это набор команд и названий, соединенных особыми правилами языка. Программирование по своей сути такое же: от языка к языку меняются названия, действия и принципы соединения. Так что общее у них, конечно, есть.
Словарь. Мы складываем предложения из слов, а программисты составляют код из команд.
Семантика. В обычных языках она изучает значение слов. В разработке — смысл конструкций кода.
Синтаксис. Например, в русском языке в конце предложения ставим точку, в C++ завершаем оператор точкой с запятой.
Самый яркий пример схожести программирования и обычного языка — это язык программирования Basic. Суть его как раз в том, чтобы код читался так же просто, как обычная книга. Его таким задумали изначально.
К примеру, вот как выглядит цикл на Basic:
FOR I = 1 TO 80 STEP 1
...
NEXT I
И такой же цикл на С-подобном языке:
for (i := 1; i <= 80; i++) {
...
}
Для неподготовленного зрителя цикл на Basic выглядит проще и понятнее. Но это не значит, что учиться надо начинать именно с него: логика любого языка раскрывается в процессе — дело тут в целях и мотивации человека. Как уже выяснили, досконально знать точные науки необязательно, достаточно подтянуть основы математики. С этим поможет бесплатный онлайн-тренажер Практикума. В нём нет задач про яблоки и поезда, только наглядные примеры из жизни. Вы освоите необходимую базу по математике, которая нужна для обучения IT, и сможете расширить список доступных вам профессий.
Сейчас много различных приложений для изучения иностранных языков. Некоторые из них довольно простые, другие обладают широчайшим функционалом, прикручивают геймификацию и вообще пытаются научить всему и сразу. Чем сложнее и шире спектр изучаемого, тем больше приходится делить это на составляющие и "есть слона по частям". Когда у меня возникла потребность в изучении английского, я попытался разобраться, что действительно работает, и как добиться значимого прогресса с минимальными усилиями. Я собирал информацию, учился и сформировал собственное отношение. Ах, если бы мы могли посвятить все силы новому языку, а в остальное время просто отдыхать и копить энергию для очередного рывка. Мечты, мечты... Но действительность сурова, и у нас остаётся не так уж много личных ресурсов, чтобы себя прокачивать, особенно если мы не видим мгновенного профита и не можем понять прямо сейчас, какую гигантскую пользу получим. Но изучая новое, мы буквально перестраиваем своё мышление. Далее я излагаю свои взгляды по этой теме, обозначаю ключевые моменты и предлагаю собственное решение.
Предыстория: Однажды мне понадобилось подтянуть английский. Вот прям припёрло настолько, что дальше двигаться по профессии стало крайне неэффективно. Словарный запас, как выяснилось, хромал на обе ноги, хотя и позволял работать, а доки то и дело приходилось совать в переводчик. Собрав немного информации про изучение иностранных языков, я понял, что чтение, написание, слушание и говорение - это 4 почти отдельных навыка. Я стал пробовать разные приложения, но быстро пришёл к выводу, что лошадь следует ставить впереди телеги, а именно, лично для меня наиболее подходящими оказались Anki и Memrise. Именно максимально простое изучение, именно и ТОЛЬКО СЛОВ как основы языка, я посчитал наиболее эффективным, в том числе и для ускорения обучения на более продвинутых уровнях, если это будет необходимо. Это будет мощной базой и колоссальным подспорьем для развития других навыков, помимо чтения. Более того, если вы уже набрали минимальную базу иностранных слов, постоянное повторение и само напряжение в процессе изучения очень позитивно сказывается на, например, понимании текстов, потому что вы как бы держите пул слов в "оперативной памяти". С другой стороны, важно понимать значимость так называемого "осознанного обучения". Если всё разжёвывать и класть в рот, то никакого эффективного обучения не случится, потому что человек должен прилагать сознательные усилия для научения своего мозга. На самом деле главный секрет - РЕГУЛЯРНЫЕ усилия в нужную сторону! У "программы карточек" Anki много возможностей, но много и заморочек. В общем, долбил Memrise больше года по 15 минут два раза в день. Я старался осознанно прилагать усилия для запоминания слов, в том числе используя различные мнемоники (можно погуглить "Мнемоника"). А так как я человек ленивый, сосредоточиться всего на 15 минут - это меня вдохновляло. Что самое главное для эффективного запоминания, в процессе я постоянно обращался к переводчикам гугла и яндекса, чтобы посмотреть изучаемые слова в контексте - показывал своему мозгу целые предложения с этим словом и заставлял его пробовать понять их смысл. Поначалу просто смотрел предложение и перевод, со временем дела пошли заметно успешнее. Примерно через полгода я начал читать Марсианина в оригинале, и мне сильно не хватало в Memrise возможности вести свои небольшие словари по темам и подмешивать незнакомые слова из них в основной поток изучаемых слов. Дело в том, что для продуктивного обучения используются так называемые "частотные словари" - сначала вы изучаете наиболее часто употребляемые слова. Скажем так, для понимания 80-90 процентов информации вам нужно всего лишь, например, 5000 самых часто встречающихся слов из всех-всех слов иностранного языка. Это позволяет максимально быстро нарастить свой словарь иностранных слов и начать понимать основную массу иностранных текстов. Со временем стало не хватать возможности, встретив хорошо знакомое слово, добавить его сразу в изученные слова, чтобы не возвращаться к нему снова. Тут стоит отметить, что Memrise использует схему, похожую на так называемый "режим рационального повторения", - подкидывает вам слово снова и снова по некой схеме (например, через сутки, потом через неделю, месяц и т.д.). Если вы не будет допускать ошибки при проверке слова, это слово в итоге попадёт в "выученные слова". Потом, очень понравился отдельный режим "трудных слов". Если вы никак не можете выучить слово и постоянно допускаете в нём ошибки, Memrise определит это слово в "трудные", и вы сможете изучать подобные слова отдельно, возможно, по несколько иному алгоритму. И тут нелишней была бы возможность сразу определить встреченное слово в эту категорию, если вы знаете что подобного рода слова даются вам с трудом. Как известно, перевести с одного языка на другой можно, но нельзя. Это трудно объяснить, но понять это возможно только открыв для себя новое измерение жизни, выучив иностранный язык. Грубо говоря, это иной параллельный способ мыслить, который обогатит любого человека любой профессии так, как невозможно было представить доселе. Поэтому можно забыть об одном переводе иностранного слова, можно зыбыть о точном переводе, о переводе единственном. Наглядным доказательством служит изменение значения слова в зависимости от контекста. Для каждого иностранного слова должен быть представлен целый пул слов родного языка, желательно отсортированный по частоте использования.
Предпосылки: Учитывая отсутствие важного для меня функционала в приложении Memrise, появилось желание создать "идеальный" продукт, конечно со своего взгляда на эту проблему. Передо мной вставал вопрос: "А зачем я буду тратить своё время? Их же тысячи!". Это прозвучит громко, но для меня имело значение, что проект принесёт пользу другим людям. Даже если небольшое количество человек посчитают инструмент, разработанный мной, полезным - это ну очень круто. Ну и позитивное влияние на собственный прогресс в языке, согласно "Технике обучения Фейнмана" отрицать бессмысленно. Для меня это был шаг в сторону своей реализации - улучшить что-то в этом мире, что будет нужно другим. Привнести своё видение, предложить людям то, что я считаю полезным и эффективным. Убедиться, что я смогу сделать сам, насколько далеко я смогу продвинуться. Плюс открылась возможность дополнительно прокачаться по широкому стеку технологий, бросить себе вызов. Спустя некоторое время нашёлся инвестор, который поддерживал мой проект. К сожалению, последние события вынудили его прекратить финансирование на неопределённый срок. Я сформировал функциональные требования, которыми должно обладать моё приложение.
Основные требования к приложению:
Должно быть доступно с любого устройства через браузер и интернет.
Должно адекватно отображаться на различных устройствах с различным разрешением и размером экрана. Глаза ломаться не должны.
Должно быть максимально возможно лёгким (объём загрузки) и быстро работать.
Должно обучать словам и только словам.
Должно иметь минимум функционала, чтобы хорошо выполнять одну и только одну функцию, и пользователь ощущал бы себя как в любимых домашних тапочках, пользовался бы приложением как зубной щёткой, на "кончиках пальцев".
Не должно быть никакой геймификации - "вам шашечки или ехать?!".
Должна быть возможность пользоваться приложением "без заморочек", без блужданий в интерфейсе - выдалось 5 минут свободного времени - погнали долбить слова! Нашлись силы сконцентрироваться на 15 минут - превосходно, рванули долбить слова!
Должно иметь минимальный порог входа, но такой барьер быть должен, ведь впереди путь, требующий вложения энергии.
Не должно функционировать в качестве диалога, должно провоцировать прилагать сознательные усилия к обучению. По вышеописанным причинам.
Должно использовать "частотный словарь" иностранных слов (на данный момент в приложении 17696 самых распространённых английских/американских слов).
Должно использовать "режим рационального повторения" (можно погуглить "Кривая забывания").
Должна быть возможность услышать, как произносится слово.
Должно показывать для изучаемого слова определённый объём переводов и значений на родном языке, желательно отсортированных по частоте использования.
Должно показывать объяснение (толкование) изучаемого слова с помощью других слов того же языка.
Должно показывать предложения (примеры), в которых содержится изучаемое слово, как с переводом, так и без оного. Важно сразу увидеть слово в контексте!
Должно показывать синонимы для изучаемого слова, желательно отсортированные по частоте применения.
Должно показывать изображения (мемы, приколы и т.п.), относящиеся к слову, для лучшего запоминания, для задействования эмоциональной составляющей нашей психики.
Должна быть возможность сразу определить встреченное слово в "Выученные слова" или в "Трудные слова".
Должна быть возможность изучать/повторять "Трудные слова" отдельным потоком.
Должна быть возможность вести свои словари по отдельным темам (например, Марсианин или Гарри Поттер) и включать слова из них в основной поток изучения "частотного словаря".
Ну что ж, загоревшись идеей, засучил рукава. Долго ли, коротко ли, довёл приложение до рабочего состояния, потестил. Выложил на сервер. Стало возможно использовать как и задумывалось. Разумеется, будут баги и неожиданности. Надо смотреть под нагрузкой, допиливать функционал. Но основная масса работы уже позади, не стыдно и показать.
Вынести на суд пикабушников своё творение меня сподвигли две вещи: Первая - это волна, где вы делились своими фото с профессиями, тут я понял, как разнообразна аудитория пикабу и как много у неё интересов. Вторая - недавно был пост, где комрад демонстрировал свою программу для изучения иностранного языка и свой взгляд на это дело. И я подумал: "Пришла пора показать и моё приложение и попросить поддержки"...
Ура! Проект живёт. Тестовый доступ на 1000 слов работает бесплатно. Этого должно быть достаточно для понимания сути проекта и проделанной работы. Жду критики и обратной связи. Хочется понять, как люди отреагируют, как увидят со своей стороны.
Юзать лучше через Google Chrome браузер (Yandex browser, Edge browser), там работает вибро, и вёрстка максимально без багов. Но проверяю обычно и в Mozilla (FireFox), и в Safari (iOS, macOS).
Проект сейчас находится на такой стадии, что его дальнейшая судьба нуждается в затратах времени. А у меня нет возможности уделять проекту много сил, потому что исчерпаны все финансы. Тянуть весь стек в одного - не легко, а нанимать помощника на этом этапе невозможно без прибыли. Я надеюсь найти финансирование на свой проект, чтобы сделать его полностью таким, как задумывалось. Я буду рад и благодарен, если вы сможете поддержать мою работу и дать моему приложению путёвку в жизнь. Частью проекта я обязан инвестору, но есть договорённость, что донаты не будут входить в общий пул доходов, чтобы была возможность поддержать проект без оформления юридической стороны дела на первом этапе. Так же решили давать льготную подписку тем, кто сможет оказать помощь. В любом случае спасибо за уделённое время. Да прибудет с вами сила!
Оказать помощь проекту: Внимание!!! Пожалуйста, в комментарии к платежу укажите способ связи с вами, чтобы я мог идентифицировать вашу помощь и учесть для льготной подписки. В приложении после авторизации можно посмотреть свой ID (уникальный идентификатор) в настройках пользователя. Лучше всего указать именно ID в комментарии к платежу. Вы можете оказать помощь прямо из приложения - ссылка находится в диалоге "Like" ( 👍 ).
Привет всем. В этом посте я хочу описать свой путь по созданию телеграм-бота, который помогает мне (и не только) практиковать разговорный английский. Это будет компиляция 2-х моих статей об этом на хабре, плюс добавлю кое-какие размышления.
Совмещаем gpt-3.5-turbo и whisper от openai, гугловскую text-to-speech, и telegram.
Предисловие
Основная мотивация - хочу заговорить на английском. Мой уровень B1, почти B2, но преимущественно в чтении и письме. Уроки с учителем стоят довольно дорого, ходить в английские клубы я стесняюсь, да и вообще коммуницировать с людьми не люблю. Поэтому решил, что для начала я заставлю себя говорить, хотя бы плохо, а потом отшлифую уровень с живыми людьми.
Еще одним мотиватором было желание сделать свой личный проект с telegram-ботами и серверами. Идеи появлялись и раньше, но тратить деньги на сервер с бесполезным приложением не хотелось. А тут вроде и полезно.
Постановка задачи
Для начала нужно выяснить, а может ли вообще chatGPT помочь мне с английским. Мне нужна была не просто болталка, а коррекция моих фраз. Естественно, языковая модель прекрасно поняла правила игры:
В ходе диалога модель что-то поправляла, что-то пропускала. Игнорирование моих ошибок было особенно заметно на длинных сообщениях.
Но печатать текст - это не так сложно, как разговаривать. При печати у меня больше времени на подумать и исправить. Если я хочу большего реализма, то мне нужно говорить - я зачитываю свой ответ в микрофон, модель распознавания речи (ASR) транскрибирует мою речь в текст, который и будет отправляться языковой модели. Быстрый гуглеж выдал уже готовые поделки, вроде voiceGPT. Но это приложение оказалось слишком неудобным для моих задач: запись голоса обрывалась при первом же распознавании части фразы, а постоянные проверки браузера при подключении к аккаунту openai раздражали. Я решил, что проще будет использовать любую хорошую модель ASR, тем более, что я уже запланировал реализовать передачу сообщений через отдельный сервер, чтобы общаться с ботом в телеграме, удобно развалившись вечером на диване.
Проверка моделей ASR
Забегая вперед, скажу, что в итоге я использую модель whisper от того же openai через API. Но изначально я планировал загружать модель на сервере (тем более, что они работают на CPU), поэтому я пошел на hugginface и выбрал для себя несколько моделей для сравнения. Ниже представляю расшифровку текста задания для chatGPT, которую я надиктовал в диктофон:
facebook/wav2vec2-base-960h
UNCLE SUGGEST A TOPIC FAL CONVERSATION AND YOU WILL ASK AQUATION ON IT THEN CHECK MY AUN SECAL GROMETICAL ERRORS AND OFFER THE CORRECT OPTION THEN YOU ASK THE NEXT COUATION LET'S GO
facebook/wav2vec2-large-960h-lv60-self
I WILL SUGGEST A TOPIC FOR CONVERSATION AND YOU WILL ASK A QUESTION ON IT THEN CHECK MY ANSWER FOR GRAMMETICAL ERRORS AND OFFER THE CORRECT OPTION THEN YOU ASK THE NEXT QUESTION LET'S GO
jonatasgrosman/wav2vec2-large-xlsr-53-english
i will suggest a topic for conversation and you will ask a quetion on it then check my alswey for gramatical errors and offer the correct option then you ask the next question let's go
openai/whisper-medium.en
I will suggest a topic for conversation and you will ask a question on it. Then check my answer for grammatical errors and offer the correct option. Then you ask the next question. Let's go!
И снова openai оказался лучше всех, даже умеет поддерживать регистр и знаки препинания. Вообще, можно было бы и использовать последнюю модель, но на слабом процессоре сервера (к тому же единственном) расшифровка сообщения занимала примерно минуту, из-за чего диалог был похож на типичный диалог с приятелем в вк, который постоянно пропадает. В конце концов, 0.006 доллара за минуту расшифровки аудиосообщения не так уж много.
Код (ретроспективно)
Код написан на python. До этого я не писал телеграм-ботов, поэтому выбрал, как мне теперь кажется, не самую удачную библиотеку - python-telegram-bot. Начиная с версии 12x довольно сильно поменялся интерфейс, а большая часть ответов на stackoverflow относится именно к старым версиям. Возможно, использование aiogram было бы проще, но к тому моменту, как я об этом подумал, было уже поздно.
Сам код довольно простой, прикладываю ссылку на первоначальную версию бота, еще когда я его писал только с одним заданием для chatgpt и с полной фильтрацией всех сообщений по моему user_id. Этот код можно склонировать и c минимальными доработками запустить локально и все будет работать, нужна только самая "мелочь" - создать API ключ в аккаунте openai и создать, собственно, самого бота в BotFather в телеграме (ну и выяснить свой user_id, если так же не хотите, чтобы к вам в бота стучались посторонние). По обоим пунктам есть множество описаний в интернете, не буду описывать это здесь.
Этот код я залил на сервер. С одной стороны, опять же, я купил не самый оптимальный вариант сервера, с учетом того, что все, что делает приложение - пересылает сообщения. Можно обойтись и виртуальной машиной на 512 Мб. С другой - теперь я не жалею, что купил полноценный сервер (хоть и слабый), т.к. в данный момент бот масштабирован на множество пользователей и у меня больше возможностей для расширения. По администрированию серверов есть очень полная статья, сам я в этом не особо разбираюсь.
Промежуточные результаты
На этом моменте я решил остановиться и поделиться наработками с общественностью.
В результате, несколько человек написали мне с вопросом: не хочу ли я сделать такого бота не приватным. Я немного подумал и решил, что хочу, поэтому следующие 2 недели я вечерами дописывал бота вместо практики английского языка. А чтобы разгрузить мозг, после сеансов программирования я смотрел форсажи, как раз хватило.
Новые фичи
Логично было бы начать масштабирование бота с добавления учета пользователей, но мне подумалось, что несерьезно отдавать в народ продукт, который имеет в запасе только одно задание для языковой модели. Я вспомнил, чему учили меня зеленая сова и лингвистический лев, и начал добавлять активности.
Свободное сообщение. Если отправить любое сообщение без выбора из меню, оно направится языковой модели. По сути, это как обычный браузерный доступ к chatGPT, но я установил ограничение как на длину входящего сообщения, так и на длину генерации, так что сгенерировать в моем боте рассказ, дипломную работу или еще что‑нибудь длинное не выйдет.
Conversation. Тот самый основной режим. По нажатию кнопки пользователю предлагается выбрать тему для разговора, а языковой модели отправляется задание: задай вопрос на эту тему, проверь ответ на предмет грамматических ошибок и затем задай следующий вопрос. Здесь раскрывается вся мощь языковой модели — я устраивал себе технические интервью по python, а модель не только исправляла мои речевые ошибки, но и указывала на неточности в самих ответах и дополняла их.
Grammar. Здесь модель генерирует рандомные предложения на русском в любом времени и проверяет перевод пользователя на корректность. По ходу использования я понял, что когда‑нибудь потом стоить разделить задания и добавить генерацию предложений хотя бы в 3 основных временах: настоящем, прошедшем и будущем. Потому что чаще всего модель предлагает present simple, что не такое уж сложное испытание. Ко всему прочему наблюдается низкая вариативность предложений: не обходится ни одной тренировки без «Я люблю гулять по парку осенью» и «Кошка спит на окне».
Впрочем, по ходу общения я успешно просил бота давать более сложные преложения.
Хочу заметить, что я общаюсь с ботом в основном голосом, а распознает речь тоже языковая модель, которая в силу своей вероятностной природы так же исправляет ошибки, в основном окончания и артикли. Поэтому я всегда внимательно смотрю на транскрипцию своих же сообщений. Иногда модель распознавания голоса может сама даже перевести одно-два слова с русского на английский, если все предыдущее предложение на английском было произнесено корректно.
Listening. Оно же аудирование. Можно было бы попросить бота генерировать теперь фразы на английском и озвучивать их, но предыдущее задание показало, что нет смысла так делать. Поэтому я решил взять англоязычные книги, нарезать их по предложениям, а после по запросу брать случайный отрывок из списка и озвучивать его с помощью какой‑нибудь text‑to‑speech модели. Удивительно, но openai умеет только speech‑to‑text, так что пришлось регистрировать проект в гугл клауде и отправлять отрывки туда.
Какие выбрать книги? Я взял ровно те же англоязычные книги, что стоят у меня на полке.
Далее немного NLP-шной рутины, можно пропустить. С сегментацией на предложения пришлось немного повозиться: хотя пакет nltk из коробки неплохо сегментирует текст, все же во фразах остается много мусора. Для выделения диалогов, прямой речи и прочих экспрессий использовались разные символы ("“”`’‘) и менялись от книги к книге. Плюс 3 вида дефисов и тире. При этом нельзя просто выкинуть пунктуацию, иначе при озвучке фраза сольется во что‑то монотонное и неразборчивое.
А еще те, кто читал «Оно» знают, что там главный герой заикается. Волевым решением я убрал все предложения с заиканиями из всех текстов, т.к. это нельзя ни озвучить, ни проверить нормально. Билл Денбро стал еще более молчаливым. А так же я оставил только средней длины фразы. А еще я не фильтровал отрывки по содержанию, так что это упражнение только 18+.
При проверке ответа пользователя и из исходной фразы, и из ответа уже убираются все не буквенные символы, фразы приводятся к нижнему регистру и матчатся. Понимая, что я сам многих слов не знаю, в этом режиме малодушно добавил на клавитару бота кнопки skip — пропустить, и show — показать фразу.
Vocabulary. Классическая тренировка слово — перевод. И снова — можно генерировать слова языковой моделью, а можно взять их из англо‑русских и русско‑английских словарей. Я нашел хорошо структурированный словарь В. К. Мюллера редакции 2013 года на 86 тысяч слов. Столько слов не знал даже Шекспир. Поэтому я взял те же книги, положил в Counter лемматизированные слова из каждой книги, отфильтровал по частоте, чтобы избавиться от общеупотребимых простых слов и имен, и нашел их и их переводы в словаре Мюллера.
Если судить по себе, то в англо‑русском словаре в моем мозге больше слов, чем в русско‑английском. Я могу без особых проблем читать английский текст и все понимать, но перевести аналогичный русскоязычный текст на английский уже проблема. Странно, что не во всех тренажерах, которые я пробовал, есть именно русско‑английские словарные пары. Поэтому я сделал их в своем боте. Для этого я прошелся в двойном цикле по каждому отобранному слову в англо‑русском словаре и по каждому варианту перевода слова нашел перевод в русско‑английском словаре.
Пользователь так же выбирает книгу, выбирает язык словаря, из которого будут выбираться случайные слова, и пытается перевести их на другой язык. Проверка — наличие перевода в списке возможных переводов для этого слова.
Иногда возможные переводы довольно неожиданные. Возможно, лучшим решением было бы найти русскоязычные тексты этих книг и аналогично отобрать слова из них.
В этом режиме я добавил кнопку пропуска слова и кое‑какой полезный функционал: при угадывании слова, оно кладется по ключу пользователя во внешнюю БД с меткой mistake = 0, а при ошибке или пропуске — mistake = 1. А к выбору книг я добавил опцию «My vocab», при выборе которой можно повторить уже изученные слова, где с вероятностью 0.3 будет даваться случайное ранее угаданное слово, и с вероятностью, соответственно, 0.7 — не угаданное.
Из не вошедшего. Хотелось сделать еще задание на понимание текста — аудирование или текстовое. Я просил языковую модель сгенерировать небольшой рассказ и после сгенерировать вопросы по этому рассказу с возможными ответами да/нет. И модель успешно это делала, но вопросы полностью повторяли предложения рассказа, что лишало задание всякого смысла. Например, в рассказе было: «Однажды, маленькая девочка темной ночью пошла за яблоками». Вопрос модели: «Правда ли, что маленькая девочка однажды ночью пошла за яблоками?». И пока мне не удалось заставить модель задавать чуть менее подробные вопросы, хотя бы такие: «Правда ли, что девочка пошла за яблоками?» или «Правда ли, что девочка ушла днем?».
Недостатки
Добавив весь этот функционал, настроив логику поведения при нажатии на кнопки, настроив БД хранения пользовательских данных, я наконец-то снял фильтрацию сообщений по моему айдишнику и пустил бота в мир. Оказалось, что название бота привлекает иностранцев, которым бот не очень-то и нужен.
Есть недостаток, о котором я знал с самого начала. Самый простой способ запуска телеграм бота - т.н. polling, когда бот периодически опрашивает сервера телеграма на предмет новых сообщений от пользователя и только тогда их получает и обрабатывает. Это может приводить к задержкам и вообще плохая практика. Хорошая практика - webhook - когда сообщения шлются напрямую в приложение на удаленном сервере. Но я так и не настроил webhook, потому что на самописный сертификат телеграм ругается. Возможно, в будущем я разберусь с этой проблемой. А пока работоспособность бота зависит от серверов самого телеграма.
А еще работоспособность зависит от openai. Бывают периоды высокой нагрузки, когда невозможно в адекватные сроки дождаться ответа от языковой модели (и это еще при использовании gpt-3.5. gpt-4 вообще сильно ограничена по нагрузке). Но здесь я уже ни на что не могу повлиять.
Каждая генерация — это недетерминированный процесс, и на один и тот же запрос может прилетать разный ответ. Иногда это приводит к замыканию бота: он не понимает задание, которе ранее успешно понимал, теряет в креативности, а иногда в процессе диалога вместо следующего вопроса или фразы присылает сообщение с благодарностью за беседу.
Выводы
Стоит заметить, что нельзя полностью доверять языковой модели свое обучение. Если уровень владения английским ниже A2 (примерно), то не стоит пользоваться этим ботом. Бот может не замечать ошибок, и чем длиннее ответ, тем вероятнее он их пропустит. Нужно, как минимум, знать правила построения предложений и времена, чтобы критично подходить к своим же ответам. Я рассматриваю этого бота как способ снять барьер при попытке заговорить на английском, но сомневаюсь, что бот может заменить живое общение.
Надеюсь, что теперь бот будет полезен не только мне.