Хочу выразить свою благодарность всем сотрудникам ИТ отдела, за помощь в изучении CWMS 3000.

Добрый день. Я работаю разработчиком в компании Аэросиб‑С. Аэросиб‑С — крупная российская логистическая и транспортно‑экспедиционная компания, специализирующаяся на складской логистике, логистике для интернет‑магазинов и ответственном хранении товаров на складах класса «A».
Через склады ежедневно проходят несколько тысяч товарных единиц, в системе WMS (Warehouse Management System — система управления складом) фиксируются сотни миллионов транзакций. Для успешного функционирования бизнеса требуется снижение ручной работы, за счет автоматизации всех бизнес‑процессов.
Недавно я реализовывал задачу автоматизации выставления счетов за оказание логистических услуг на основании данных из WMS и ТСД (терминалов сбора данных). Данная система позволяет сократить ручной ввод информации сотрудниками, и экономит финансовые средства за счет более точного выставления счетов и избежания ошибок расчета. В процессе разработки я использовал параметризованные SQL‑запросы к базе данных. Однако это создает определенную сложность: для описания новых услуг или изменения логики расчета требуется менеджер, владеющий SQL, что на практике маловероятно. Чтобы снизить нагрузку на разработчика по сопровождению системы, я принял решение использовать технологии искусственного интеллекта. На сегодняшний день существует множество открытых LLM‑моделей, способных генерировать корректные SQL‑запросы по текстовому описанию, используя предоставленную схему данных.
Хочу поделиться с Вами процессом выбора LLM модели, тестированием и результатами эксплуатации. Изначально, в постановке задачи, не было условия использования LLM моделей. Поэтому при реализации не было предусмотрено использование серьёзных вычислительных средств.
Для решения поставленной задачи мной были определены следующие этапы работы и ключевые ограничения:
«В начале было Слово». С помощью текстового описания, с использованием специфических для логистики терминов и конкретной WMS, формировать SQL запросы к базе данных;
Требуется использование локальной LLM модели, для исключения передачи чувствительных бизнес‑данных третьим лицам;
Требуется использование доступного оборудования: Linux Debian с 30Gb RAM.
Анализ SQL запросов, которые были созданы для описания автоматически выставляемых счетов за услуги, позволил:
Сузить круг таблиц WMS, подлежащих документированию через DDL;
Разработать эталонный запрос для последующего тестирования моделей.
Для описания части схемы WMS, для моей задачи, потребовалось описать только 10 таблиц. Для задачи подобного рода — Text‑to‑SQL, понимания связей в базе данных, и формированием сложных запросов (JOIN, GROUP BY), требуются LLM модели с 16B/32B параметрами.
Вот список моделей, которые я протестировал, используя следующий тестовый запрос:
Создать запрос, который получает количество уникальных идентификаторов паллет — cnt и пустое поле nomenklatura_n из таблицы стока, для оприходованных на склад записей, на основании уникального идентификатора приходной накладной, используемого в качестве параметра:ST_DOC, для Европейских типов паллет.
Модель | Результат тестирования | Скорость TTFT |
deepseek‑coder‑v2:16b | Ответ не верный | total duration: 1m47.8427644s prompt eval count: 2572 token(s) prompt eval duration: 1m16.365931s prompt eval rate: 33.68 tokens/s |
gemma4:26b | Ответ верный | total duration: 21m33.7271745s prompt eval count: 2165 token(s) prompt eval duration: 2m55.275504s prompt eval rate: 12.35 tokens/s |
qwen3-coder:30b | Ответ не верный | total duration: 3m41.5797713s prompt eval count: 2143 token(s) prompt eval duration: 2m53.76253s prompt eval rate: 12.33 tokens/s |
qwen3:14b | Ответ верный, но не оптимальный | total duration: 15m5.865913s prompt eval count: 2145 token(s) prompt eval duration: 2m59.894633s prompt eval rate: 11.92 tokens/s |
qwen3:30b | Ответ верный | total duration: 16m9.3425841s prompt eval count: 2145 token(s) prompt eval duration: 2m53.397548s prompt eval rate: 12.37 tokens/s |
qwen3.5:9b | Не справился с заданием | total duration: 19m36.3051479s prompt eval count: 1995 token(s) prompt eval duration: 1m16.513861s prompt eval rate: 26.07 tokens/s |
Модели тестировались с использование сервера ollama и тестовым modelfile, содержащим описание схемы:
# Use an existing base model
FROM model‑name
# Set parameters to adjust creativity and context length
PARAMETER temperature 0.1
PARAMETER num_ctx 8192
# Bake in a custom system prompt
SYSTEM “‘’”
Ты — ведущий разработчик баз данных Oracle.
Твоя задача — переводить текст в SQL‑запросы.
Используй ТОЛЬКО диалект Oracle SQL.
Выдавай только чистый SQL‑код внутри блока ```sql, без лишних объяснений.
Используй ТОЛЬКО следующую схему данных:
[СТРУКТУРА ТАБЛИЦ (DDL)]:
“‘’”
ollama create test_model -f test_modelfile ollama run test_model
Результаты тестирования выявили следующие моменты:
Специализированные coder модели работают хуже, чем размышляющие модели. Возможно, это связано с ограничением LLM моделей 16B/32B параметрами;
Без использования видео ускорителей с VRAM, время ответа моделей, измеряется десятками минут. Очевидно — но это первая попытка использования ИИ без привлечения дополнительного финансирования;
Текстовое описание условий формирования автоматически выставляемых счетов за услуги, скорее сформулирует аналитик, а не менеджер ответственный за счета и услуги.
Я, конечно, ожидал большего, но это тоже большой плюс — разработчик исключается из процесса поддержки системы.
Как я вижу развитие: услуги разных компаний, примерно одинаковы и обычно повторяются. Можно создать экспертную систему, которая будет классифицировать виды автоматически выставляемых услуг по группам. Это позволит пользователю подбирать текстовое описание SQL‑запроса для новых услуг из существующих;
Победителем я выбрал модель gemma4:26b, так как она генерирует самый корректный SQL‑код.
Сейчас на habr’е появилось много статей про использование искусственного интеллекта. От «AI‑программирование: как я решил задачу, не написав ни строчки кода» (https://habr.com/ru/articles/825478/), до «Кризис найма (как в IT) журналисты прошли ещё в 2013. Как у них получилось выйти?» (https://habr.com/ru/articles/1058218/). Данная статья заканчивается мрачным прогнозом: «ИИ может срезать половину офисных позиций начального уровня и поднять безработицу до десяти‑двадцати процентов в ближайшие один‑пять лет, и „большинство людей не подозревают, что это вот‑вот произойдёт“».
Появление новых технологий — это всегда вызов. Требуется найти такое решение, использования искусственного интеллекта, чтобы с одной стороны повысить скорость разработки, а с другой формировать код, который не будет вести к тех долгу и не будет ситуации, что код никому не понятен. Мое мнение: ИИ — это инструмент. Изучайте его, используйте самым свободным, дерзким и оригинальным способом, экспериментируйте в своих проектах.
