Стартап Ello строит AI-репетитора по математике и чтению для детей 4–9 лет. Команда опубликовала разбор трёх ключевых архитектурных решений: почему выбросили стандартный tool loop, как работает асинхронный планировщик и зачем safety-классификатор запускается параллельно с генерацией. Это один из редких инженерных постов, где объясняют не «что построили», а «почему всё стандартное не сработало».
Контекст
EdTech исторически работал с записанным контентом и адаптивными квизами — Khan Academy, Duolingo, сотни их клонов. Real-time AI открыл другую модель: персонализированный живой диалог. Но стандартный агентный цикл (LLM вызывает инструменты → ждёт результатов → решает дальше) даёт 3–4 секунды задержки на каждый ход. Для взрослого пользователя — нормально. Для шестилетнего — катастрофа.
Ello обнаружила это не в теории, а в плейтестах. Один ребёнок в ходе тестирования понял, что может отвлекаться в паузах и всё равно не отстанет. Он адаптировался к медленному тьютору — и перестал учиться. Именно этот момент стал точкой отсчёта для переписки всей архитектуры. Аудитория 4–9 лет задаёт жёсткий latency-контракт: меньше секунды на каждый ход, без исключений.
Параллельно — специфика педагогики. Хороший учитель не просто быстро отвечает. Он часто намеренно не даёт ответ: задаёт уточняющий вопрос, даёт подсказку первым уровнем, позволяет ребёнку побороться с задачей. Дать правильный ответ слишком рано — значит забрать момент, в который происходит настоящее обучение. Это требование несовместимо с маленькой быстрой моделью: в ранних тестах Ello модели поменьше постоянно «сдавали» ответ, не выдерживая педагогической выдержки.
Аналитика
Три решения Ello — нестандартный harness, async planner и параллельный safety classifier — образуют паттерн, применимый далеко за пределами детского EdTech. Любой продукт с жёстким latency-контрактом и высокой ценой ошибки столкнётся с теми же развилками: голосовые боты в колл-центрах, медицинские ассистенты, игровые NPC, корпоративные ассистенты для операторов в режиме реального времени.
Ключевой архитектурный инсайт: разделить генерацию от исполнения. Модель стримит несколько действий в одном ответе. Интерпретатор парсит и исполняет каждое действие пока модель генерирует следующее. Ребёнок ждёт только первого действия — примерно 30 токенов — а не всего ответа целиком. Это не оптимизация поверх стандартного паттерна. Это другая архитектура.
Второй инсайт — про async planner: агент-планировщик работает пока ребёнок думает или говорит, не блокируя основной цикл. Он читает и пишет общее состояние через append-only лог событий — каждый ход, каждый тап, каждое обновление UI фиксируется как неизменяемое событие. Два агента работают одновременно без координации и блокировок. Это позволяет запускать более медленную и дорогую модель для педагогических рассуждений — не в ущерб скорости диалога. Ello также пред-генерирует ответы на предсказуемые реплики ребёнка: когда задаётся закрытый вопрос, система заранее готовит ветки для вероятных ответов. Если ребёнок попадает в предсказанную ветку — ответ воспроизводится без нового обращения к модели.
Кейсы применения в бизнесе
B2B-SaaS стартап, строящий голосовой HR-ассистент: стандартный tool loop даст 3–4 с на каждый вопрос кандидата — и разговор перестаёт быть живым. Паттерн Ello: streaming + interpreter на параллельных потоках. Первое действие — acknowledgement («понял, уточняю...») воспроизводится сразу, основная логика обрабатывается пока. Результат: субъективная скорость резко растёт без изменения качества оценки кандидата.
Корпорация с legacy-инфраструктурой, запускающая ассистент для операторов call-центра: самый переносимый паттерн здесь — async planner. Пока оператор слушает клиента, планировщик анализирует историю разговора и готовит следующий шаг. Не нужно ждать паузы чтобы начать рассуждать. Это интегрируется поверх существующего стека как отдельный сервис — без перестройки основной логики.
SMB в КР/СНГ, запускающий Telegram-бота для клиентского сервиса: минимальная версия паттерна — запускать topic/safety classifier параллельно с основной генерацией, а не последовательно. Реализуется через asyncio с Claude Haiku для классификатора и Sonnet для основного ответа. Снижает субъективное ощущение задержки без изменения бизнес-логики бота.
Кейсы в личной жизни
Разработчик, строящий персонального ассистента: попробуй добавить «рефлексивный» первый ответ — модель сначала подтверждает, что запрос принят и понят, пока основная генерация идёт параллельно. Пользователь (ты сам) чувствует живой отклик. Особенно заметно на долгих запросах с анализом кода.
Контент-мейкер, использующий AI для сценариев и постов: паттерн async planner применим к рабочему процессу вручную. Пока пишешь один блок текста, отдельный агент-планировщик в соседнем чате анализирует весь материал и готовит рекомендации для следующего блока. Нет нужды прерываться на «подожди, проанализируй всё написанное».
Студент или фрилансер, использующий AI как ментора для обучения: главный педагогический урок Ello доступен прямо сейчас без кода. Дай Claude инструкцию:
«Не давай прямой ответ сразу. Сначала задай один уточняющий вопрос или дай подсказку первым уровнем — только если я прошу второй раз, раскрывай полное решение».Это имитирует хорошего учителя и реально меняет качество усвоения материала.
Как применить сегодня
- Если строишь real-time агента — разделяй генерацию и исполнение. Интерпретируй первые действия пока модель генерирует следующие, не жди полного завершения ответа.
- Добавь eager-ответ: первые 30 токенов — acknowledgement или зеркало («понял», «хороший вопрос, смотрю...»), основная логика генерируется параллельно.
- Запускай safety/topic classifier параллельно с основной генерацией через
asyncio— не последовательно. Гейтируй исполнение, а не генерацию. - Для диалоговых агентов: выдели async planner в отдельный агент с более сильной моделью, запускай его в паузах пользователя (пока тот печатает или думает).
- Если ожидаешь предсказуемый набор ответов — пред-генерируй ветки ответов параллельно до того, как пользователь ответил. При попадании в ветку — воспроизводи мгновенно.