Привет! Я Никита Щербо, разработчик в компании Битрикс24.Сегодня поделюсь с вами небольшим кейсом — расскажу, как мы с помощью ИИ нагенерили простых примеров длПривет! Я Никита Щербо, разработчик в компании Битрикс24.Сегодня поделюсь с вами небольшим кейсом — расскажу, как мы с помощью ИИ нагенерили простых примеров дл

Как быстро нагенерить простых примеров для погружения новичков в сложный продукт

2026/02/02 13:00
6м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу crypto.news@mexc.com

Привет! Я Никита Щербо, разработчик в компании Битрикс24.

Сегодня поделюсь с вами небольшим кейсом — расскажу, как мы с помощью ИИ нагенерили простых примеров для обучения сотрудников работе с Service Locator.

Возможно эта идея пригодится тем, кто проводит онбординг новичков, их обучение работе с новыми инструментами или погружение в какой-то продукт.

Итак, мы все давно знаем, что ИИ может генерить и код, и тесты, и документацию. У нас была обратная задача — имея код, документацию и тесты, создать простые и понятные примеры использования инструмента.

У меня в команде 30 человек — много новичков, которые пришли к нам из «Битрикс24 // Университет», есть те, кто уже давно работали с Service Locator, но не интересовались тем, как устроен механизм. Мы решили организовать общий митап для команды и показать, как можно использовать это решение в наших задачах.

Но оказалось, что простых и понятных примеров у нас нет. Вытаскивать их из кода внутреннего продукта было нереально — без контекста они не имели смысла.

4b1a6fe8e776bec9dd6ba3b44797fc9b.png

Тесты для Service Locator, которые мы год назад также писали с ИИ, не были предназначены для чтения человеком, толку от них для новичков не было.

139873fa8644d3b16f41f70ed8e16478.png

Оставалось одно — скормить ИИ все, что было, и попросить нагенерировать примеров на простых и понятных сущностях, как в учебниках по программированию — машинки, зверюшки и т.д.

Вот как это было:

1. Закинули в нейросеть имеющуюся информацию и объяснили задачу.

Что мы отдали ИИ:

  • Папку с кодами самого Service Locator

  • Внутреннюю документацию по нему, фактически — инструкцию для пользователей, поверхностное описание того, что нужно написать в коде, чтобы использовать инструмент.

  • Набор тестов, который покрывал весь технический функционал Service Locator.

Дальше буквально за несколько итераций мы создали 9 файлов с понятными учебными примерами на каждый случай использования Service Locator. На первом примере ИИ с моими подсказками научился выдавать нужный результат, а все остальные уже генерил самостоятельно.

В результате получили простые примеры, на уровне букваря, на абстрактных, но вполне понятных сущностях — тех самых машинках и зверюшках.

2. С помощью ИИ-агентов собрали реальные примеры для ряда случаев

Здесь понадобились мои знания — я как разработчик, знаю, как Service Locator применяется внутри наших продуктов. Также я использовал наши внутренние инструменты на базе ИИ-агентов. Агенты знают, где какой код лежит, и могут использовать этот контекст. Они помогли найти нужные примеры в исходных кодах нашего продукта.

Реальные примеры я добавил не ко всем случаям — где-то это было избыточно или невозможно.

3. Результат: получили 9 файлов с понятными примерами, которые иллюстрируют все варианты применения Service Locator.

Приведу несколько примеров, чтобы показать, насколько хорошо нейросеть справилась с задачей.

Пример с отправкой СМС

Это практически стандартный пример, типовая задача, понятная любому разработчику. Этот пример нейросеть придумала полностью сама, он понятно объясняет, как написать код, который отправляет смс с помощью Service Locator.

Мы в продукте реализуем эту задачу другим способом, но этот пример я оставил для обучения новичков.

// --- 1. Объявление классов --- /** * Класс-конфигурация (Зависимость). * Хранит API ключ, необходимый для работы. */ class ApiKeyConfig { public string $key = 'SECRET_KEY_999'; } /** * Реализация сервиса (SmsSender). * Зависит от ApiKeyConfig, который должен прийти в конструктор. */ class SmsSender { private ApiKeyConfig $config; public function __construct(ApiKeyConfig $config) { $this->config = $config; } public function send(string $msg): void { echo "SMS: '{$msg}' (используя ключ {$this->config->key})" . PHP_EOL; } } // --- 2. Конфигурация ServiceLocator --- $serviceLocator = ServiceLocator::getInstance(); // Регистрируем сервис отправки // В 'constructorParams' явно указываем, что нужно передать в конструктор SmsSender. $serviceLocator->addInstanceLazy(SmsSender::class, [ 'className' => SmsSender::class, 'constructorParams' => [ new ApiKeyConfig(), ], ]); // --- 3. Использование --- // Запрашиваем сервис по интерфейсу. $service = $serviceLocator->get(SmsSender::class); $service->send('Привет, Битрикс!');

Смешанные зависимости

Это один из самых сильных примеров — нейросеть описала в нем самую главную возможность Service Locator, реализацию смешанных зависимостей. Если бы мне нужно было придумать такой пример, пришлось писать бы большое количество кода, придумывать классы, но ИИ все сделал за меня.

