
Привет, Хабр Меня зовут Дмитрий Бабаев, я руководитель R&D GigaCode в Сбере. Сегодня расскажу о том, как мы создавали ИИ‑помощника для программистов задолго до того, как это стало мейнстримом.
Многие компании думают о том, чтобы выпустить собственного ИИ‑помощника для разработчиков. Мы начали делать GigaCode около трех лет назад — ещё до появления Cursor и других популярных сегодня решений.
За это время мы создали целую экосистему решений для разработки — GigaDEV: IDE на основе IntelliJ, платформу Gitverse как аналог GitHub и сам GigaCode.
Философия двух моделей: почему одной недостаточно
Вместо использования «единой модели для всего» мы разработали две специализированные: компактную Inline для мгновенных подсказок и мощную Chat для сложных задач.
Логика простая: когда разработчик нажимает клавишу, он не готов ждать. Каждое нажатие должно вызывать модель, которая генерирует варианты подсказки практически мгновенно. Попробуйте работать с помощником, который «думает» полсекунды на каждый символ, и поймёте, о чём речь.
Inline‑модель обрабатывает всё, что связано с непосредственным редактированием кода: однострочные и многострочные дополнения, написание функций по комментариям, даже прогноз следующей позиции редактирования (Next Edit Prediction). Это то, что превращает IDE из редактора в умного помощника для разработчика.
GigaCode Inline: когда размер не главное
Наша Inline‑модель — это 3 миллиарда параметров и 5 триллионов токенов обучения. Для сравнения: Qwen Coder 2.5 обучали на том же объёме данных но для инициализации использовали NLP модель Qwen 2.5. Мы же, начали с нуля, полностью обучив модель со случайных весов.
Почему не взяли готовые веса от Qwen? Потому что задачи заметно отличаются. NLP‑модели привыкли читать текст слева направо, а нам нужно Fill in the Middle: заполнять пропуски, зная контекст с обеих сторон. Это как разница между чтением книги и решением кроссворда.
Датасет собирали на основе классического The Stack v2, но с добавлением свежих GitHub-репозиториев и OpenCoder annealing corpus. Распределение задач в пре-трейне: 25 % обычного Next Token Prediction, 37,5 % Inline FIM и 37,5 % Multi-line Structure-aware FIM. Последний — это наше ноу-хау.
Главная особенность — Structure-aware FIM вместо line-aware подхода. Вместо заполнения случайных фрагментов мы учили модель генерировать цельные смысловые блоки: функции, циклы, условные конструкции. Качество выросло заметно.

Ещё одним открытием стало то, что даже трёхмиллиардные модели регулярно ошибаются в синтаксисе. Забывают закрыть скобку, путают названия переменных, делают банальные опечатки. Хотя казалось, что такие базовые вещи модель должна освоить в первую очередь. Поэтому мы добавили фазу DPO (Direct Preference Optimization). Как результат — научили модель делать меньше синтаксических ошибок.
Метрики: как измерить «удобство»
Классические метрики типа «exact match» плохо работают для кода: слишком много способов написать одно и то же. Но они засчитывают ответ только при абсолютном совпадении с эталоном, вплоть до каждого пробела и символа. Это для программирования имеет достаточно мало смысла, так как один и тот же алгоритм можно написать десятками разных способов. Exact match признает правильным лишь тот, в котором буква в букву повторяется образец — именно поэтому разработчики всё чаще отказываются от этой метрики.
И в том числе поэтому мы придумали нашу метрику — ClickScore. Она измеряет долю символов, которую разработчику не нужно печатать благодаря подсказкам.
Алгоритм работает итеративно: засчитываются символы, совпадающие с корректным ответом, а если символ не совпал, то мы его добавляем во вход модели и вычисляем новое продолжение. Получается более честная оценка реальной пользы.
Результаты получились интересные: наша Inline 3B с DPO показывает 86,4 % ClickScore на Python против 80,3 % у Qwen2.5-Coder 3B. Более того, мы обгоняем даже Qwen2.5-Coder 7B на Python и Java, несмотря на вдвое меньший размер.

GigaCode Chat: когда нужен интеллект
Chat-модель размером 32 миллиарда параметров — это специализированный инструмент, предназначенный для сложных задач. Редактирование выделенных блоков, генерация тестов, объяснение кода, проверка, работа в режиме агента с целыми проектами — всё, что требует глубокого понимания контекста.
Сначала за основу мы взяли Qwen Coder, но делали полный alignment самостоятельно — SFT и DPO. Плюс 150 миллиардов токенов на адаптацию к русскому языку, потому что наша первая версия GigaChat не очень дружила с кодом.
Сейчас перешли на GigaChat-2 в качестве основы — он заметно лучше понимает код, и нам больше не нужна фаза русификации.
DPO делали на проверяемых задачах: генерация кода по описанию из CodeForces и создание Unit‑тестов.
LiveCodeBench: динамический бенчмарк против переобучения
Также для оценки качества модели в генерации кода мы использовали один из наиболее часто используемых современных бенчмарков — LiveCodeBench. Его особенность в том, что его регулярно обновляют свежими задачами с соревнований по программированию. Это решает проблему контаминации, когда модели «видели» задачи во время обучения.
График деградации ряда других бенчмарков имеет один общий недостаток: как только выходят новые модели, качество решения «старых» задач у них растёт по не до конца понятным причинам. А на свежих задачах качество растет в существенно меньшей степени.
Наша Chat-модель показывает в бенчмарках результаты на уровне Qwen2.5 Coder 32B: 30,7 % против 30,1 % на LiveCodeBench. Но в генерации тестов мы выделяемся уже сильнее — 23,8 % против 11,9 %. Тут нам помогла DPO фаза пост-обучения.

