Комментарии 4
Здравствуйте, я ваш студент, мне нравятся статьи на этом сайте и по близкой теме у меня есть проекты, я решил написать комментарий с ключевыми моментами:
1 AbuseChecker является слишком перегруженым слоем при этом не сильно спасающим от слива ответа
на деле обычно лучшим подходом являются 2-е:
Input guardian: дешёвая модель или не используя LLM (regex/ векторный поиск по набору векторов запрещённых)
Output guardian: проверка ответа перед отправкой пользователю, если ответ плохой можно проверить вопрос и расширить список запрещённых вопросов
2 0.03$ это очень много за 7-10 запросов, есть много способов сделать дешевле, конкретно для такой модели лучше сохранять векторные значения вопроса + ответ и переиспользовать ответ по косинусному сходству вопроса, не обращаясь к llm, так со временем расходы на llm сильно упадут
3 Вместо выбора темы из предложенных каждый раз, можно держать state machine с тема + N предыдущих вопросов по ней
И правило если по 1 теме N схожих вопросов то дать более подробный или простой ответ
Так вырастет качество и снизится количество вопросов
4 некоторые модели могут выводить ответ не целиком а последовательно кусками или выводить размышления, в апи тг есть возможность редактировать сообщение (в aiogram3 точно есть поддержка, telebot не использовал, не знаю), можно для красоты редактировать сообщение для вывода размышлений или кусков ответа
5 Выбор векторной бд: Qdrant действительно безумно скоростной, но до 5млн векторов можно спокойно использовать pg + pgvector, разница не велика
я бы хотел подсветить потенциальную психологическую проблему
"готовый ответ меньше ценится и расслабляет ученика"
В идеале финальный слой подправить, чтобы модель "направляла на ответ", но не давала полностью в готовом виде. Подталкивала и оставляла нерешенную часть или незавершенным исследование в поисках ответа. Может показывала корреляции, может показывала наблюдения, может показывала на какой странице поискать или как составить запрос на поиск в интернете. В общем есть много вариантов, которые помогут в решении, но студенту нужно будет приложить еще чуток усилий, чтобы ответ сформулировать и запомнить.
Ну и можно добавить "проверку ответов на корректность". Если студент сформулировал его сам, то можно сказать, в чем он прав/не прав и провести несколько неожиданных параллелий/наблюдений, где такое еще применимо. Это закрепит найденный ответ и повысит его ценность.
Мы запоминаем только то, обо что стукнулись или на что потратили силы и время.

Пишем прототип ИИ-агента для EdTech-саппорта без векторных баз и фреймворков: чистый Python, Gemini и JSON