1cbench
Описание
Бенчмарк для оценки способности LLM-моделей писать код на 1С.
Языки
- Python100%
1C Code Bench
Бенчмарк для оценки способности LLM-моделей писать код на 1С.
Обзор
1C Code Bench — это инструмент для бенчмаркинга, который позволяет измерить, насколько хорошо генеративные модели пишут код на 1С. В системе содержится 20 задач, решение для которых должна написать модель.
Последовательность шагов при обчном использовании:
- Сгенерировать решения задач с помощью генератора generate_for_bench.py
- Замерить качество решений с помощью стартера бенчмарка run_bench.py
Требования
- Python 3.11+
- Платформа 1С:Предприятие (рекомендуется 8.3.24+)
- Необходимые пакеты Python:
- pandas
- tqdm
- python-dotenv
Установка
- Если у вас еще не становлена платформа 1С:Предприятие, установите ее согласно официальной документации.
- Скачайте выгрузку демо-базы и разверните ее локально.
- Клонируйте репозиторий
- Установите необходимые пакеты:
- Создайте файл
на основе.env:.env.example - Настройте переменные окружения в файле
(см. раздел "Конфигурация").env
Конфигурация
Настройка осуществляется через файл в корне проекта. После установки скопируйте в и обновите следующие переменные окружения:
Обязательные переменные:
-
: Путь к исполняемому файлу конфигуратора 1С:ПредприятиеDESIGNER_PATHDESIGNER_PATH=<путь к папке с 1С>/bin/1cv8.exe -
: Путь к вашей демо-базе, которую вы скачали и развернули на шаге 2 установкиDATABASE_PATHDATABASE_PATH=<ваш_путь_к_базе_данных>
Дополнительные переменные:
: Имя обработки (по умолчанию:PROCESSING_NAME)SampleProcessor: Имя пользователя 1С (по умолчанию:USER_NAME)Admin
Примечание: Файл содержит конфиденциальную информацию и не должен коммититься в репозиторий. Используйте как шаблон для новых установок.
Использование
Базовое использование
Аргументы:
— обязательный. Путь к CSV-файлу с решениями задачsource_file,--output— опционально. Путь к JSON-файлу для сохранения статистики-o— опционально. Запуск в режиме валидации (выполняются эталонные решения)--dry-run
Примеры:
Вывод результатов:
После выполнения скрипт выводит в консоль:
- Общее количество задач
- Процент успешной компиляции
- Процент успешного выполнения
- Список задач с ошибками компиляции (если есть)
- Список задач с ошибками выполнения (если есть)
Формат данных задач
Тестовые задачи должны предоставляться в виде обработки (.epf) со следующими функциями в модуле:
: Код, идеально решающий задачу (для пробного запуска)ваша_функция_решения(): Код для валидации результатовЗадачаРешена(): подготовка данных и запуск решенияЗапуститьРешение()
Образец обработки для задачи бенчмарка: — пример структуры обработки с реализацией всех необходимых функций.
Запуск бенчмарков
Генерация решений задач через LLM
Скрипт позволяет генерировать решения задач с помощью LLM-моделей.
Конфигурация в :
Примеры идентификаторов моделей:
| Провайдер | MODEL_ID |
|---|---|
| Anthropic | , |
| OpenRouter | , , |
Запуск:
Скрипт читает задачи из файла и сохраняет результаты в .
Формат входного CSV-файла:
| Колонка | Описание |
|---|---|
| Текст задачи |
| Контекстная информация о структуре конфигурации 1С |
Формат выходного CSV-файла:
К исходным колонкам добавляется колонка с сгенерированным кодом решения.
Разработка
Добавление новых тестовых задач
- Сделайте клон репозитория
- Создайте ветку для новых тестовых задач
- Добавьте новые задачи (taks/task_*.epf) по инструкции.
- Проверьте выполнение задачи локально
- Отправьте pull request или заполните формочку
Ссылки
Телеграм проекта
Мой канал об 1С и LLM
Наша статья на Инфостарте