DeepSeek, запущенный через OpenRouter, — первая нейросеть, которую автор подключил для оценки ответов в тренажёре чтения кода. Проект родился из желания быстрее читать чужой код и понятнее объяснять свой. Пользователь получает готовый фрагмент кода и объясняет его словами, а языковая модель оценивает объяснение по четырём осям: понимание логики, граничные случаи, анализ сложности и понимание синтаксиса. Однако первая версия промпта и модель DeepSeek давали нестабильные, случайные результаты — типичная проблема недетерминизма LLM.
Автор не сразу пришёл к ансамблю. Сначала он планировал поднять локальную модель Qwen, но отказался из-за сложности. Вместо этого использовал OpenRouter для доступа к DeepSeek. Изначально система оценки была наивной: все четыре оси и теги (циклы, массивы, рекурсия) лежали в одном огромном промпте. Модель выдавала непредсказуемые результаты, что делало тренажёр бесполезным.
| Сложность | Normal | Hardcore |
|---|---|---|
| Easy | ×1.0 | ×1.5 |
| Medium | ×1.5 | ×2.5 |
| Hard | ×2.5 | ×4.0 |
Разработчик пересмотрел подход: он разделил оси и теги, сделал теги отдельными метриками, а затем перешёл к ансамблю из нескольких моделей — Claude, GPT-4 и Gemini. Каждая модель оценивала ответ отдельно, после чего результаты усреднялись голосованием. Это значительно повысило стабильность оценок. Тем не менее, проблема недетерминизма не решена полностью: даже ансамбль иногда даёт противоречивые результаты. Автор продолжает экспериментировать с промптами и архитектурой.
Проект представляет собой веб-приложение на Java с бэкендом и фронтендом, который переделывался множество раз. Интересно, что на ранних этапах вместо нейросети стояла заглушка, возвращавшая случайные числа — чтобы отладить интерфейс. Эта история иллюстрирует типичные сложности при разработке продуктов на базе LLM: нестабильность генерации и необходимость инженерных обходных путей.
Для тех, кто сталкивается с недетерминизмом LLM в своих проектах, автор рекомендует использовать ансамбли и калибровку промптов. Однако универсального решения пока нет, и каждый кейс требует индивидуального подхода.



