Появилось желание практиковать английский. Первая мысль — собрать бота, с которым можно просто переписываться. Пишу на русском, он переводит, показывает как звучит, отвечает. Режим диалога с агентом.
Идея появилась — значит нужно сделать. Собрал агента за вечер.
Стек
Платформа: n8n в самой простой конфигурации + Telegram-бот.
Модель: Начал с GPT 5.2 — она как раз только вышла. Пробовал, смотрел, какая модель лучше справляется. На начальном этапе это не имеет практически никакой разницы — агент выполняет очень простые функции, и с этим справится любая модель. В итоге остановился на Sonnet 4.5.
Промпт: Вначале модель писала одним блоком всё. Потом попросил разделять — отдельно текст для Telegram, отдельно для озвучивания.
Озвучивание
Первое, что понадобилось — произношение. Подключил TTS, чтобы бот озвучивал свои ответы.
Модель: OpenAI TTS-1-HD
Голос: Nova
В принципе, можно подобрать любой голос, который больше нравится.
Распознавание речи
Второе — хочется не только писать, но и говорить самому.
Проблема: записываю голосовое, внутри мешаю русские и английские слова. Начал на английском, продолжил по-русски. Whisper почему-то делал автоматический перевод всего в один язык.
Решение: у Whisper есть поле для промта. Указал, что это для обучения английскому. Все слова транскрибировать так, как произношу — если говорю на русском, то русский, если на английском, то английский.
Результат: модель понимает, что я говорю и как пытаюсь это произнести. Задаю вопрос — получаю ответ и сразу слышу, как это звучало бы правильно.
Модель: Whisper 3 Large через Groq.
Для себя сделал программу под Windows для распознавания голоса — можно скачать здесь: https://github.com/oiv-an/Voice
Работа с изображениями
Проходит ещё несколько дней. Думаю — было бы круто отправлять модели фотки. Сфоткать что-то и спросить: «А это что такое?»
Оказалось, делается в пару кликов: https://t.me/olyanskiy_tech/927
Фотография моментально попадает в модель, и она точно знает, что на ней.
Первая версия памяти
Следующий этап — память. Контекстное окно не резиновое.
Хранение: Redis.
Как работает:
- Копятся сообщения до 40 штук
- Когда набирается 40 — вытаскиваю из Redis все записи
- Первые 20 отрезаю, из них выдёргиваю ключевые факты через нейросеть
- Результат возвращаю обратно в Redis
- При следующем диалоге — подгружается в системный промт
Каждый цикл из 40 сообщений обновляет центральный блок памяти. По идее, должно работать.
Продолжение: почему эта схема сломалась и как я случайно нашёл решение получше.