Короткий ответ: LLM там не делает работу — он принимает решения между шагами, которые делают скрипты. Скрипты детерминированы и тупы по краям; LLM закрывает «мягкие» места, где нужно понять намерение, сматчить неточные данные и среагировать на ошибку.
Конкретно в цепочке fbo-logistics LLM делает 5 вещей, которых скрипт сам не может:
1. Перевод «человеческого» в параметры.
Ринат пишет «оформи поставку 20 пневмовинтовёртов на Москву». Скрипту нужны cluster_id=4039, warehouseCode, materialCode, количества, таймслот. LLM достаёт намерение из фразы и раскладывает по аргументам тулзы. Скрипт начинается только с готового JSON.
2. Резолв неточных совпадений.
Товар назвали «винтовёрт», а в номенклатуре он «Гайковёрт аккум. 20В». Артикул дали частично. LLM матчит название→SKU/materialCode (для этого и resolve_cache.db). Скрипт по точному коду — да, по «винтовёрту» — нет.
3. Реакция на ошибки API.
API вернул START_DATE_CANNOT_BE_TODAY или ROBJECT_INCORRECT — LLM понимает, что это значит, и решает: поправить дату на завтра, спросить склад, или сообщить тебе. Скрипт просто упал бы с кодом ошибки.
4. Оркестрация многошаговых сценариев.
Создать черновик → проверить таймслоты → выбрать → подтвердить → дождаться статуса задачи → забрать этикетки. Между шагами есть ветвления («таймслотов нет → что делаем»). LLM ведёт этот граф; каждый отдельный шаг — детерминированный скрипт/API-вызов.
5. Объяснение результата.
API отдаёт сырой JSON с кодами. LLM превращает в «поставка создана, слот завтра 14:00, этикетки вот».
Где LLM НЕ нужен — и правильно, что эта работа в скриптах: сами API-вызовы, пагинация, ретраи, парсинг PDF, кэш. Это детерминированно, и гонять через LLM — дорого, медленно и ненадёжно (он бы галлюцинировал коды складов).
То есть деление осознанное: скрипты = руки (точные, повторяемые операции), LLM = диспетчер (намерение, матчинг, ветвление, ошибки, речь). Если убрать LLM — получишь жёсткий CLI, где ты сам подставляешь все коды и сам читаешь ошибки. Если убрать скрипты и дать LLM дёргать API напрямую — получишь дорого и с галлюцинациями в параметрах.
Хочешь, покажу на конкретной тулзе fbo, какая часть в скрипте, а какая отдана модели?
Оригинал в Telegram · @Rinat_FF