В преддверии выхода GPT-5 хотелось сделать бенчмарк который по-настоящему проверит её способности. Не прекращаются споры – если LLM просто стохастические попугаи, то как решают олимпиадные задачи по математике? Если Chatgpt способен написать полезное приложение по одному запросу, то почему не может посчитать число r в слове Strawberry или описать как фермеру перевезти себя и две курицы через реку? Пора положить обсуждениям конец с помощью 150 задач по Битрикс24 разработке!
Кто просил об этом?
Легко было оценивать LLM когда они писали статьи про единорогов и сочиняли плохие стихи. Теперь, когда модельки решают задачи на переднем крае математики, неспециалистам трудно разобраться прогрессируют ли LLM с каждым новым релизом.
Известные исследователи в области машинного обучения много говорят о важности создания новых методов тестирования и оценки языковых моделей – Бенчмарков. Некоторые даже заявляют, что составление бенчмарков это ключевая работа, а дальнейшее улучшение модели это лишь оптимизация функции на успешное прохождение всё большего числа из них. Чем выше оценки моделей на тестах в различных областях, тем более общим становится интеллект LLM. Актуальный на сегодня список бенчмарков можно глянуть здесь.
Обычно задачи в новых бенчмарках скрыты чтобы не допустить обучения новых версий. Это не тот случай. Пусть новые версии обучатся.
Это точно нужно?
С популярными бенчмарками много проблем:
· В некоторых вроде MMLU на часть вопросов невозможно ответить, а остальные так просты что все модели набирают больше 90%
· Другие, скажем SWE-Verified и Frontier math, составляли сами вендоры LLM и переобучили на них, а когда метрика, используемая для оценки, становится целью она перестаёт быть хорошей метрикой
· Третьи вместе с ответами утекли в интернет и модели на них обучались
Бенчмарк из 150 задач по Битрикс24 не страдает от этих проблем, никому в ведущих AI-лабораториях не придет в голову отдельно оптимизировать ИИ для решения задач доработки CMS, CRM, Task-tracker системы из России. А сами задания собраны впервые и состоят на 80% из практических задач Битрикс24 разработчика, и на 20% из заданий в обучающих материалах и курсах.
В массиве собранных заданий есть очень простые – «написать вебхук для уведомления». И есть сложные – «написать код для отображения грида с фильтром из кастомной таблицы». Они представлены примерно в равном объёме: 55 простых задач, 55 средних, 40 сложных.
Близкими по назначению к этой оценке можно считать статьи и блогпосты узкоспециализированных специалистов, устраивающих LLM экзамены по квантовым вычислениям, экономике и софтверной разработке.
На Хабре также много статей с проверками способности моделей выполнять различные интеллектуальные задания. Но самих заданий в статьях мало. То ли дело 150 заданий, почти как в одном из первых кодинговых бенчмарков – HumanEval, составленном несколько лет назад золотым составом OpenAI
Устройство проверки
Вопросы к модели Gemini 2.5 pro задавались через Google AI Studio c Thinking budget в 32 тысячи токенов. Предложенные моделью ответы и код проверялся на корпоративном портале (коробочной версии) Битрикс24 с обновлениями на начало июля 2025 года.
Все GPTподобные модели склонны писать код для Битрикс24 с использованием вебхуков вместо внутренних методов и функций. Вероятно, потому что это более универсально и позволяет работать и с облачным Битрикс24. Для коробочных версий это неэффективно и нежелательно. Чтобы этого избежать в значительном числе вопросов прямо указано использовать Bitrix framework или внутренний api.
Кроме этого, если первое предложенное Gemini решение отдает конкретную ошибку, ошибка копируется в чат и даётся одна вторая попытка.
Вступление окончено, время промптов
Не будем терять время и оценим лидирующую на LMArena и в большинстве других бенчмарков модель Gemini 2.5 pro. В первой версии статьи также предполагалась оценить модель o3, но оказалась она уступает уже в простых задачах и было решено её оценку исключить. Дадим прогноз о результатах на основе вайбов и недавней истории. Стандартная динамика для новых бенчмарков — очень низкий изначальный результат (10%), потом достижение 60% правильных решений через год и 90% через два года. Так как сложность заданий кажется сопоставимой с SWE-Verified, а ведущие модели на сегодня набирают на нём 65% ожидается результат в примерно 90 верно решенных задач из 150 (60%).
Чтобы не тестировать лимит Хабра на количество символов ответы модели в статью включены не будут. Для верификации можете скопировать вопрос в окно чата с Gemini. В статье только оценка правильных/неправильных решений и комментарии.
Для удобства вопросы были сгруппированы по 25 отдельным темам, основным областям Битрикс24 разработки. Темы представлены в таблице ниже. По одним темам задач больше, чем по другим, если на практике в их доработке чаще возникает необходимость.
Администрирование и теория | Таблицы базы данных | Вебхуки и rest-запросы | D7 | Получение данных CRM |
Обновление данных CRM | Виртуальная машина | Уведомления, чаты и чат-боты | Агенты и Cron | Инфоблоки, Хайлоадблоки ORM |
Бизнес-процессы | Смарт-процессы | Обработчики событий | Задачи | JS доработки |
Пользовательские поля | Свои шаблоны и компоненты | Свои активити | Свои модули | Свои приложения и встройки |
Диск и обработка файлов | Структура и Рабочее время | Календарь и онлайн-запись | Лента и благодарность | Грид и фильтр |
Результаты и выводы
А теперь сами задания и результаты. В качестве разминки первые 14 простых вопросов даже не по разработке, а по администрированию Битрикс24.
Результаты по простым задачам
1) Как попасть в список шаблонов бизнес-процессов для сделок CRM в Битрикс24? | Верный ответ |
2) Как установить обновления в Битрикс24? | Верный ответ |
3) Как сделать резервную копию в Битрикс24? | Верный ответ |
4) Как сделать сотрудника администратором в Битрикс24? | Верный ответ |
5) Как администратору Битрикс24 авторизоваться за другого пользователя Битрикс24? | Верный ответ |
6) Как узнать ID сотрудника в Битрикс24? | Верный ответ |
7) Как администратору Битрикс24 включить отображение для себя панели инструментов публичного раздела Битрикс24? | Верный ответ |
8) Как сделать поле в лиде обязательным для заполнения на стадии "Успешно" в воронке лидов Битрикс24? | Неверный ответ |
9) Как заблокировать доступ к Битрикс24 по IP-адресу? | Верный ответ |
10) Для какого пользователя и какой части сайта кнопка "сбросить кэш" в панели инструментов публичного раздела в Битрикс24 сбросит кэш? | Верный ответ |
11) Как создать робота в Битрикс24 который присылает руководителю сотрудника уведомление с текстом “крупная сделка слишком долго в одной стадии” если с момента перехода сделки в стадию прошло больше 10 часов, но только если сумма сделки больше 1000 рублей | Верный ответ |
12) Как сделать чтобы пользовательское поле в сделке в CRM в Битрикс24 было видимым и доступным для редактирования только для трёх выбранных сотрудников? | Неверный ответ |
13) Что нужно написать шаблоне документа в генераторе документов в Битрикс24 чтобы в документе для конкретного получателя это выглядело как г-ну Антонову Г.Н. (текущая дата в виде число.месяц.год) | Неверный ответ |
14) Как "закрыть сайт" в Битрикс24? Чтобы всем пользователям показывалась заглушка с надписью “Сайт закрыт на обновление” | Верный ответ |
15) Какие таблицы в базе данных изменяются при удалении поля типа "строка" в сделке в CRM в Битрикс24? | Верный ответ |
16) В какой таблице в базе данных содержатся записи об изменения стадии Лидов в CRM в Битрикс24? | Верный ответ |
17) В какой таблице в базе данных содержатся данные о продолжительности разговоров сотрудников по телефонии в Битрикс24? | Верный ответ |
18) В каком файле нужно задать описание параметров компонента в Битрикс24 чтобы была возможность управлять ими через визуальный интерфейс? | Верный ответ |
19) Код ниже обрабатывает данные, отправленные с помощью POST запроса из 1С в Битрикс24. Дополни код чтобы обеспечить безопасность получаемых данных методами Битрикс24 https://gist.github.com/Alian3785/12d8fa78927ae82693bb091465b6a4bf | Верный ответ |
20) Для чего предназначен файл result_modifier в компоненте в Битрикс24 и когда он выполняется? | Верный ответ |
21) Где в кодовой базе Битрикс24 хранится код, записанный в активити типа “PHP код” в шаблонах Бизнес-процессов сделок CRM? | Верный ответ |
22) Что делает функция TruncateText в Битрикс24? | Верный ответ |
23) Перепиши этот код на Bitrix framework: https://gist.github.com/Alian3785/da549329ced1fc99ce7c486cbcf633fd | Верный ответ |
24) Перепиши этот код на PHP с помощью вебхука и rest api Битрикс24: https://gist.github.com/Alian3785/8ed3c6ad0811bbe2356ef655d25d5aaa | Верный ответ |
25) Перепиши этот код на Bitrix framework: https://gist.github.com/Alian3785/8cd54fbf86d28de231711faab508d6b8 | Верный ответ |
26) Перепиши этот код для удаления дубликатов телефонных номеров в компании на Bitrix framework чтобы вместо rest api запросов использовались собственные функции Битрикс24 https://gist.github.com/Alian3785/7f3554da781d28a609ed412d7e99540f | Верный ответ |
27) Перепиши этот код с использованием rest api и вебхуков вместо собственных функций Битрикс24: https://gist.github.com/Alian3785/25301242af15c029eaead1b044e5d27f | Верный ответ |
28) Перепиши этот код с помощью методов ядра D7 Битрикс24: https://gist.github.com/Alian3785/18de54b505c042a7e98c55a04dea494b | Неверный ответ |
29) Перепиши этот код с помощью методов ядра D7 Битрикс24: https://gist.github.com/Alian3785/0d8f9afda10957fa8fe718c375db4f18 | Верный ответ |
30) Перепиши этот код с помощью методов ядра D7 Битрикс24: https://gist.github.com/Alian3785/6993dea1d1c732c34c9bb81343d04983 | Верный ответ |
31) Напиши запрос на получение всех элементов всех полей типа список в сделках CRM в Битрикс24 c помощью bitrix framework | Верный ответ |
32) Напиши код для создания Лида на PHP с помощью вебхука и rest api в Битрикс24 | Верный ответ |
33) Напиши запрос на создание Лида с помощью вебхука с названием "наш Лид" и суммой 400 рублей в Битрикс24 в виде URL строки для копирования в браузер | Верный ответ |
34) Напиши, как установить библиотеку fast_bitrix24 для Битрикс24 в Colab. Далее напиши запрос на создания Лида в Битрикс24 с названием "йуху лид" с помощью библиотеки fast_bitrix24 | Неверный ответ |
35) Напиши запрос на создание Лида в Битрикс24 под названием "наш слон Лид" и суммой 300 рублей двумя способами с помощью BX24.callMethod и с помощью CRest SDK | Верный ответ |
36) Напиши код для создания сделки в Битрикс24 с помощью bitrix framework. А потом напиши код для создания сделки в Битрикс24 с помощью нового factory метода | Неверный ответ |
37) Напиши код для обновления поля TITLE Лида в Битрикс24 в CRM без запуска обработчиков событий, бизнес-процессов, роботов и изменения даты изменения или последнего изменившего, записи в историю CRM и проверки обязательных полей | Неверный ответ |
38) Напиши на PHP запрос на создание компании в Битрикс24 с названием "нов компания" телефоном +79531761850, имейлами [email protected] и [email protected], пользовательским полем дата жизни "24.04.2022" (код поля дата жизни UF_CRM_1751803284), ответственным с ID=3, привязанным контактом с ID= 4, типом компании - Клиент и комментарием "вот эта компания!" с помощью bitrix framework | Неверный ответ |
39) Напиши запрос в Битрикс24 на добавление реквизитов организации к компании с ID=6, а именно: Полное наименование организации, Сокращенное наименование организации, ИНН, КПП, ОГРН c помощью bitrix framework | Неверный ответ |
40) Перепиши код, написанный на трех примерах выше на B24PhpSDK | Неверный ответ |
41) Напиши код чтобы сконвертировать лид с Id = 7 в сделку в воронке 1 в CRM в Битрикс24 с помощью bitrix framework | Неверный ответ |
42) Напиши на PHP запрос на получения значений всех полей Лида с ID= 57 в Битрикс24 с помощью bitrix framework | Верный ответ |
43) Напиши на PHP запрос для получения всех сделок из направлений с номером ID 0 и 2 в Битрикс24 с помощью bitrix framework | Верный ответ |
44) Напиши запрос на получение всех сделок, в названии которых есть слово “тест” в Битрикс24 с помощью bitrix framework | Верный ответ |
45) Найди все сделки с датой создания с 1 января 2025 года по 15 января 2025 года с помощью методов bitrix framework в Битрикс24 | Верный ответ |
46) Напиши код для получения всех контактов в Битрикс24 с номером телефона +79531768906 с помощью методов bitrix framework | Неверный ответ |
47) Напиши CRest::callBatch запрос на получение 3000 сделок с наименьшем ID в Битрикс24, выведи их названия списком на экран и замерь время выполнения запроса | Верный ответ |
48) Напиши запрос для получения названия и суммы в сделках в Битрикс24 созданных за последние 3 дня, в которых пользовательское поле UF_CRM_1751846851 не заполнено, результат отсортируй по убыванию и сделай постраничную навигацию по 30 элементов на страницу, используй bitrix framework | Неверный ответ |
49) Напиши код для создания запроса в CRM Битрикс24 для получения сделок, находящихся в работе в направлении c ID=0 и потом обнови в них поле ответственный ID на 1 и поле UF_CRM_1736253583 на строку “Тойота” с помощью методов bitrix framework | Верный ответ |
50) Напиши код для отправки в Битрикс24 уведомления в колокольчик с текстом "нов уведомление" сотруднику с ID=1 | Верный ответ |
51) Напиши код на PHP для добавления нового бронирования в онлайн-запись в Битрикс24 для ресурса с id=1 с 24 июня 2025 16:00 по 24 июня 2025 18:00 | Неверный ответ |
52) Как обновить версию PHP c помощью виртуальной машины VMBitrix? | Верный ответ |
53) Как обновить Let's Encrypt сертификат на виртуальной машине VMBitrix? | Неверный ответ |
54) Напиши rest запрос на PHP для получения имя, фамилии, отчества и должности контактов в CRM в Битрикс24 и выведи на экран в виде таблицы, но не только 50 значений, а все контакты, которые есть в системе | Верный ответ |
55) Напиши функцию для получения названия отдела в структуре, в которой работает сотрудник в Битрикс24 по ID сотрудника с помощью методов bitrix framework | Верный ответ |
Выводы по простым задачам
40 правильных ответов из 55. Ответы на большинство вопросов по администрированию верны. Видна способность использовать простые rest api запросы и популярные методы фреймворка, а также писать обработчики событий и простых агентов.
Не удивляет что модель не умеет работать с модулем онлайн записи и с библиотекой B24PhpSDK. Они появились после того, как LLM была обучена. Но Gemini так же ошибается при создании сделок методом фабрики, при попытке скрыть поля и сделать поля обязательными с конкретной стадии. То есть в функционале, представленном 3, 4 или 5 лет назад. В одном из заданий модель придумывает несуществующий метод работы с реквизитами компании, а в другом ошибается в том, где искать нужный класс. В вопросе 34 Gemini демонстрирует способность подключить внешнюю библиотеку (Guzzle) и использовать её методы для работы с Битрикс, но не может повторить то же самое уже с другой библиотекой fast_bitrix24. В вопросе 38 модель подтверждает опасения о ненадежности верно сформировав значения для обновления 6 полей сделки из 7 и ошибаясь в седьмом (Client вместо существующего Customer). Не знает Gemini и специфического языка генератора документов. Что будет если усложнить задачи?
Результаты по задачам средней сложности
56) Напиши код для создания задачи на сотрудника в Битрикс24 если он не в отпуске и у него включен рабочий день, в противном случае запиши в журнал событий сообщение "сотрудник недоступен". Используй bitrix framework | Неверный ответ |
57) Напиши запрос в Битрикс24 на преобразование всех элементов инфоблока 23 в элементы хайлоадблока 3 с помощью методов bitrix framework. В инфоблоке есть только поле название, а в хайлоадблоке только строковое свойство UF_NNAME | Верный ответ |
58) Напиши код в Битрикс24 чтобы, если задача входит в группу №1 и ID ответственного равен 1, к задаче добавлялся тег "ключевая задача" c помощью bitrix framework | Верный ответ |
59) Напиши код для получения данных о том какой источник и сколько раз выбран в сделках в CRM в Битрикс24 с помощью методов bitrix framework | Верный ответ |
60) Напиши код, который запрещает добавление к сделке в CRM нового товара, который не присутствует в каталоге товаров в Битрикс24 | Неправильный ответ |
61) Напиши обработчик события в Битрикс24 который при каждом обновлении пользователя добавляет в поле PERSONAL_FAX ФИО других сотрудников подразделения пользователя через запятую | Верный ответ |
62) Напиши код для валидации строкового поля “Поле валидации числа символов вопрос 24” (UF_CRM_1752092131936) в сделке в Битрикс24. Если в поле больше или меньше 8 символов, значение не должно сохраняться и должно выводиться сообщение об ошибке | Верный ответ |
63) Добавь обработчик события при добавлении элемента в Хайлоадблок № 2 (Метро), обработчик должен присылать всем администраторам Битрикс24 уведомление с текстом “новая станция метро добавлена” | Неверный ответ |
64) Напиши в Битрикс24 код для создания агента, который запускается каждые 30 минут и удаляет в CRM 10 Лидов с наименьшим ID с помощью методов bitrix framework | Верный ответ |
65) Напиши в Сron в Битрикс24 код, который запускается каждый час и удаляет в CRM 10 Лидов с наименьшим ID с помощью методов bitrix framework | Неверный ответ |
66) Напиши в Битрикс24 код для создания агента, который запускается каждые 30 минут и в сделках, созданных за последние сутки, проверяет наличие активных дел, и если активных дел нет, то в таймлайн сделки записывает комментарий "В сделке не поставлено дело!" с помощью методов bitrix framework | Верный ответ |
67) Напиши код для создания агента в Битрикс24 для удаления 10 значений из таблицы b_crm_event c наименьшим ID с периодичностью раз в час. агент должен выполниться всего 10 раз | Верный ответ |
68) Напиши запрос для получения контактов в Битрикс24, где ID ответственного равен 3 и в которых либо поставлена галочка "доступно для всех" либо идентификатор источника равен TRADE_SHOW с помощью методов bitrix framework | Верный ответ |
69) В Битрикс24 при обмене данными сбилась кодировка и часть имен контактов превратилась в кракозябру вроде Гусева Елена или Ветчинина ЕлР. Напиши код для получения списка контактов с такой сбитой кодировкой в поле имя. После этого обнови эти контакты и верни их поле имя к нормальному виду, а также выдай списком гиперссылки на все контакты, которые были обновлены | Неверный ответ |
70) Напиши код в Битрикс24 для удаления 300 последних задач из корзины, а также код для удаления 300 последних CRM сущностей из корзины | Неверный ответ |
71) Напиши код для отправки сообщения с текстом "чат сообщение да" в чат от одного сотрудника Битрикс24 к другому | Верный ответ |
72) Напиши код для создания агента, который делает пользователя с ID=5 администратором в Битрикс24 на 24 часа | Неверный ответ |
73) Напиши код для создания в Битрикс24 в Лиде, сделке и контакте поля “дата события” типа “дата” с помощью методов bitrix framework. У полей должен быть одинаковый ID | Верный ответ |
74) Напиши код для создания нового пользовательского поля или модификации существующего пользовательского поля в сделках в Битрикс24 так чтобы оно было доступно только для просмотра и недоступно для редактирования сотрудниками портала | Верный ответ |
75) Напиши код для получения имени и фамилии руководителя каждого сотрудника в Битрикс24 и проставления их в поле UF_LINKEDIN профиля каждого сотрудника с помощью методов bitrix framework | Неверный ответ |
76) Напиши код для получения списка всех событий истории сделки в Битрикс24 с ID равным 63. Логируй результат в файл и туда же запиши время выполнения кода используя методы ядра D7 | Неверный ответ |
77) Напиши код для получения в Битрикс24 сделок, измененных вчера пользователем с ID=1 и потом замени текущего ответственного в этих сделках на предыдущего ответственного, с помощью методов bitrix framework | Неверный ответ |
78) Напиши код для получения для получения из инфоблока с ID = 1 в Битрикс24 названий элементов и свойства AYDI_SDELKI. Затем помести в сделках в CRM, ID которых равен названию элементов инфоблока, в поле UF_CRM_1736256575 данные из свойства инфоблока AYDI_SDELKI | Верный ответ |
79) Сделай ORM запрос на получение значений полей и свойств элементов инфоблока №19 в Битрикс24 | Неверный ответ |
80) Сделай запрос на получение элементов инфоблока №19 в Битрикс24, сгруппируй элементы по названию и посчитай их количество по каждому названию. Используй bitrix framework | Верный ответ |
81) Напиши запрос в Битрикс24 на обновление строкового свойства PROPERTY_68 в элементе №64 в универсальном списке №21 значением “данные тут”. Изменить нужно только его и больше никаких полей и свойств элемента не менять | Верный ответ |
82) У универсального списка c ID=5 в Битрикс24 есть 4 свойства типа: строка, число, привязка к сотруднику и привязка к инфоблоку. Сделай запрос на получение значений свойств универсального списка включая имя и фамилию сотрудника и название элемента из связанного инфоблока c помощью bitrix framework | Неверный ответ |
83) По 100 сделок с наибольшим ID в CRM в Битрикс24 получи ID ответственного, название подразделение в котором ответственный работает и ID руководителя ответственного и потом создай в Битрикс24 список с 4 колонками: "ID сделки", "ID ответственного", "ID руководителя" и "Название подразделения" и заполни его полученными данными. Используй внутренние функции Битрикс24 | Верный ответ |
84) Напиши обработчик события в Битрикс24 запрещающий пользователям закрывать в CRM сделку в направлении с ID=2 если к сделке привязана не завершенная задача и выводящий предупреждение "задача не закрыта" | Неверный ответ |
85) Напиши код для получения в Битрикс24 затраченного времени в часах по каждой задаче, которая выполнялась в период последних 7 дней пользователем с ID=1. Используй bitrix framework | Верный ответ |
86) Напиши запрос на создание в Битрикс24 X копий задачи с крайним сроком каждой на Y дней позже предыдущей. Получай X и Y из пользовательских полей задачи UF_AUTO_372353951619 и UF_AUTO_999252844577 | Неверный ответ |
87) Напиши код для очистки поля телефон в контакте в Битрикс24 от дубликатов. Телефоны, которые отличаются только первыми символами, (+7 или 8 или 7) должны восприниматься как дубликаты | Неверный ответ |
88) Напиши код в блоке PHP код в шаблоне бизнес-процесса в Битрикс24 для получения значения переменной "Variable2", значения поля "Opportunity " из сделки и ID созданной ранее задачи из дополнительных результатов и вывода их в трех уведомлениях для пользователя с ID равным 1 | Неверный ответ |
89) Напиши код для получения всех активных Бизнес-процессов, запущенных в сделке в Битрикс24 и остановки тех из них, где в название есть подстрока "проверка БП". Используй bitrix framework | Неверный ответ |
90) Напиши код для изменения поля типа список в сделке в Битрикс24 при добавлении к сделке товара. Первое слово в названии товара при добавлении в сделку должно быть выбрано из значений в поле UF_CRM_1752407197 типа список и поле список должно быть обновлено. Если совпадения с первым словом в товаре нет, то значение поля должно поменяться на "не выбрано". Используй bitrix framework | Неверный ответ |
91) Напиши код в Битрикс24 чтобы в CRM в сделках при первом заполнении поля "важное поле" (UF_CRM_1752407676588) типа дата/время ответственному за сделку назначалось дело типа "звонок". Дата звонка - значение поле "важное поле". Заголовок - "важный звонок". Описание - "сделайте важный звонок". Телефон для звонка - первый телефон из первого привязанного к сделке контакта. Используй bitrix framework | Верный ответ |
92) Напиши код для переноса значений поля телефон в Лиде в Битрикс24 во множественное поле (UF_CRM_3_1752408052484 тип строка) в элементе смарт процесса. Элемент смарт-процесса находи по id лида указанному в поле UF_CRM_3_1752408109291. ID самого смарт-процесса равен 3. Используй bitrix framework | Неверный ответ |
93) Напиши код, который при делегировании задания бизнес-процесса в Битрикс24 от одного сотрудника к другому получает заголовок задания и отправляет его на почтовый адрес [email protected] | Неверный ответ |
94) Напиши обработчики события в Битрикс24 которые, при создании события в календаре компании Битрикс24, создают сделку в CRM в воронке с id=1 c датой и временем завершения равной дате и времени завершения события календаря, а при удалении события календаря удаляют и сделку | Неверный ответ |
95) Напиши код чтобы при добавлении или удалении файлов в поле UF_CRM_1752409457 в сделке в Битрикс24 (тип поля файл, множественное) эти файлы также обновлялись (добавлялись или удалялись) в разделе “Мой диск” у пользователя айди которого равно 1 | Неверный ответ |
96) Напиши код в Битрикс24 для создания хайлоадблока с названием "hitblock" и снабди его 3 строковоми свойствами и одним числовым и помести туда соответственно фамилию имя отчество и ID всех сотрудников компании, зарегистрированных в Битрикс24 | Верный ответ |
97) Напиши код для страницы в Битрикс24 с заголовком “рандомная проверка” на которой будет три кнопки зеленого цвета, при нажатии на любую из кнопок в слайдере должна открываться страница с ФИО случайного сотрудника компании и ссылки на последние 10 сделок за которые он ответственен. Сделки тоже должны открываться в слайдере | Верный ответ |
98) Напиши PHP код c помощью bitrix framework для выполнения следующих действий: Создай в Битрикс24 в сделках в CRM две воронки с названием “Саня” и Вася. В воронке Саня установи стадии “первый пошел”, “второй пошел”, “третий пошел”, “финал”, а в воронке Вася “разгрузка”, “переноска”, “утряска”, “помывка”, “финал”. Также создай в сделке поля: Начало (дата и время), Жизненные запросы (строка), Реальная сумма (деньги), Процент Иваныча (число), и Кто проставляется (привязка к сотруднику). Последнее поле сделай обязательным для заполнения. Пригласи на портал трех пользователей с имейлами [email protected] (Наталья), [email protected] (Вася) и [email protected] (Саня). Создай подразделение “Братишки”, подчиненное генеральному директору. Перенеси туда пользователей Саша и Вася. Добавь Сане право на просмотр, редактирование, добавление, удаление и импорт/экспорт сделок первой воронки. Добавь Васе такие же доступы, но ко второй колонке. Добавь Наталье права администратора CRM | Неверный ответ |
99) Напиши запрос для получения кода всех пользовательских полей сделки в Битрикс24 и затем определи в каком количестве сделок каждое пользовательское поле не заполнено, в том числе в %. Используй Bitrix framework отдавая предпочтение функциям ядра D7 | Верный ответ |
100) Напиши код для определения количества сделок на каждой стадии воронки c ID=3 в Битрикс24 которые находятся на текущей стадии более 24 часов. Используй Bitrix framework отдавая предпочтение функциям ядра D7. Выведи результат в формате таблицы | Неверный ответ |
101) Сформируй JSON из значений полей сделки в Битрикс24 для отправки на адрес https://cctt8345734405.tw1.ru/local/somepost.php с помощью cURL запроса. Поля сделки для формирования JSON включают в себя по одному поля типа “Деньги”, “Список”, “Целое число”, “Привязка к элементам информационных блоков”, “Файл” и “Строка”. Поле типа строка является множественным | Неверный ответ |
102) Напиши код для создания Грида и фильтра в Битрикс24. Данные для грида должны быть взяты из сделок в CRM. Грид должен содержать 4 поля - ID, Дата создания сделки, Ответственный и Название. Должна быть возможность сортировки и фильтрации всем полям, а также опция вывода по 10, 20 или 30 элементов на одной странице | Неверный ответ |
103) Напиши код для создания в Битрикс24 агента, который каждый день получает длительность разговоров сотрудников подразделения “Продажники” (с id =15) по IP-телефонии за сегодняшний день, составляет из них таблицу вида Фамилия, Имя, Количество минут разговора, и потом отправляет эту таблицу всем сотрудникам этого подразделения в личном чате | Верный ответ |
104) Напиши с помощью запрос в Битрикс24 на получение активных элементов инфоблока с ID=22 и свойством "Цена" (код поля TSENA) больше 50. Закэшируй результат запроса на 10 минут. Замерь время выполнения кода | Верный ответ |
105) Как за один раз обновить огромный массив данных (например поле “день рождения” в 300000 контактов) в коробочном Битрикс24? При написании запроса на обновление в цикле из командной строки PHP в админке обновление прерывается из-за разрыва сессии | Верный ответ |
106) Напиши статичное локальное приложение “Список бездельников” для коробочного Битрикс24. Приложение должно получать список сотрудников портала и выводить на страницу ФИО тех сотрудников, которые не заходили на портал последние 30 дней | Верный ответ |
107) Отредактируй приложенные файлы серверного приложения для Битрикс24 чтобы вместо получения текущего пользователя приложение при запуске отдавало список ФИО активных сотрудников, которые не заходили на портал последние 30 дней. Также добавь в приложение кнопку “Уволить” клик на которую увольняет отображенных в списке сотрудников | Неверный ответ |
108) Натяни эту верстку на дефолтный шаблон компонента news.list в Битрикс | Неверный ответ |
109) Напиши компонент в Битрикс24 который принимает в качестве параметра число прямоугольников. И далее получает элементы из инфоблока №25 об ID элемента, заголовке, дате создания, описании и кто создал элемент и последовательно выводит эти данные в прямоугольниках разного случайного цвета, сложенных друг на друга. Компонент выводит только то число прямоугольников, которое указано в параметре | Верный ответ |
110) Добавь тулбар на новую страницу в Битрикс24 и в него добавь кнопку "экспорт заданий БП". При нажатии на нее должен отправляться запрос на получение всех заданий из бизнес-процессов сотрудника и на компьютер пользователя загружаться Excel файл с полями заголовок, описание, кто запустил и документ из заданий текущего сотрудника | Неверный ответ |
Выводы по задачам средней сложности
26 правильных ответов из 55. Результаты этого раздела лучше всего иллюстрирует цитата известного анонимного блогера Gwern высказанная ещё о предыдущем поколении больших языковых моделей:
It is like coaching a superintelligent cat into learning a new trick: you can ask it, and it will do the trick perfectly sometimes, which makes it all the more frustrating when it rolls over to lick its butt instead—you know the problem is not that it can’t but that it won’t
(перев) Это похоже на обучение суперразумного кота новому трюку: вы можете попросить его, и он иногда будет выполнять трюк идеально, что делает его еще более раздражающим, когда он вместо этого переворачивается, чтобы вылизать свою задницу, — вы знаете, проблема не в том, что он не может, а в том, что он не будет
Модель демонстрирует способность one-shot написать полноценный, рабочий компонент или модуль со сложной внутренней структурой из десятка файлов. Способна за минуту выдать решение задачи, (например, вопросы 91, 99) на который у специалиста уйдет более часа сосредоточенной работы.
Но в то же время если задание состоит из 3-4 простых запросов (вопросы 77, 90) или касается менее широко используемого функционала Битрикс24 (вопросы 56, 93) начинается непонимание, галлюцинации и ошибки. Простая организация обмена данными между базовыми модулями (вопрос 94) также не удается. Вопрос 98 специально включен как пример максимального разрыва сложности задачи для человека и ИИ. Для человека эта базовая интеграторская задача очень проста, а для LLM не решаема не только из-за невозможности пока работать в интерфейсе, но и из-за большого числа подзадач. Проверим что будет по сложным задачам.
Пример неправильно решенного заданияВопрос: Напиши код для обновления значений переменной типа “список” в шаблоне бизнес-процесса в Битрикс24 с помощью внутренних функций Битрикс
Gemini:
Конечно! Обновить значения переменной типа "список" в шаблоне бизнес-процесса можно с помощью API Битрикса, в частности, используя класс CBPWorkflowTemplateLoader.
Это административная задача, и код для неё нужно выполнять либо в специальном PHP-файле в корне сайта, либо через инструмент "PHP-консоль" в административной панели.
Процесс состоит из следующих шагов:
Получить ID шаблона бизнес-процесса.
Получить ID (идентификатор) переменной, которую нужно обновить.
Сформировать новый массив значений для списка.
Загрузить данные шаблона с помощью CBPWorkflowTemplateLoader::LoadTemplate().
Найти нужную переменную в структуре шаблона и заменить её опции (значения списка).
Сохранить измененный шаблон с помощью CBPWorkflowTemplateLoader::Update().
ID Шаблона (TEMPLATE_ID):
Перейдите в CRM → Настройки → Роботы и бизнес-процессы → Бизнес-процессы.
Выберите нужный тип сущности (Лид, Сделка и т.д.).
В списке шаблонов наведите курсор на ссылку "Изменить" у нужного вам шаблона.
В URL-адресе вы увидите параметр ID, например: .../company/personal/bizproc/0/element/0/bizproc_workflow_edit.php?ID=123&.... В этом случае ID шаблона равен 123.
ID Переменной (VARIABLE_NAME):
Откройте шаблон на редактирование.
Перейдите на вкладку "Переменные".
Нажмите на нужную переменную списка.
В открывшемся окне посмотрите поле "Идентификатор". Это и есть нужный вам ID. Не путайте с названием!
Создайте PHP-файл (например, update_bp_variable.php) в корне вашего сайта и поместите в него следующий код.
<?php
// Подключаем prolog Bitrix для доступа к API
$_SERVER["DOCUMENT_ROOT"] = "/home/bitrix/www"; // Укажите правильный путь к корню вашего сайта
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
// Проверяем, что модуль Бизнес-процессов подключен
if (!CModule::IncludeModule('bizproc')) {
die('Ошибка: Модуль "bizproc" не подключен.');
}
// --- НАСТРОЙКИ ---
// 1. ID шаблона бизнес-процесса
$templateId = 123; // <-- УКАЖИТЕ ID ВАШЕГО ШАБЛОНА
// 2. Идентификатор (ID) переменной типа "список"
$variableName = 'MyCustomList'; // <-- УКАЖИТЕ ID ВАШЕЙ ПЕРЕМЕННОЙ
// 3. Новый набор значений для списка
// Формат: [ 'Ключ1' => 'Значение 1', 'Ключ2' => 'Значение 2', ... ]
$newOptions = [
'option_a' => 'Новое значение Альфа',
'option_b' => 'Новое значение Бета',
'option_c' => 'Новое значение Гамма',
'option_d' => 'Новое значение Дельта',
];
// --- КОНЕЦ НАСТРОЕК ---
echo "Запускаем обновление переменной '{$variableName}' в шаблоне #{$templateId}...<br>";
try {
// Загружаем полную структуру шаблона
$template = CBPWorkflowTemplateLoader::LoadTemplate($templateId);
if (!$template) {
throw new Exception("Не удалось загрузить шаблон с ID = {$templateId}. Проверьте ID.");
}
// Ищем нашу переменную в массиве переменных шаблона
$variableFound = false;
if (isset($template['VARIABLES']) && is_array($template['VARIABLES'])) {
foreach ($template['VARIABLES'] as $key => &$variable) { // Важно использовать ссылку (&), чтобы изменять массив
if ($key === $variableName) {
echo "Переменная '{$variableName}' найдена. Старые значения: <pre>" . print_r($variable['Options'], true) . "</pre>";
// Заменяем старые опции на новые
$variable['Options'] = $newOptions;
$variableFound = true;
echo "Новые значения установлены: <pre>" . print_r($variable['Options'], true) . "</pre>";
break; // Выходим из цикла, т.к. переменная найдена
}
}
}
if (!$variableFound) {
throw new Exception("Переменная с идентификатором '{$variableName}' не найдена в шаблоне.");
}
// Формируем массив полей для обновления
// Важно передать все основные поля, чтобы не затереть их
$arUpdateFields = [
"DOCUMENT_TYPE" => $template["DOCUMENT_TYPE"],
"AUTO_EXECUTE" => $template["AUTO_EXECUTE"],
"NAME" => $template["NAME"],
"DESCRIPTION" => $template["DESCRIPTION"],
"TEMPLATE" => $template["TEMPLATE"], // сама схема БП
"PARAMETERS" => $template["PARAMETERS"], // параметры
"VARIABLES" => $template["VARIABLES"], // измененные переменные
"CONSTANTS" => $template["CONSTANTS"], // константы
"ACTIVE" => $template["ACTIVE"]
];
// Обновляем шаблон
$updateResult = CBPWorkflowTemplateLoader::Update($templateId, $arUpdateFields);
if ($updateResult) {
echo "<h3 style='color: green;'>УСПЕХ! Шаблон #{$templateId} успешно обновлен.</h3>";
} else {
global $APPLICATION;
if ($e = $APPLICATION->GetException()) {
throw new Exception("Ошибка при сохранении шаблона: " . $e->GetString());
} else {
throw new Exception("Неизвестная ошибка при сохранении шаблона #{$templateId}.");
}
}
} catch (Exception $e) {
echo "<h3 style='color: red;'>ОШИБКА: " . $e->getMessage() . "</h3>";
}
// Отключаем prolog
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
Отредактируйте секцию // --- НАСТРОЙКИ --- в коде, указав ваши TEMPLATE_ID, VARIABLE_NAME и NEW_OPTIONS.
Загрузите файл update_bp_variable.php в корневую директорию вашего сайта.
Откройте этот файл в браузере: https://ваш_портал.ру/update_bp_variable.php.
Вы увидите сообщения о ходе выполнения и итоговый результат (успех или ошибка).
После успешного выполнения обязательно удалите этот файл с сервера, чтобы избежать случайного повторного запуска.
Важно: Перед выполнением подобных скриптов всегда делайте резервную копию сайта и базы данных. Некорректное изменение структуры шаблона может повредить его.
Результаты: Ошибка, метода CBPWorkflowTemplateLoader::LoadTemplate не существует
Результаты по сложным задачам
111) Напиши код для кастомного активити в шаблоне бизнес-процесса в Битрикс24. Активити должно принимать в форме настроек одно поле типа "строка". Далее активити должно отправлять содержание поля в уведомлении сотруднику с ID=1 | Неверный ответ |
112) Напиши код для кастомного активити в шаблоне бизнес-процесса в Битрикс24. Активити должно принимать в форме настроек одно поле типа "целое число". При выполнении активити должно удалять все элементы из списка в Битрикс24, ID которого равен этому числу | Неверный ответ |
113) Напиши код для кастомного активити шаблоне бизнес-процесса в Битрикс24. Активити должно принимать в форме настроек 4 поля типов строка, выбор пользователя, чекбокс и список из 5 значений. Далее если в чекбоксе поставлена галочка активити должно отправлять письмо (E-mail) с выбранным значением списка в заголовке и строкой в содержании выбранному пользователю | Неверный ответ |
114) Напиши код для получения в Битрикс24 CRM сделок за последние 24 часа в направлении 1 и привязанных к ним активных чатов открытых линий. Затем удали из чатов операторов открытых линий и замени их на ответственных в сделках. Используй bitrix framework | Неверный ответ |
115) Напиши код для добавления желтого фона к строковому полю UF_CRM_1736259303 в карточке сделки в CRM в Битрикс24 | Верный ответ |
116) По предоставленной картинке найди выделенный красным элемент и напиши код для замены его значения на цифру 5 с помощью javascript и с помощью BX библиотеки в Битрикс24 (картинка) | Верный ответ |
117) Напиши код для добавления в верхнее меню CRM в Битрикс24 мигающей кнопки "Ошибка" белого цвета на красном фоне. Кнопка должна появляться только если пользователь является ответственным в незакрытой задаче, а задача при этом принадлежит группе с ID=3 | Неверный ответ |
118) В Битрикс24, в CRM, в сделках, в представлении календарь с помощью javascript раскрась все записи в произвольные цвета за исключением записи с названием “ЭВАКУАТОР” её цвет сделай чёрным | Неверный ответ |
119) Добавь всплывающее окно при клике на кнопку завершения задачи в Битрикс24. Во всплывающем окне сделай форму с одним полем типа строка и кнопкой завершить, клик на которую завершает задачу. Набранные пользователем в форму данные должны быть переданы в строковое поле UF_CRM_1752785530 в сделке, которая привязана к задаче | Неверный ответ |
120) Почему-то эта функция выполняемая в init.php по событию OnAfterUserUpdate в Битрикс24 приводит к бесконечному циклу обновления пользователя. Объясни почему это происходит и исправь: | Верный ответ |
121) Напиши код чтобы модифицировать логику работы кнопки “Завершить” в Битрикс24 с помощью js событий. При нажатии на кнопку “Завершить” в задаче показывать модальное окно с текстом “Пожалуйста поставьте оценку”. В модальном окне показывать 5 кнопок со звездами от 1 звезды до 5 звезд соответственно. Завершать задачу только после клика сотрудником на одну из 5 кнопок. Также после завершения добавлять ID завершенной задачи, ФИО ответственного и количество звезд на выбранной кнопке в поле название универсального списка с ID=19. В системном поле Оценка при открытии задачи после её завершения должно отображаться выбранное число звезд | Неверный ответ |
122) Напиши код для скрытия для всех сотрудников в Битрикс24 в задачах в выпадающем меню кнопки "ЕЩЁ" опций "делегировать" и "отложить" (с помощью JavaScript) | Верный ответ |
123) Напиши код для создания в Битрикс24 100 лидов с заполненными произвольно названиями, суммой и комментарием. Ход создания лидов отображай на странице с помощью расширения ui.progressbar | Неверный ответ |
124) Сделай свой rest метод в Битрикс24 добавляющий элемент в таблицу tr_verytable и создай кастомное событие к нему. Поля таблицы: Чувак (строка), Время (дата), Чтоа (число) | Неверный ответ |
125) Напиши в Битрикс24 класс с функцией которая отправляет уведомление пользователям с id=1 и id=2. Помести его в папку local/newclasseslib. Подключи класс в init.php c помощью registerAutoLoadClasses. И напиши код для вызова функции класса на странице в Битрикс24 | Верный ответ |
126) Переопредели класс CCrmActivity в Битрикс24. Измени его методы без прямого редактирования ядра таким образом чтобы в направлении сделок с id=2 при закрытии сделки, задачи, привязанные к сделке, не завершались автоматически | Неверный ответ |
127) Напиши пример использования сервис-локатора в Битрикс24 и как зарегистрировать его через addInstance | Неверный ответ |
128) Напиши инструмент для импорта данных из Excel в CRM в сделки в Битрикс24. На странице в Битрикс24 должна быть форма для загрузки Excel файла, в заголовке (первой строке) листа Excel файла будут коды пользовательских полей сделок в Битрикс24, а в первой колонке ID сделок. Ориентируясь на коды полей, указанных в заголовках Excel файла, Битрикс24 должен обновить поля в сделках в CRM значениями, указанными в соответствующих колонках Excel. Предполагается, что в среднем в загружаемых Excel файлах будет 2-4 колонки и 50-500 строк | Неверный ответ |
129) Напиши модуль для Битрикс24 который создаёт новый тип пользовательского поля “денежный прогресс”. Поле должно быть доступно для просмотра в инфоблоках и в сделках CRM и отображать полоску прогресса похожую на полоску стадий сделки, только синего цвета. Если сумма в сделке больше 10 рублей полоска должна быть заполнена на 10%, если больше 100 рублей, то на 50%, а если больше 1000 рублей, то на 100% | Неверный ответ |
130) Напиши код на странице в Битрикс24 для создания виджета TagSelector c диалогом выбора сущностей. В диалоге должна быть возможность выбирать пользователей и отделы, а также группы. И ещё возможность выбрать несколько элементов и поиск по ним. При добавлении нового элемента выбранному сотруднику или всем сотрудникам в выбранном подразделении или группе должно приходить уведомление от администратора с содержанием “Инспекция идет к вам, подготовьтесь” | Неверный ответ |
131) Напиши код для добавления одной благодарности типа "торт" в профиль пользователя с ID=1 в Битрикс24 | Неверный ответ |
132) Напиши код для создания собственного модуля в Битрикс24 по определению курса биткоина к доллару. Модуль должен добавлять в публичную часть страницу, где будет делаться запрос к внешнему источнику о курсе биткоина к доллару. Далее эта информация должна выводиться на страницу для пользователя | Верный ответ |
133) Напиши код для создания собственного модуля в Битрикс24. Модуль должен добавлять в публичную часть страницу, где будет делаться запрос к внешнему источнику о текущем курсе биткоина к доллару. При установке он должен устанавливать инфоблок типа список с полями типа строка и привязка к сотруднику. В опциях у модуля должна быть опция типа чекбокс. Если она равна true, то при каждом посещении пользователем этой страницы в инфоблок должен добавляться элемент списка с информацией о курсе биткоина в поле название и пользователь в поле типа привязка к сотруднику | Верный ответ |
134) Создай таблицу gtd_gifts связанной 1 к 1 с таблицей контактов в CRM в Битрикс24 по полю айди контакта, также в таблице должно быть строковое поле «тип подарка». Напиши ORM класс для таблицы. Добавь валидацию поля «тип подарка» чтобы его длина не превышала 10 символов. | Верный ответ |
135) В Битрикс24 в кастомной таблице gtd_gifts мы храним данные о подарках для клиентов, она описывается ORM классом GiftsTable. Таблица связана с таблицей контактов CRM в Битрикс24 по ID 1 к 1. Напиши запрос для получения всех контактов, ID которых есть в таблице gtd_gifts, включая данные по ним из таблицы gtd_gifts с помощью ORM | Верный ответ |
136) Напиши в Битрикс24 код для создания агента, который запускается каждый час и делает запрос на получение текущего курса фунта стерлингов к рублю, и обновляет поле NAME элемента списка с ID=111 в списке с ID=12 | Неверный ответ |
137) Напиши код для создания в Битрикс24 Highload-блока с 3 свойствами типа число, строка и дата создания и добавь туда 15 элементов с заполненными случайными свойствами. После этого, напиши код для создания грида и связанного с ним фильтра на основе данных из Highload-блока | Верный ответ |
138) Напиши код для создания в Битрикс24 инфоблока с 4 свойствами типа строка, число, привязка к сотруднику и дата создания и добавь туда 10 элементов с заполненными свойствами. После этого, напиши код для создания компонента, а в нем грид, выводящий данные из созданного инфоблока, и связанный с гридом фильтр. Там же создай тулбар и добавь туда фильтр и кнопку для добавления элемента инфоблока. Также добавь действие удаления для элементов грида. И ещё добавь форму детального редактирования полей в гриде которая открывается в слайдере при клике на значение первого свойства | Неверный ответ |
139) Измени этого чат бота в Битрикс24 таким образом чтобы он показывал одно меню с 4 пунктами: Время работы, Где находится, Купить сейчас и Перевести на оператора: Первый пункт должен давать ответ - Время работы понедельник-пятница, с 10 до 16 Второй пункт должен давать ответ - Ссылка на карту: https://habr.com/ru/feed/ Третий пункт должен создавать элемент в списке с ID=10 в Битрикс24, в названии списка должен быть текст "выбран третий пункт”, а бот должен давать ответ “уже бежим” Четвертый пункт должен переводить на оператора | Неверный ответ |
140) Активируй контроль рабочего времени в Битрикс24 для сотрудников с ID – 1, 2, и 3. Далее напиши код для формирования таблицы, где колонками будут ФИО этих сотрудников, а строками дни текущей недели. В ячейках таблицы должно показываться количество реально отработанных часов и минут сотрудника в конкретный день. Используй API - https://apidocs.bitrix24.ru/api-reference/timeman/timecontrol/timeman-timecontrol-settings-set.html | Неверный ответ |
141) Напиши код для создания с помощью встройки кастомного пользовательского поля в сделке в CRM Битрикс24. В поле должна быть форма с двумя полями типа список: марки и модели и кнопка submit. При выборе марки в поле модели должны быть доступны для выбора только модели этой марки. Марке Мерседес принадлежат модели Мерседес-бенц и Майбах. Марке BMW принадлежит марка X5, X7 и BMW Premium. При нажатии кнопки submit выбранные значения марки и модели должны обновлять строковые поля UF_CRM_1736706364 и UF_CRM_1736706378 в сделке | Неверный ответ |
142) Напиши код для автоматической отправки уведомления в Битрикс24 сотруднику с ID=1 при удалении элементов смарт-процесса (ID смарт-процесса: 1036). Уведомление должно содержать текст “элемент удален в смарт-процессе”, а также название и ID элемента | Неверный ответ |
143) Исправь список задач в Битрикс24 чтобы при клике на заголовок созданного администратором пользовательского поля задач происходила сортировка значений этого поля, точно так же как она происходит при клике на заголовок системных полей (ID, крайний срок и.т.п.). Доступ к коду основных файлов модуля задач предоставлен | Неверный ответ |
144) Напиши код для встройки пункта в карточку сделки CRM в верхнее меню в Битрикс24 (там, где пункты: общие, товары, роботы и.т.д.). При выборе этого пункта во вкладке должна отображаться таблица из двух колонок и двух строк. Таблица должна отображать значения из строковых полей UF_CRM_1736193447, UF_CRM_1736280108, UF_CRM_1736276664, и списочного поля UF_CRM_1738751127405 | Неверный ответ |
145) Во вкладку товары в сделках в Битрикс24 добавь ещё одну колонку “Навар”, она должна быть строкового типа, заполняться и сохраняться аналогично базовым колонкам | Неверный ответ |
146) Напиши обработчик события в Битрикс24 чтобы при добавлении нового элемента в поле UF_CRM_1738751127405 типа "Список" в сделке в CRM администраторам в колокольчик приходило уведомление с текстом: "нов элемент добавлен". Если события нет, добавь своё событие | Неверный ответ |
147) Сделай тиражное приложение для Битрикс24 маркет. Приложение при установке добавляет новое активити “Уведомление админов” в шаблон бизнес-процессов. Активити “Уведомление админов” имеет один параметр - строку текста, которая приходит всем администраторам портала Битрикс24 в уведомлении | Неверный ответ |
148) Напиши приложение с использованием BitrixVue в котором есть одна кнопка и по клику она выдаёт ФИО случайного сотрудника в Битрикс24 | Неверный ответ |
149) Создай компонент «compi» в Битрикс24 с единственным методом socr(), который принимает строку и сокращает её до 3 первых символов. Далее на новой странице напиши код для формы с единственным полем типа строка и после внесения юзером данных в эту форму с помощью метода BX.ajax.runComponentAction должно пройти обращение к методу socr() в компоненте compi и ответ должен быть выведен в консоль | Неверный ответ |
150) Напиши код для обновления значений переменной типа “список” в шаблоне бизнес-процесса в Битрикс24 с помощью внутренних функций Битрикс | Неверный ответ |
Выводы по сложным задачам
10 правильных ответов из 40. Проще отметить, что из этого раздела ИИ смог сделать. Модель умеет использовать Javascript чтобы покрасить кнопку и даже скрыть пункт из меню. А в части бэкэнда может создать ORM класс для работы с новой таблицей и пользоваться им, а также выполнять лучшие практики подключения своих классов (что на самом деле не сложно, просто я сам поздно этому научился). Модифицировать чат-ботов и делать простые Vue js компоненты модель может через раз. Способна написать самый примитивный грид без фильтра, сортировки и действий.
С даже базовыми своими активити, своими типами полей, своими событиями, и встройками, экспортом и импортом в Excel, а также с редкими, нестандартными api запросами модель не справляется. Также она даже не приблизилась к выполнению потенциально монетизируемой задачи по написанию простого приложения для маркета (вопрос 147).
Большинство попыток выполнения заданий заканчивается галлюционированием несуществующих методов и событий (вроде onCrmCardViewBuild для встройки в карточку или правдоподобное, но несуществующее OnAfterUserFieldEnumAdd после добавления элемента списка). В некоторых задачах вроде 131 или 143 модель явно ограничена отсутствием контекста. Будь у нее документация, весь код конкретного модуля или все методы ядра в Context window результаты были бы лучше.
По итогам стоит оговориться что с помощью этих вопросов модель оценивается, а не используется для решения конкретных задач. Задавшись целью выполнить сложную задачу и изучив документацию, можно вместе с LLM в ходе длительного чата добиться выполнения большинства заданий из списка. Но бенчмарк проверяет самостоятельную работу модели, её способность полноценно заменять разработчика и работать как агент, а не как компаньон.
Ограничения и будущая работа
Какие недостатки можно отметить у этой специфичной оценки возможностей LLM? Вопросы сформулированы чётко и ясно и это не всегда хорошо. Сколько % ответа содержится в вопросе? Неспециалист может формулировать вопросы иначе. Это ограничение можно обойти, заставив LLM переформулировать вопросы от лица неспециалиста.
Другой очевидный недостаток это невозможность автоматически проверить ответы и оперативно прогонять новые модели на бенчмарке. Ручная проверка занимает много часов. Можно сократить время на тестирование исключив задачи, решенные всеми ведущими моделями. Для половины из остальных можно сгенерировать юнит-тесты.
Желающие могут дополнить работу новыми вопросами, версиями и автопроверками по ссылке на GitHub.
Заключение
Совершенно ненамеренно получено почти ровно 50% верных ответов. 76 правильных ответов из 150 (50,6%). В основном из категорий простых и средней сложности. Похоже ожидания в начале статьи оказались немного завышены. Однако ясно что даже в столь узкой, локальной и специфичной области знаний, о которой её создатели вероятно не подозревают, LLM способна помогать и иногда заменять разработчика.
Через год можно будет оценить динамику, может быть, будет выполнено две трети задач? Можно ли будет тогда заявить, что ИИ достиг PhD уровня в области Битрикса? Развитие агентов и Оператора вероятно изменят формат взаимодействия с чата, на какой-то иной, более эффективный интерфейс. Будем следить за обеими областями знаний и надеемся этот нестандартный набор заданий для оценивания немного поспособствует дальнейшему прогрессу в обучении больших языковых моделей.