DeepSeek, запущенный через OpenRouter, — первая нейросеть, которую автор подключил для оценки ответов в тренажёре чтения кода. Проект родился из желания быстрее читать чужой код и понятнее объяснять свой. Пользователь получает готовый фрагмент кода и объясняет его словами, а языковая модель оценивает объяснение по четырём осям: понимание логики, граничные случаи, анализ сложности и понимание синтаксиса. Однако первая версия промпта и модель DeepSeek давали нестабильные, случайные результаты — типичная проблема недетерминизма LLM.

Автор не сразу пришёл к ансамблю. Сначала он планировал поднять локальную модель Qwen, но отказался из-за сложности. Вместо этого использовал OpenRouter для доступа к DeepSeek. Изначально система оценки была наивной: все четыре оси и теги (циклы, массивы, рекурсия) лежали в одном огромном промпте. Модель выдавала непредсказуемые результаты, что делало тренажёр бесполезным.

СложностьNormalHardcore
Easy×1.0×1.5
Medium×1.5×2.5
Hard×2.5×4.0

Разработчик пересмотрел подход: он разделил оси и теги, сделал теги отдельными метриками, а затем перешёл к ансамблю из нескольких моделей — Claude, GPT-4 и Gemini. Каждая модель оценивала ответ отдельно, после чего результаты усреднялись голосованием. Это значительно повысило стабильность оценок. Тем не менее, проблема недетерминизма не решена полностью: даже ансамбль иногда даёт противоречивые результаты. Автор продолжает экспериментировать с промптами и архитектурой.

Проект представляет собой веб-приложение на Java с бэкендом и фронтендом, который переделывался множество раз. Интересно, что на ранних этапах вместо нейросети стояла заглушка, возвращавшая случайные числа — чтобы отладить интерфейс. Эта история иллюстрирует типичные сложности при разработке продуктов на базе LLM: нестабильность генерации и необходимость инженерных обходных путей.

Для тех, кто сталкивается с недетерминизмом LLM в своих проектах, автор рекомендует использовать ансамбли и калибровку промптов. Однако универсального решения пока нет, и каждый кейс требует индивидуального подхода.