Время рассуждающих моделей
Многое изменилось с появлением reasoning-моделей (будем называть их рассуждающими). Qwen 3 с поддержкой цепочек рассуждений показал двукратный рост качества: 65,7 % против 31,3 % в обычном режиме. Такие результаты заметно отличались от привычно ожидаемых плавных улучшений качества.
До рассуждающих моделей наша система уверенно превосходила Qwen Coder, особенно на сложных задачах. Но с появлением рассуждающих моделей положение дел сильно изменилось. В настоящий момент мы активно работаем над нашей собственной рассуждающей моделью и первые результаты обнадёживают: 50,7 % на LiveCodeBench против 30,7 % у предыдущей версии. Догоняем и планируем перегнать.
Испытание реальностью: SWE Bench
SWE Bench — это один из наиболее объективных тестов для пишущих код LLM. Он берёт реальные issue(проблемы) из популярных GitHub-репозиториев: Django, NumPy, SciPy и других, а модель должна понять проблему, найти нужное место в кодовой базе и предложить корректное решение, которое пройдёт существующие тесты.
Здесь наша модель показывает 21.33% в связке с Agentless pipeline и RAG — результат близкий к GPT-4 (32 %), но пока отстающий от лидеров. Интересно, что DeepSeek R1 с рассуждениями показывает 26 % — хороший результат, но не сильно выделяющийся..
Стоит также помнить, что рассуждающие модели хорошо генерируют код, но хуже справляются с пониманием архитектуры проекта. DeepSeek плохо определяет, где именно нужно вносить изменения. Так что даже в рамках разработки ПО, рассуждающие модели не являются универсальным решением для всех задач и для некоторых из них они имеют слабые стороны.

Что дальше: планы и амбиции
Мы планируем открыть исходный код inline‑модели — пусть сообщество использует наши наработки. Основные выводы которые мы сделали: особая важность structured training для FIM‑задач, необходимость post‑training даже для специализированных кодовых моделей и революционная роль рассуждающих архитектур в современных системах генерации кода.
Конкуренция в сфере ИИ‑помощников для кода становится только выше — каждый месяц появляются новые игроки. Но мы не сидели сложа руки, а параллельно со всеми накапливали как теоретический, так и практический опыт с применением в бизнесе.
В итоге у нас получилась система, которая в некоторых аспектах превосходит доступные open source решения в своей весовой категории. И это только начало.
Кстати, мы активно нанимаем в команду. Если вам интересно создавать ИИ‑ассистентов разработчика и поработать в одной из лучших ML‑команд в России — пишите нашим рекрутерам.
P. S. Если у кого есть вопросы по техническим подробностям — спрашивайте в комментариях.
Комментарии (12)
DmitryOlkhovoi
08.08.2025 17:10То, что вы делаете это круто. Но пока не хватает нормального интерфейса, типо под vs code плагин. Мы в екоме брали в эксперимент, пока очень сыро, элементарно не может код подставить. Подсмотрите у Qodo или Tabnine.
ratatosk Автор
08.08.2025 17:10То что плагин не умеет из чата код в файл вставлять это да, наша большая недоработка(. Но у нас тут большие планы по улучшению и доработке UI, в том числе, хотим добавить inline edits и качественную интеграцию чата с кодом. И собираемся достаточно скоро сделать в плагинах агентный режим работы с кодом.
CBET_TbMbI
08.08.2025 17:10Философия двух моделей: почему одной недостаточно
Почему только двух? На мой взгляд, хороший ИИ должен состоять из многих взаимодействующих сетей.
Сильный ИИ - это не нейросеть, это нейросеть нейросетей. Каждая из них может быть сравнительно небольшой, но главное, чтобы они умели взаимодействовать.
Есть некая вероятность, что они сам собой так или иначе сложатся в процессе обучения, но интересно было бы попробовать и заранее разделить их по некоторым функциям.
ratatosk Автор
08.08.2025 17:10Тут сложно что то кратко сказать, есть аргументы и за то что правильная конфигурация должна появится сама в процессе обучения, например, как пишет в Саттон в bitter lesson. Но, часто, на практике, специализированное решение побеждает общее.
yaBliznyk
08.08.2025 17:10Интересная статья, спасибо за инструменты, которые вы делаете.
Меня очень сильно удивляет отсутствие возможности использовать российские модели в уже имеющихся инструментах, таких как cline, aider, kilo code. Совсем недавно была статья и там показали инструмент, который позволяет использовать гигачат для таких целей, но он не заточен на программирование и сильно проигрывает большинству альтернатив. Было бы очень круто иметь OpenAI совместимый api до codechat. При этом продолжать пользоваться гигакодом для fim и коротких вопросов.
fruitpicker_01
08.08.2025 17:10"Совсем недавно была статья и там показали инструмент, который позволяет использовать гигачат для таких целей" - а что за статья, подскажи, пожалуйста
ratatosk Автор
08.08.2025 17:10Я думаю мы в какой то момент сделаем поддержку использования моделей по API, без плагинов. Это логичный путь развития. Плюс мы планируем некоторые модели публиковать в open-source, их можно будет развернуть на собственном железе.
SabMakc
08.08.2025 17:10Вышел Qwen3-Coder-30B-A3B - т.е. тоже на 3млр активных параметров и с поддержкой FIM. С ним не сравнивали свою inline модель?
zababurin
Подскажите, а какие ограничения у гига чата на количество загружаемой информации ?
У меня так и не получилось свой код в чат загрузить. 261 предложений, 38045 токенов
И планируете ли вы сделать поддержку загрузки большого объема информации ?
ratatosk Автор
У нас сейчас чат модель поддерживает 32K на все входные токены + ответ. Пока что 38K не влезет. Планируем в будущем расширить контекст до 256K.