Хочу выразить свою благодарность всем сотрудникам ИТ отдела, за помощь в изучении 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/). Данная статья заканчивается мрачным прогнозом: «ИИ может срезать половину офисных позиций начального уровня и поднять безработицу до десяти‑двадцати процентов в ближайшие один‑пять лет, и „большинство людей не подозревают, что это вот‑вот произойдёт“».

Появление новых технологий — это всегда вызов. Требуется найти такое решение, использования искусственного интеллекта, чтобы с одной стороны повысить скорость разработки, а с другой формировать код, который не будет вести к тех долгу и не будет ситуации, что код никому не понятен. Мое мнение: ИИ — это инструмент. Изучайте его, используйте самым свободным, дерзким и оригинальным способом, экспериментируйте в своих проектах.