// --- 1. Разные типы зависимостей --- // A. Конкретный класс (Локатор создаст сам) class HttpClient { public function getName(): string { return 'CurlClient'; } } // B. Абстрактный класс (Нужна регистрация) abstract class AbstractCache { abstract public function getName(): string; } // Может быть использовано class RedisCache extends AbstractCache { public function getName(): string { return 'Redis'; } } class MemcacheCache extends AbstractCache { public function getName(): string { return 'Memcache'; } } // C. Интерфейс (Нужна регистрация) interface LoggerInterface { public function getName(): string; } class FileLogger implements LoggerInterface { public function getName(): string { return 'FileLog'; } } // D. Главный класс (Локатор создаст сам, подтянув зависимости) class AppManager { public function __construct( public HttpClient $http, // Сам найдет public AbstractCache $cache, // Возьмет из конфига public LoggerInterface $log // Возьмет из конфига ) { } } // --- 2. Конфигурация --- $serviceLocator = ServiceLocator::getInstance(); // Регистрируем ТОЛЬКО абстракции и интерфейсы $serviceLocator->addInstanceLazy(AbstractCache::class, ['className' => MemcacheCache::class]); $serviceLocator->addInstanceLazy(LoggerInterface::class, ['className' => FileLogger::class]); // AppManager и HttpClient регистрировать НЕ НУЖНО. // --- 3. Использование --- $app = $serviceLocator->get(AppManager::class); echo "HTTP: {$app->http->getName()}, Cache: {$app->cache->getName()}, Log: {$app->log->getName()}" . PHP_EOL;

Циклические зависимости

Это распространенная проблема, но и ее важно показать на понятном примере. Тут ИИ, честно сказать, удивил — привел в пример не что-нибудь, а философскую проблему яйца и курицы! Достаточно понятно для любого человека объяснил проблему замкнутого круга.

// --- 1. Классы с циклом --- class Chicken { // Курица зависит от Яйца public function __construct(public Egg $egg) {} } class Egg { // Яйцо зависит от Курицы public function __construct(public Chicken $chicken) {} } // --- 2. Использование --- $serviceLocator = ServiceLocator::getInstance(); try { echo "Пытаемся получить Курицу...\n"; // Мы не регистрируем классы, так как они конкретные. // Локатор начнет создавать Chicken -> увидит Egg -> начнет создавать Egg -> увидит Chicken... // И тут он поймет, что Chicken уже в процессе создания. $chicken = $serviceLocator->get(Chicken::class); } catch (CircularDependencyException $e) { echo "\nПоймано исключение!\n"; echo "Тип ошибки: " . get_class($e) . "\n"; echo "Сообщение: " . $e->getMessage() . "\n"; // Обычно сообщение выглядит так: // "Cyclic dependency detected for service: Chicken -> Egg -> Chicken" }

Что мы получили в итоге

Прежде всего, ИИ помог быстрее сгенерировать примеры — это факт.

Я бы придумал их часа за полтора, но вопрос в качестве — вряд ли они были бы простыми, насущными, как пример с смс или курицей и яйцом. Я давно и безнадежно профдеформирован, для меня простые вещи уже не очевидны, а очевидные — не просты). Я больше усилий потратил бы на поиск действительно понятных примеров на уровне учебника.

Но гораздо интереснее, сколько времени, а главное — нервов, мы сэкономили нашим новичкам. Конечно, можно построчно изучать код продукта и разбираться в работе сервиса в течение нескольких дней. Но лучше действовать последовательно и начинать с простого. Если говорить про онбординг ребят, которые пришли к нам после нашего же Битрикс24//Университет, то им мы сэкономили несколько дней, показав простые примеры использования Service Locator.

Буду рад, если наша идея с генерацией примеров с помощью ИИ окажется полезной и поможет вам быстрее обучать новых специалистов!

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу crypto.news@mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно

Киты снова накапливают мемкоин TRUMP перед обедом Трампа

Киты снова накапливают мемкоин TRUMP перед обедом Трампа

Ключевые моменты: Киты снова покупают мемкоин президента Дональда Трампа TRUMP, поскольку приближается Trump Gala. Согласно данным Lookonchain, один кит,
Поделиться
Themarketperiodical2026/04/13 06:46
Лучшая криптовалюта для инвестиций в апреле? Litecoin остается стабильным, Hyperliquid движется медленно, APEMARS Этап 16 создает редкую возможность для раннего входа

Лучшая криптовалюта для инвестиций в апреле? Litecoin остается стабильным, Hyperliquid движется медленно, APEMARS Этап 16 создает редкую возможность для раннего входа

Криптовалютный рынок демонстрирует возобновление активности, поскольку инвесторы ищут лучшую криптовалюту для инвестиций в апреле. Litecoin продолжает демонстрировать устойчивость на фоне сети
Поделиться
Captainaltcoin2026/04/13 06:15
Пропустили ранний Monero и Zcash? APEMARS становится лучшим альткоином для покупки сегодня с привлечением более 400 000$ на этапе 16

Пропустили ранний Monero и Zcash? APEMARS становится лучшим альткоином для покупки сегодня с привлечением более 400 000$ на этапе 16

Криптовалютные рынки движутся циклами, но эмоции инвесторов следуют гораздо более простой схеме. Волнение приходит рано, сомнения появляются во время роста, а сожаление возникает после
Поделиться
Timestabloid2026/04/13 06:15

Новости 24/7 в прямом эфире

Еще

Генезис USD1: 0% + 12% APR

Генезис USD1: 0% + 12% APRГенезис USD1: 0% + 12% APR

Новые пользователи: Стейкайте и получите до 600% APR