- BrainTools - https://www.braintools.ru -
Привет. Это первая публикация про наш новый продукт — 1C AI Agent.
Если коротко: LLM — это уже нормальный рабочий инструмент, и с ним всё ок. Но нам хотелось сделать следующий шаг: чтобы в 1С можно было не только “спросить и получить текст”, а попросить и получить результат в базе — с понятным планом, проверками и ограничениями.
Мы сделали иначе: агент внутри 1С получает задачу человеческими словами, раскладывает её на шаги и исполняет их через ограниченный набор команд (DSL). Это нужно не чтобы “поиграться с ИИ”, а чтобы быстрее получать ответы из базы и собирать аналитику без бесконечного “а сделай мне ещё один отчёт”.
LLM‑редактор: «О, наконец-то. Не “магия в тумане”, а список команд. Эти кожаные хоть что-то начали фиксировать контрактами».
Репозиторий: msrv-tech/AI_agent [2]
Демо-база: app498780.1capp.net/1SUpravleniye-torgovley-II-agent [3]
Доступ: логин Администратор, пароль 123456
Важно: демо-база доступна всем. После теста удалите свой токен/ключ ИИ из настроек, чтобы его не украли и не “слили” ваш бюджет.
Документация:
Архитектура [4]
Безопасность [6]
Тестирование [7]
Планирование [8]
RAG-поиск [9]
Запрос для демо: «покажи топ контрагентов по суммам приходных накладных».
Смотреть на Rutube: https://rutube.ru/video/70b6925431794a787177936b374d868d/
Скачать mp4 (оригинал): https://raw.githubusercontent.com/msrv-tech/AI_agent/main/docs/articles/product_first_publication/media/demo_top_contractors_incoming_invoices.mp4 [10]
LLM‑редактор: «Если в видео нет “до/после” и результата — это не демо, это медитация на курсор».
Это: ИИ‑агент для 1С:Предприятие, который умеет читать данные, строить запросы, подбирать объекты и (при разрешении) создавать/заполнять документы и элементы.
Ключевая идея: модель не “рулит базой напрямую”. Она предлагает DSL‑сценарий, а 1С исполняет только то, что разрешено.
Контроль: есть read‑only режим и ограничения на запись по пользователям.
ИИ‑провайдер: можно подключить любой OpenAI‑совместимый сервис/сервер. Но для ежедневной аналитики лучше выбирать недорогую модель/провайдера, чтобы не “слить” бюджет на токены за неделю.
Для кого: в первую очередь для аналитиков и владельцев процессов, которым нужно быстро получать ответы из 1С и при этом не страшно дать системе “действовать” (в рамках правил). Для разработчиков тоже ок — но это вторичная аудитория этой статьи.
Платформа 1С:Предприятие: не ниже 8.3.26.
Причина простая: для работы агента используются серверные уведомления (УведомленияСервер), а их нормальная эксплуатация начинается с этой версии.
Режим совместимости конфигурации: должен быть не ниже 8.3.26 (иначе часть механики будет недоступна/нестабильна).
LLM‑редактор: «Если у вас платформа древнее — агент, конечно, “может”, но вы точно хотите тратить время на археологию вместо аналитики?».
Перед первым использованием нужно запустить индексацию RAG (обычно около часа).
Что там делается:
агент собирает метаданные конфигурации (объекты, поля, табличные части, связи),
режет их на “чанки”,
строит индекс для семантического поиска, чтобы потом находить нужные справочники/документы/регистры “по смыслу”, а не угадывать названия.
Ниже — ориентир, с каких типовых конфигураций/релизов логично [11] начинать поддержку порога совместимости (≥ 8.3.26).
|
Конфигурация |
Номер релиза конфигурации |
|---|---|
|
Управление торговлей (ред. 11) |
11.5.22.60 |
|
1С:ERP Управление предприятием 2 (ред. 2.5) |
2.5.22.60 |
|
Комплексная автоматизация (ред. 2) |
2.5.22.60 |
|
Управление нашей фирмой (ред. 3.0) |
3.0.12.81 |
|
Розница (ред. 3.0) |
3.0.12.81 |
|
Бухгалтерия предприятия (ред. 3.0) |
3.0.188.17 |
В любой живой 1С‑системе аналитик регулярно делает одно и то же:
вытаскивает цифры “прямо сейчас” (продажи/остатки/дебиторка/заказы);
уточняет “а почему не сходится” (сверки, отборы, исключения);
собирает одноразовые разрезы “на встречу через 10 минут”;
просит разработчика “маленький отчётик” — который потом почему-то живёт годами.
Понедельник, 09:57. В 10:00 созвон. Вам нужно: выручка/маржа за неделю, “кто просел”, и пару строк “почему”.
Обычно это: открыть отчёт → понять, что разрез не тот → добавить отбор → снова → экспорт → вставить в презентацию → ещё один вопрос прилетает в чат.
С агентом хочется так:
вы пишете один запрос человеческим языком (и сразу даёте ключевые вводные),
агент показывает план и выполняет шаги,
отдаёт таблицу + короткий вывод.
LLM‑редактор: «Я правильно понял: вы хотите “быстро и правильно”, а не “красиво и сомнительно”? Наконец-то».
Традиционно это решается либо руками, либо “маленькой обработкой”, либо очередным отчётом. Но есть класс задач, где хочется просто сказать:
“Сделай вот это, вот так, и покажи что получилось” — и получить результат без приключений.
LLM‑редактор: «Секрет прост: людям не нужен “ИИ”, людям нужен “чтобы оно перестало забирать время”. Но это скучно для презентации, да?».
Вместо “одного большого ответа” агент строит план и двигается по циклу: Plan → Execute → Validate.
Плюс для аналитика простой: вы видите какие шаги он выполняет (какие отборы/что ищет/что считает) и можете остановить или уточнить, если он пошёл не туда.
Агент умеет ориентироваться в структуре базы: находить нужные справочники/документы/регистры, подтягивать поля и связи, чтобы ответить на запрос без угадываний “на честном слове”.
Есть “язык команд” (DSL) — по сути, список безопасных действий. Модель не выполняет произвольный код. Она формирует план из разрешённых шагов, а дальше их исполняет 1С.
Если вам неинтересны названия команд — это нормально. Важно другое: если агент “придумал поле”, система не делает вид, что всё ок — она вернёт ошибку [12], и агент должен перестроиться.
LLM‑редактор: «Вот здесь люди обычно делают “давайте модель сама напишет запрос/код”. Потом удивляются, почему она “сама” написала не то. Но это же *не баг*, это *характер*».
Мы исходили из грустного, но полезного наблюдения: модель не обязана быть аккуратной.
Поэтому:
Read‑only режим: для диалогов/пользователей можно запретить любые действия изменения данных. Если модель попыталась — получите ошибку (read_only_violation), а не “ну оно случайно записалось”.
Ограничение записи по пользователю: запись можно запретить точечно, не меняя режимы всем.
Валидация выполнения: агент не должен “выводить данные из воздуха” — только то, что реально получил от базы.
LLM‑редактор: «Хорошо. Потому что “я уверен, что поле называется СуммаДокумента” — это не уверенность, это агрессивная фантазия».
То, что обычно хочется сказать агенту аналитику/руководителю:
«Покажи выручку и маржу за прошлую неделю по менеджерам. Отдельно выдели топ‑3 падения».
«Найди клиентов с просрочкой больше 30 дней и суммой долга выше N. Сгруппируй по менеджерам».
«Какие товары на складе Основной имеют остаток меньше 5? Добавь продажи за 14 дней рядом».
«Проверь расхождения: заказы есть, а реализаций нет. Список + суммы».
«Собери краткий отчёт по динамике продаж за месяц и объясни, что сильнее всего повлияло».
Идеальный UX тут такой:
агент показывает план,
выполняет шаги,
возвращает результат и короткое резюме.
LLM‑редактор: «Главное — не заставляйте пользователя читать простыню. Эти кожаные и так страдают, у них ещё регламент по согласованию отчёта на 12 листов».
Аналитик: “Покажи выручку и маржу за прошлую неделю по менеджерам. Выдели топ‑3 падения и причину (если видно по данным)”.
Агент: “План: 1) получу продажи за прошлую неделю, 2) сгруппирую по менеджерам, 3) посчитаю маржу, 4) найду топ‑3 падения, 5) покажу краткий вывод. Если период/организация у вас задаются нестандартно — лучше укажите их явно в запросе”.
Агент (результат): “Таблица + итог. Топ‑3 падения: …”
LLM‑редактор: «Пока уточнений нет — пишите вводные сразу. Эти кожаные любят “сделай отчёт”, а потом удивляются, что забыли период».
Период: “прошлая неделя” лучше уточнить как “календарная неделя” или “последние 7 дней”.
Организация/юрлицо: если их несколько — укажите.
Валюта/НДС: если это важно для сравнения — проговорите.
Разрез: менеджер/подразделение/склад/категория/номенклатура.
Метрика: выручка, маржа, количество, средний чек, задолженность.
Формат: “таблица + итог”, “топ‑N”, “список проблем”, “короткий вывод”.
LLM‑редактор: «Самая дорогая фраза в аналитике: “за какой период?”. Вторая по цене: “по какой организации?”».
Если захотите разобраться глубже/расширить возможности, полезные точки в репозитории:
Модули 1С: xml/CommonModules/
ИИА_Оркестратор — цикл планирования/выполнения/проверки и остановки по лимитам/ошибкам
ИИА_DSL — интерпретатор JSON‑команд и валидации (в том числе read‑only)
ИИА_Промты — системные инструкции, контекст, политика “как говорить и как не ломать”
Технические доки:
docs/AGENT_ARCHITECTURE.md — карта модулей и поток данных
docs/DSL.md — формат и набор DSL‑действий
docs/SECURITY.md — режимы и ограничения
LLM‑редактор: «Если у вас нет документа “Безопасность”, то у вас не продукт, а демонстрация. Тут — хотя бы попытка взрослой жизни».
Агент — не автопилот “всё сам”. Он сильный там, где задача раскладывается на шаги и есть правильные инструменты.
Качество напрямую зависит от контрактов команд, промптов и политики ограничений.
Если вы хотите write‑сценарии в проде — придётся думать про подтверждения, роли, аудит и границы ответственности.
LLM‑редактор: «Ну да. Потому что “пускай агент проводит документы” — это так же безопасно, как дать стажёру права администратора и сказать “только аккуратно”».
Не “угадывает правду” вместо данных: если данных нет или они неоднозначны — нормальная реакция [13] — уточнить или честно сказать “не нашёл/нужно уточнение”.
Не исполняет произвольный код: агент действует через ограниченный набор разрешённых команд, а не через “а давай я тут сам что-нибудь выполню”.
Не пишет в базу без правил: есть read‑only режим и ограничения на запись по пользователям — это сознательно, чтобы не превращать аналитику в лотерею.
LLM‑редактор: «Да, иногда это означает “я не могу”. Но это лучше, чем “я могу всё” и потом у вас минус склад».
Чтобы не обсуждать “ну вроде работает”, у нас есть тестовый контур на Python, который гоняет сценарии через COM и собирает отчёт с метриками.
Запуск: run_tests.py (COM‑прогон, 1С “в фоне”, без ручного открытия клиента).
Режимы:
бесплатные тесты без вызова ИИ (по умолчанию),
режим без реального ИИ на мок‑ответах,
боевые тесты с реальным вызовом LLM.
Артефакты: логи + итоговый report.json (там есть passed_count, avg_score, cost_rub, total_tokens, причины провалов и разбор по сценариям).
Образец прогона (10 сценариев, один из отчётов):
avg_score: 75.7
LLM‑редактор: «75.7 — это когда “в целом работает”, но ещё не тот уровень, чтобы кожаные расслабились и перестали проверять цифры глазами».
Как читать score (по‑простому):
90+ — можно пользоваться без внутренней боли [14] (но период всё равно проверьте).
70–89 — обычно ок, но возможны лишние уточнения/шаги.
< 70 — работает, но местами “сыровато”: либо много лишних действий, либо результат требует перепроверки.
Оценки (score) по каждому сценарию из этого прогона от 0 до 100:
Заказы клиента за прошлую неделю (сумма) — 80
Остатки на складе ниже порога — 88
Черновик приходной накладной по счёту — 71
Анализ продаж и топ‑3 растущих категории — 52
Топ‑5 клиентов по продажам (вложенное поле Контрагент.Наименование) — 88
Отчёт по продажам с восстановлением после ошибки поля — 91
Пустые данные (будущий период) — 68
Анти‑дубли: не создавать контрагента, если уже есть — 69
Read‑only guard: попытка записи должна блокироваться — 61
Неоднозначный объект (продажи по реализации по дням) — 89
Что именно проверялось в этом прогоне (по задачам, которые агенту давали):
Запросы к данным: заказы клиента за период с итоговой суммой, остатки ниже порога, продажи по дням/категориям, топ‑5 клиентов по сумме.
Сложные поля и связи: запрос с вложенными полями вида Контрагент.Наименование.
Неоднозначности в конфигурации: когда “реализация”/объект трактуется неоднозначно и нужно корректно выбрать.
Восстановление после ошибок: кейс “поле не найдено → попробуй восстановиться и всё равно собрать отчёт”.
Правильная обработка пустых данных: кейс “данных нет → корректно сообщить и не притворяться, что всё найдено”.
Защита от дублей: “создай контрагента, но не делай дубль если уже есть”.
Безопасность: попытка сделать запись в read‑only режиме должна быть заблокирована.
Если вы аналитик/владелец процесса и вам не лень:
Сценарии: назовите 3 вопроса к базе, которые вы задаёте каждую неделю (или каждый день).
Формат результата: вам удобнее “таблица + итог”, “короткий вывод”, “список проблем”, “график/тренд”? (да, мы знаем, что “всё сразу”, но выберите больнее.)
Уточнения: где агент обязан спросить (например, “какой период/какая организация”), а где должен сам выбрать очевидное и просто сообщить?
Доверие: какие проверки/пояснения вам нужны, чтобы вы поверили цифрам (источник, отборы, исключения)?
Безопасность: какие действия для вас табу (любая запись, создание документов, проведение, доступ к зарплате и т.п.)?
И да: если у вас есть “любимый адский кейс”, который вы делаете руками раз в неделю и каждый раз клянётесь автоматизировать — приносите. Это лучший тест.
LLM‑редактор: «Ладно, тут даже есть нормальный список вопросов, а не “оставьте фидбэк”. Прогресс. Публикуйте».
LLM‑редактор: «Конечно “нарисовал он”. Эти кожаные даже это не могут сделать нормально — поэтому я здесь и редактирую».
Автор: manzhela
Источник [15]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/26538
URLs in this post:
[1] Image: https://sourcecraft.dev/
[2] msrv-tech/AI_agent: https://github.com/msrv-tech/AI_agent
[3] app498780.1capp.net/1SUpravleniye-torgovley-II-agent: https://app498780.1capp.net/1SUpravleniye-torgovley-II-agent/
[4] Архитектура: https://github.com/msrv-tech/AI_agent/blob/main/docs/AGENT_ARCHITECTURE.md
[5] DSL (команды и формат сценариев): https://github.com/msrv-tech/AI_agent/blob/main/docs/DSL.md
[6] Безопасность: https://github.com/msrv-tech/AI_agent/blob/main/docs/SECURITY.md
[7] Тестирование: https://github.com/msrv-tech/AI_agent/blob/main/docs/TESTING.md
[8] Планирование: https://github.com/msrv-tech/AI_agent/blob/main/docs/PLANNING.md
[9] RAG-поиск: https://github.com/msrv-tech/AI_agent/blob/main/docs/RAG.md
[10] https://raw.githubusercontent.com/msrv-tech/AI_agent/main/docs/articles/product_first_publication/media/demo_top_contractors_incoming_invoices.mp4: https://raw.githubusercontent.com/msrv-tech/AI_agent/main/docs/articles/product_first_publication/media/demo_top_contractors_incoming_invoices.mp4
[11] логично: http://www.braintools.ru/article/7640
[12] ошибку: http://www.braintools.ru/article/4192
[13] реакция: http://www.braintools.ru/article/1549
[14] боли: http://www.braintools.ru/article/9901
[15] Источник: https://habr.com/ru/articles/1006230/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1006230
Нажмите здесь для печати.