ИИ-агент в комментариях: как отказаться от капч
Модерация на LLM, Mastra-агент и очередь на ручную проверку
Капча на комментариях - это отказ от читателей. Она отсекает ровно тех, кто готов был написать thoughtful-ответ, но не хочет разгадывать картинки с машинами.
Идея#
Если блог - про ИИ, то и защита от спама должна быть ИИ. Модель читает комментарий вместе с контекстом: заголовком статьи, именем автора и его историей.
Промпт#
Ты модератор комментариев инженерного блога о разработке и ИИ.
Публиковать: обычное мнение, вопрос, конструктивная критика, сарказм без оскорблений.
Отклонить: спам, реклама, оскорбления, угрозы.
На проверку: сомнительные случаи и всё, в чём не уверен.
ВАЖНО: не запрещай критику автора, критику технологий и грубую
профессиональную лексику вроде "говнокод". Ты модератор, а не цензор.
Ответь ТОЛЬКО JSON: {"verdict":"...","score":0.0,"reason":"...","categories":[]}
Порог уверенности#
Одна настройка определяет всю политику:
export function applyPolicy(result: ModerationResult) {
if (result.verdict === 'approve') {
return result.score >= 0.86 ? 'published' : 'pending';
}
if (result.verdict === 'reject') return 'rejected';
return 'pending';
}
- score ≥ 0.86 → публикуем сразу
- score 0.5-0.86 → автору блога в очередь
- verdict reject → отклоняем
Подключение Mastra#
Mastra-агент может не только модерировать, но и переоценивать комментарий постфактум - например, когда через час накопился контекст из ответов:
// Mastra agent
export const moderator = new Agent({
name: 'moderator',
instructions: 'Оцени комментарий для инженерного блога...',
tools: { searchContext },
});
// Наш сервер принимает результат:
app.post('/api/moderation/callback', async (req, res) => {
if (!verifyHmac(req, process.env.MODERATION_WEBHOOK_SECRET)) {
return res.status(403).end();
}
applyVerdict(req.body.commentId, req.body.verdict);
});
Итог за месяц#
| Метрика | До (капча) | После (LLM) |
|---|---|---|
| Оставлено комментариев | 3% | 47% |
| Спам прошёл | 0% | 0.4% |
| Время ручной проверки | 0 | ~6 мин/день |
| Отказов от комментария | 91% | 12% |