ИИ-агент для 1С под NDA: Как я научил локальную LLM писать запросы, понимать регистры и СКД

05.05.26

Интеграция - Нейросети

Подружить ИИ и 1С:ЗУП — задача со звездочкой. Зарплата, персональные данные строжайше запрещено отправлять в облачные API. Но первой линии поддержки нужен умный помощник для поиска ошибок расчетчиков. Я решил эту проблему, спроектировав ReAct-агента для работы в полностью закрытом контуре на базе локальной модели Gemma-4:31b и LangGraph. В этой статье (которая является скорее моим инженерным дневником) я расскажу, почему классический RAG не работает для 1С, как я отучил нейросеть галлюцинировать запросы, научил её читать метаданные и программно превращать таблицы СКД в плоский JSON. Разбор архитектуры, куски кода и видео работы моего ИИ под катом.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Выгрузка расширения 1С:ЗУП и проект на Python
.zip 182,68Kb
10 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Когда заходит речь об интеграции LLM (больших языковых моделей) и корпоративных систем, первый же вопрос от службы безопасности звучит так: «А куда полетят данные?».

В случае с какими-нибудь CRM или складским учетом еще можно подискутировать. Но когда дело касается 1С:ЗУП — это глухая стена. Ни один вменяемый ИТ-безопасник не разрешит работать с облачной LLM.

Поэтому моя задача звучала амбициозно: спроектировать архитектуру ИИ-агента, который сможет автономно расследовать ошибки расчетчиков в ЗУП, но при этом будет готов к развертыванию в полностью закрытом контуре на локальных моделях.

В этой статье (которая является скорее инженерным дневником, чем презентацией готового коробочного продукта) я расскажу, как я отказался от классического RAG, познакомили LLM с метаданными 1С и заставили нейросеть писать валидные 1C запросы, получая по рукам от HTTP сервиса 1С в случае ошибки.

(Спойлер: пока сервера под локальные модели уровня Gemma-4:31b находятся в стадии закупки, архитектуру я обкатывал на облачных API, так как код оркестратора от этого не меняется. Но обо всем по порядку).

 

Проблема: Почему обычный RAG не работает для 1С?

Классический подход к ИИ в бизнесе сейчас выглядит так: берем документацию, скармливаем в векторную базу данных (Chroma/Pinecone), подключаем LLM. Пользователь задает вопрос, ИИ находит похожий кусок текста и генерирует ответ (это и есть RAG — Retriever-Augmented Generation).

Для первой линии поддержки это работает неплохо, когда нужна справочная информация. Но когда бухгалтер или сотрудник службы поддержки пишет:

«Почему у Солодовниковой М.П. в Начислении ЗП №25 НДФЛ посчитался как 8515 рублей, хотя оклад 65 000? По моим расчетам должно быть 8450!»

Нейросети нужно залезть в конкретную базу, посмотреть конкретный документ, проверить вытеснения, сходить в регистры за прошлые периоды и найти причину.

Нам нужен был не умный справочник. Нам нужен был автономный агент.

 

Концепция ReAct: Даем ИИ "руки" и "глаза"

Я использовал паттерн ReAct (Reasoning and Acting) на базе фреймворка LangGraph (Python).
Суть в том, что мы даем языковой модели набор инструментов (tools) в виде HTTP-вызовов к серверу 1С. Получив вопрос, агент вступает во внутренний цикл:

  1. Thought (Мысль): «Так, меня просят проверить НДФЛ. Сначала мне нужно получить данные из этого документа».

  2. Action (Действие): Вызывает метод API get_calculation_details.

  3. Observation (Наблюдение): Получает JSON с табличной частью документа.

  4. Thought (Мысль): «Ага, я вижу оклад 65 000 и НДФЛ 8515. Действительно, не сходится. Пойду поищу историю начислений в регистрах за прошлые месяцы».

  5. Action (Действие): Пишет 1С запрос и дергает API execute_1c_query.

  6. И так далее, пока не найдет ответ.

Как это выглядит на практике (Разбор реального кейса)

Давайте посмотрим на то, как агент разбирает ту самую проблему с Солодовниковой из примера выше.

Демонстрация работы агента в интерфейсе 1С и терминале.

 

Давайте заглянем под капот и почитаем реальные логи оркестратора. Наблюдать за ходом мыслей ИИ — отдельный вид удовольствия. Модель ведет себя как настоящий стажер, который впервые открыл консоль запросов 1С и собирает все грабли синтаксиса. Но, в отличие от человека, она не впадает в депрессию, а методично исправляет свои ошибки.

 
 Лог работы агента в терминале

 

Шаг 1. Погружение в контекст
Получив задачу («проверь начисленный НДФЛ по Солодовниковой...») агент первым делом читает локальную шпаргалку docs/Начисление зарплаты и взносов.md. Затем он дергает инструмент get_1c_calculation_details и получает табличную часть документа.

 

Шаг 2. Первая ошибка (Незнание таблиц)
Агент решает проверить налог запросом к документу и пишет:

ВЫБРАТЬ НДФЛ.ФизическоеЛицо...

Наш сервис 1С возвращает агенту ошибку: Поле не найдено "НДФЛ.Регистратор".
ИИ извиняется (внутренне), переписывает запрос правильно и успешно вытаскивает сумму налога из документа — 8 515 руб.

 

Шаг 3. Идем в регистры и ломаемся об Перечисления
Дальше агент понимает: чтобы найти причину расхождения, нужно лезть в историю — в РегистрНакопления.НачисленияУдержанияПоСотрудникам. Он пишет запрос, пытаясь отфильтровать НДФЛ через перечисление: ЗНАЧЕНИЕ(Перечисление.ВидыВзаиморасчетовССотрудниками.НДФЛ).
И снова получает по рукам от 1С Неверные параметры "Перечисление.ВидыВзаиморасчетов...".

 

Шаг 4. Осознание структуры
Агент понимает, что галлюцинирует архитектуру ЗУП. Он вызывает инструмент get_metadata("РегистрНакопления.НачисленияУдержанияПоСотрудникам").
Наш сервис отдает ему JSON со всеми измерениями, ресурсами и реквизитами регистра.

 

Шаг 5. Боль, страдания и синтаксис 1С
Получив метаданные, агент пытается написать правильный запрос, но тут начинается череда великолепных ошибок, знакомых каждому начинающему 1С-нику:

  1. Ошибка даты: Агент пишет условие Период <= '2021-09-30'. 1С падает: Синтаксическая ошибка "'2021-09-30'" (забыл слово ДАТА).

  2. Ошибка GUID'а: Агент решает использовать параметры. Он создает параметр &ФизЛицо, но вместо GUID'а сует туда строку с ФИО: "Солодовникова Мария Пахомовна". Наш Python-оркестратор ловит ошибку от 1С: ОШИБКА: Битый GUID или объект не существует.

  3. Ошибка ПРЕДСТАВЛЕНИЯ: Агент решает обойти GUID и ищет по строке: ПРЕДСТАВЛЕНИЕ(НачислениеУдержание) ПОДОБНО "%НДФЛ%". 1С снова неумолима: Неверные параметры "ПОДОБНО" (нельзя использовать ПОДОБНО к функции ПРЕДСТАВЛЕНИЕ).

 

Шаг 6. Финальный успех и победа над контекстом
Спустя 4 итерации правок, агент находит верный синтаксис. Запрос отрабатывает и выплевывает 290 строк истории по НДФЛ сотрудника, начиная аж с 2012 года!
Срабатывает наш предохранитель: 1С обрезает выборку до 100 строк и шлет агенту предупреждение: "Запрос вернул слишком много данных... Чтобы не переполнять контекст, показаны только первые 100".

Этих данных агенту хватает. Он анализирует полученный JSON истории и выдает подробный ответ с разбором базы налогообложения.

Агент делает математический расчет: (65 000 + 500) * 13% = 8 515 руб. и выводит в интерфейс красивый, аргументированный ответ о том, что ошибки нет — система правомерно обложила налогом расходы на проезд.

 

Скриншот ответа агента из переписки в интерфейсе 1С

 

Но чтобы заставить LLM работать с 1С так стройно, нам пришлось решить несколько серьезных архитектурных проблем.

 

Обучаем LLM "видеть" 1С: Метаданные, безопасный запрос и СКД

 

Локальные модели (да и облачные тоже) имеют одну неприятную особенность — они обожают галлюцинировать. Если попросить ИИ написать запрос для 1С:ЗУП, он с радостью сгенерирует что-то вроде:

ВЫБРАТЬ * ИЗ Документ.НачислениеЗарплаты.Сотрудники

(Спойлер: табличная часть называется Начисления, а не Сотрудники).

Чтобы наш агент не фантазировал, я не стал загружать структуру всей конфигурации ему в системный промпт (это съело бы весь контекст). Вместо этого мы дали ему инструменты динамического исследования базы.

 

1. «Очки» для нейросети: инструмент get_metadata

Когда агент сомневается в именах таблиц или полей, он вызывает HTTP-метод get_metadata, передавая имя объекта (например, РегистрНакопления.НачисленияУдержанияПоСотрудникам).

На стороне 1С мы программно читаем метаданные и собираем их в удобный JSON. Но мы отдаем не просто шапку и табличные части. Для ЗУП критически важно знать архитектуру регистров, поэтому мы бережно собираем коллекции:

// Выдержка из HTTP-сервиса 1С
Ответ.Вставить("name", ОписаниеМетаданных.Имя);
Ответ.Вставить("dimensions", МассивИзмерений); // Измерения регистра
Ответ.Вставить("resources", МассивРесурсов);   // Ресурсы
Ответ.Вставить("attributes", МассивРеквизитов); // Реквизиты
Ответ.Вставить("standard_attributes", МассивСтандартных); // Регистратор, Период и т.д.

Инсайт: Локальным моделям уровня Gemma-4:31b этого хватает с головой, чтобы построить в уме идеальную схему таблиц и написать рабочий запрос без ошибок (почти).

 

2. Безопасный запрос и укрощение GUID

Отправлять "сырые" строки от ИИ напрямую в Запрос.Выполнить() — это самоубийство. И дело даже не в безопасности самих данных (к счастью, 1С запросы работают только на чтение данных). Проблема в типизации и GUID-ах.

Если ИИ хочет найти данные по конкретному документу, он пишет запрос:
ГДЕ Ссылка = '3e16bbde-f9b8-11eb-80dd-4cedfb682551'
База 1С радостно падает с ошибкой несовместимости типов (Строка и Ссылка).

Мое решение: Я жестко запретил ИИ использовать GUID напрямую в тексте запроса. Вместо этого он обязан передавать их массивом параметров query_parameters (со строгой Pydantic-схемой на стороне Python).

Внутри 1С мы ловим этот массив, парсим тип объекта и конвертируем строку в реальную ссылку:

// Превращаем JSON-параметр от ИИ в ссылку 1С
УИД = Новый УникальныйИдентификатор(ЗначениеGUID);
МассивТипа = СтрРазделить(СтрокаТипа, "."); // Например: "Документ.НачислениеЗарплаты"
КлассОбъекта = НРег(МассивТипа[0]); 
ИмяОбъекта   = МассивТипа[1];

Если КлассОбъекта = "документ" Тогда
    ЗначениеПараметра = Документы[ИмяОбъекта].ПолучитьСсылку(УИД);
// ... устанавливаем Запрос.УстановитьПараметр()

Предохранитель от переполнения контекста:
Что если ИИ напишет ВЫБРАТЬ * ИЗ РегистрНакопления.ОтработанноеВремя без условий? В ЗУП это могут быть миллионы записей. Огромный JSON улетит в Python и гарантированно вызовет OutOfMemory у локальной LLM.

Мы перехватываем этот момент на этапе сериализации:

Если ТаблицаЗначений.Количество() > 100 Тогда
    Ответ.Вставить("warning", "ВНИМАНИЕ! Запрос вернул слишком много данных (" + ТаблицаЗначений.Количество() + " строк). Чтобы не переполнять контекст, показаны только первые 100. Добавь отборы в секцию ГДЕ, используй СГРУППИРОВАТЬ ПО или агрегатные функции (СУММА, МАКСИМУМ).");			
    // Жестко обрезаем ТЗ до 100 строк перед сериализацией в JSON
КонецЕсли;

Нейросеть получает этот предупреждение, понимает, что облажалась, и сама переписывает запрос с агрегатными функциями.

 

3. Как мы научили ИИ использовать отчеты 1С

Вытащить НДФЛ через запрос еще можно. А теперь представьте, что пользователь просит: "Выведи расчетный листок Иванова" или "Покажи штатное расписание". Писать запрос для таких вещей с нуля — это задача более серьезная, данные могут собираться из разных таблиц и иметь тонкие условия запросов.

В 1С уже есть сотни готовых отчетов на СКД. Мы написали инструмент execute_1c_report, который позволяет ИИ запускать типовые отчеты как функции!

Но СКД генерирует красивый табличный документ. LLM такое "кушать" не умеет. Ей нужен плоский JSON.

Я написал программный "бульдозер", который сносит всю визуальную структуру СКД и заставляет ее выплевывать сырые данные в ТаблицуЗначений:

// 1. Очищаем структуру (удаляем визуальные группировки разработчика)
Настройки.Структура.Очистить(); 

// 2. Добавляем ключевые поля, чтобы они не пропали
ПоляДляДобавления = Новый Массив;
ПоляДляДобавления.Добавить("Сотрудник");
// ... добавляем поля в Выбор ...

// 3. Создаем плоскую группировку "Детальные записи"
ГруппировкаДетальныеЗаписи = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаДетальныеЗаписи.Использование = Истина;
ГруппировкаДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

// 4. Указываем генератор для коллекции значений, а не для ТабДока!
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

// Процессор выводит результат прямо в плоскую Таблицу Значений
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

ИИ передает параметры (например, { "Сотрудник.Наименование": "Иванов" }), наш код находит их в КомпоновщикНастроек, подставляет и возвращает плоский массив данных. Агент счастлив, разработчик избавлен от написания мега-запросов.

Правда не все отчеты работают подобным образом, в дальнейшем планирую перетащить отчеты в расширение например с префиксом ИИ и более глубоко их адаптировать для работы с ИИ прописав инструкции для каждого, чтобы ИИ могла сама принимать решение о использовании отчета, знала какие параметры, отборы есть, какие данные возвращает и т.д.

 

4. Файловый RAG: Замена векторным базам данных

 

Мы принципиально не используем векторные базы (ChromaDB / FAISS) для работы с архитектурой 1С. Когда расчет ЗУП завязан на десятки общих модулей, кусковое извлечение текста (chunking) убивает логику алгоритма.

Вместо этого мы написали эмулятор работы программиста. У агента есть инструменты для работы с локальной папкой (WORKSPACE_DIR):

  • list_directory (аналог ls) — посмотреть, что лежит в папке.

  • search_in_files (аналог grep) — найти текст (например, формулу) по всем файлам исходного кода 1С (мы просто сделали выгрузку конфигурации в EDT).

  • read_file — прочитать кусок файла (с жестким лимитом на 300 строк).

 

Системный промпт: Как "воспитать" Gemma-4

Локальные модели требуют более жесткого структурирования, чем облачная крупная GPT. Системный промпт нашего агента больше похож на воинский устав. Вот несколько выдержек, которые спасли нас от хаоса:

  • «ТЕБЕ ЗАПРЕЩЕНО отвечать "я не смог получить данные", пока ты не выполнишь ВСЕ шаги поиска» (Лечит лень модели).

  • «ЗОЛОТОЕ ПРАВИЛО 1С:ЗУП: НИКОГДА не вычисляй итоговые суммы из таблиц Документов. Истинные суммы ВСЕГДА бери из РегистрРасчета».

  • «У документов НЕТ реквизита "Наименование". КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО писать Регистратор.Наименование. Используй функцию ПРЕДСТАВЛЕНИЕ(Регистратор)».

  • «БЕЗ LaTeX: ТЕБЕ КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО использовать синтаксис LaTeX для математических формул (никаких символов $$, \times). Используй стандартные знаки (, /).»* (1С-ное поле HTML документа ломалось от разметки LaTeX).


Это только начало пути (суровая реальность)

Сразу хочу оговориться: код и архитектура, показанные в этой статье — это не готовый продукт, который можно скачать, нажать «Далее-Далее-Готово» и уволить половину первой линии поддержки. Это концепт, MVP (Minimum Viable Product), инженерный дневник.

Я хотел показать главное: языковой модели можно безопасно доверить базу 1С:ЗУП, не нарушая NDA и законы о персональных данных. Локальная Gemma-4:31b, если дать ей правильные инструменты (метаданные, безопасные запросы, плоские СКД и файловый RAG), способна рассуждать как крепкий разработчик-стажер (а может и сеньор если дообучить).

Но мы честно признаем текущие ограничения:

  1. Зацикливания. Иногда локальная модель "упрямится". Получив ошибку, она может попытаться отправить тот же самый запрос еще раз. Именно поэтому в оркестраторе LangGraph мы используем жесткое ограничение количества шагов (max_iterations), а в промпте пишем капсом запреты на повторение ошибок.

  2. Ограничения контекста. Контекстное окно не бесконечно. Если агент прочитает три длинных общих модуля подряд и запросит таблицу на 500 строк, он просто "забудет" изначальный вопрос пользователя. Поэтому строгая обрезка строк (как в read_file, так и в запросах) — это вопрос выживания агента.

 

Куда мы движемся дальше?

Текущая реализация (чат в интерфейсе 1С с ожиданием ответа) — это лишь первый шаг. Сейчас это начало, тесты, но в моем бэклоге еще много планов по развитию этой архитектуры:

  • Асинхронность и фоновые задания. Ждать 40-60 секунд, пока агент анализирует логику вытеснений, глядя в зависший интерфейс 1С не хорошо. Мы планируем перевести общение в асинхронный формат. Например бухгалтер задает вопрос, 1С ставит фоновое задание, и когда агент находит ответ — пользователю приходит уведомление (Система Взаимодействия 1С например).

  • Проактивный аудит («Ночной дозор»). Зачем ждать вопроса от расчетчика? Агент может запускаться по регламентному заданию ночью: формировать типовые СКД-отчеты по проверке НДФЛ, искать минуса в регистрах, несостыковки в документах . К утру на столе у бухгалтера будет лежать сгенерированный отчет: "За ночь найдено 3 аномалии, вот причины, вот документы, в которых нужно поправить даты, суммы и т.д".

  • Дообучение модели. Сейчас мы тратим много токенов в системном промпте, объясняя модели особенности синтаксиса 1С (что нет COUNT, а есть КОЛИЧЕСТВО, что нужно использовать ПРЕДСТАВЛЕНИЕ() и т.д.). В планах — собрать датасет из успешных запросов к 1С и дообучить локальную модель (LoRA,DoRA), чтобы она писала запросы к 1С интуитивно. Благо БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0) и из нее можно брать легально качественные примеры. В перспективе можно на лету собирать данные для дообучения например с помощью ATLAS (Adaptive Teaching and Learning Alignment System).

  • Чтение кода через AST. Сейчас агент ищет код 1С полнотекстовым поиском по выгрузке EDT. Мы хотим дать ему инструмент, который будет парсить код 1С в абстрактное синтаксическое дерево (AST) и отдавать агенту только нужные процедуры со всеми их зависимостями, очищенные от "мусора".

Скрещивание локальных LLM и 1С — это непаханое поле. Инструментов мало, практики еще не сформированы.

Надеюсь, что данный архитектурный подход окажется полезным сообществу.

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.34.251

Вступайте в нашу телеграмм-группу Инфостарт

LLM 1С:ЗУП искусственный интеллект LangGraph Python

См. также

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    52888    106    29    

119

Нейросети Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Расширение "Искусственный интеллект и нейросети в 1С: Работа с отзывами маркетплейсов" предназначено для применения искусственного интеллекта в повседневной деятельности селлеров на маркетплейсах. Среди функций - работа с отзывами, вопросами и чатами покупателей, диалог с нейросетями, генерация картинок, заполнение описаний номенклатуры и другое.

6100 руб.

03.04.2024    15204    8    0    

12

Нейросети 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Платные (руб)

Умный Excel" - ИИ-супердвигатель, который превращает часы работы в минуты! Технологии будущего уже здесь: загрузил Excel "магия ИИ" готовый результат

8540 руб.

02.07.2025    3981    2    0    

6

Мастера заполнения Нейросети 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Расширение для заполнения описания товара (номенклатуры) с помощью модели ИИ ChatGPT с ключевыми словами. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ. Прошло аудит на 1cfresh.com. Версия для автоматического заполнения

5084 руб.

13.03.2023    22579    52    50    

80

Нейросети Программист Бесплатно (free)

В этой статье мы рассмотрим установку OpenClaw на одноплатный компьютер Orange Pi Zero 2W — недорогой и энергоэффективный вариант для создания домашнего сервера.

02.05.2026    4695    Ibrogim    9    

9

Нейросети Программист Бесплатно (free)

Мир ИИ меняется все быстрее, появляется куча новых моделей. И если раньше китайцы дистиллировали амеров, то сейчас вектор меняется и амеры начинают дистиллировать китайцев. Клауд 4.7 со своими 1,6Т параметров догоняет дипсик 4 с его 1,6Т, а Kimi 2.6 с 1Т решает задачи программирования лучше большинства программистов. Мы вступили в эпоху триллионных сетей, и это сильно влияет на прям вот вообще все.

30.04.2026    1193    starik-2005    55    

26

Инструкции пользователю Нейросети Работа с интерфейсом Бесплатно (free)

За последний год наиболее приоритетным направлением развития сервиса MAKER-STUDIO стала разработка наиболее востребованного ИИ-функционала: от распознавания до генерации. В данной статье рассказываем обо всех готовых на сегодняшний день ключевых инструментах, и как ими правильно пользоваться в повседневной работе: оптимальные промпты

30.04.2026    425    1Concept    0    

4

Нейросети Программист Бесплатно (free)

Рассказываю, как собрал себе персональный сайт-портфолио за один вечер через ИИ. Без React, без сборки, чистый HTML/CSS/JS, деплой за 15 минут и домен за 200 рублей в год. В статье — рабочие промпты и честное сравнение с «классическим» путём по времени и деньгам.

24.04.2026    1918    Ibrogim    68    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3266 05.05.26 10:40 Сейчас в теме
пока сервера под локальные модели уровня Gemma-4:31b находятся в стадии закупки
И на сколько большие сервера закупаются? Qwen 3.6 35B в большинстве задач и по бенчмаркам сильно лучше, даже с учетом того, что гемма 31b - плотная, а квин - MoE. Вчера попробовал GLM 4.7 Flash - она занимает не больше этих двух, т.е. влезает в 32 гига VRAM.
Ждать 40-60 секунд, пока агент анализирует логику вытеснений, глядя в зависший интерфейс 1С не хорошо. Мы планируем перевести общение в асинхронный формат.
Это иной раз говорит о том, что стоит использовать MoE, но более тщательно писать промпты. Там ответ на видеокарте с 32 GB VRAM будет на уровне 5-10 сек, если промпт написан так, чтобы получить ответ, а не чтобы заставить модель думать и циклиться.
Shur1cIT; +1 Ответить
2. Shur1cIT 4 05.05.26 10:56 Сейчас в теме
(1)
бенчмаркам

Тут есть важный нюанс: проблема в специфике знаний самих моделей. 1С это крайне узкая ниша в мировом масштабе IT. Большинство моделей её почти не знают (или знают очень поверхностно), синтаксис 1С для них часто выглядит как шум. Поэтому глобальные бенчмарки здесь не работают вообще — их нужно проводить исключительно в контексте задач 1С (как модель держит промпт, не путает ли метаданные и т.д.). Gemma 4 на наших тестах показала себя лучше всего в плане рассуждений.
По железу: финального решения еще нет, но целимся в ИИ сервер на базе двух карточек уровня RTX 6000 Blackwell по 96 гб. Суммарный объем VRAM дадут нам отличный запас по контекстному окну и позволят при необходимости запустить даже более тяжелые модели.
3. starik-2005 3266 05.05.26 10:57 Сейчас в теме
(2)
синтаксис 1С для них часто выглядит как шум
Китайские модели знают синтаксис 1С достаточно хорошо. Даже про БСП в курсе.
ИИ сервер на базе двух карточек уровня RTX 6000 Blackwell по 96 гб
У вас там вагон денег? Завидую )))
С другой стороны, если вы хотите дообучать, то надо больше памяти, так что смысл есть. Я на своем железе могу только 9b обучать, да и то с трудом )))
5. Shur1cIT 4 05.05.26 11:08 Сейчас в теме
(3)
Китайские модели знают синтаксис 1С достаточно хорошо. Даже про БСП в курсе.
Да, они в курсе синтаксиса. Но когда дело касается генерации запросов и написания кода, ситуация меняется. По нашим тестам, даже Qwen 3.5 122B на этой задаче сильно спотыкается и показывает результаты хуже, чем Gemma-4. Стабильно вытягивает только Qwen 3.5-397B, но она слишком огромная. Локальный запуск такой модели для наc не разумен.
7. starik-2005 3266 05.05.26 11:22 Сейчас в теме
(5)
Qwen 3.5
А 3.6 пробовали?
8. Shur1cIT 4 05.05.26 11:23 Сейчас в теме
(7) нет 3.6 не удалось еще протестировать. В любом случае планирую плотные использовать так как их до обучать проще.
4. ixijixi 2148 05.05.26 11:04 Сейчас в теме
(1)
большие сервера
Вот да, тоже бюджет интересен
Shur1cIT; +1 Ответить
6. Shur1cIT 4 05.05.26 11:11 Сейчас в теме
(4) (4) примерно 850к за карту. Для одного двух человек достаточно и одной карты чтобы комфортно одновременно работать. Сам сервер почти любой, основная нагрузка на карты.
9. gybson 6 05.05.26 11:43 Сейчас в теме
Недавно на конференции у Карпова отмечали, что дообучение дает слишком маленький бонус по сравнению с правильным промптом.
10. Shur1cIT 4 05.05.26 11:52 Сейчас в теме
(9)
Недавно на конференции у Карпова отмечали, что дообучение дает слишком маленький бонус по сравнению с правильным промптом.

Абсолютно согласен. В 90% случаев пытаться вшить фактические знания в веса модели — это тупик, RAG и промпты работают лучше.
Но в нашем случае дообучение (LoRA, DoRA) запланировано совсем для другой цели — для обучения синтаксису. Сейчас 1С запросы даются локальным моделям тяжело. У нас огромный кусок системного промпта забит инструкциями-костылями: "Пиши ВЫБРАТЬ, а не SELECT", "Не используй COUNT, используй КОЛИЧЕСТВО", "Не оборачивай формулы в LaTeX".
Все эти инструкции безжалостно съедают драгоценные токены контекстного окна. Наша цель — "вшить" этот диалект в модель на уровне рефлексов через fine-tuning на датасете успешных 1С-запросов. Это позволит радикально сократить системный промпт, освободить память агента для анализа и увеличить скорость работы модели
11. gybson 6 05.05.26 11:56 Сейчас в теме
(10) так вы отдельного агента сделайте для запросов
может даже через построитель
13. Shur1cIT 4 05.05.26 12:05 Сейчас в теме
(11)
так вы отдельного агента сделайте для запросов
может даже через построитель

Выделение генерации запросов в субагент решает проблему раздувания промпта у главного агента. Но самому субагенту всё равно придется скармливать те же жесткие правила синтаксиса и тратить его контекст и время.
Что касается построителя (когда ИИ отдает не сырой текст запроса, а структурированный JSON с полями и отборами, а 1С сама собирает запрос): это решает проблему синтаксических ошибок. Но это убивает гибкость. В ЗУП для расследования сложных расчетов часто нужны временные таблицы, вложенные подзапросы и хитрые соединения. Передать всю эту свободу через JSON-структуру построителя почти невозможно, поэтому мы осознанно пошли по пути генерации "сырого" 1С-запроса.
12. gybson 6 05.05.26 12:04 Сейчас в теме
(10) Кстати, совершенно нормально отрабатывает запрос

select
count(Организации.Ссылка) КАК Ссылка
ИЗ
Справочник.Организации КАК Организации
ГДЕ
Организации.ПометкаУдаления = ИСТИНА
14. Shur1cIT 4 05.05.26 12:08 Сейчас в теме
(12) Согласен, платформа 1С отлично переваривает английский синтаксис (SELECT, COUNT и т.д.). В тексте статьи это скорее собирательный пример тех жестких ограничений, которые нам пришлось вводить в промпт (реальные ошибки синтаксиса, на которых спотыкался агент, я подробно разобрал в шаге 5).
Почему я все-таки заставляю ИИ писать строго на русском (ВЫБРАТЬ / КОЛИЧЕСТВО)?
Дело в планах на будущее. В перспективе мы хотим использовать эту модель не только "под капотом" невидимого агента, но и как ИИ-ассистента для генерации готового кода (чтобы разработчик мог скопировать сгенерированный запрос и вставить прямо в конфигуратор).
16. starik-2005 3266 05.05.26 12:16 Сейчас в теме
(14)
В тексте статьи это скорее собирательный пример тех жестких ограничений, которые нам пришлось вводить в промпт
А вы с температурой игрались? С --min-p, --top-p? С --repeat-penalty? Что используете для инференса? Все настройки по умолчанию?
18. Shur1cIT 4 05.05.26 12:29 Сейчас в теме
(16)
А вы с температурой игрались? С --min-p, --top-p? С --repeat-penalty? Что используете для инференса? Все настройки по умолчанию?

temperature=0.0, остальные параметры по умолчанию.
При нулевой температуре top-p уже неактуален.
15. starik-2005 3266 05.05.26 12:12 Сейчас в теме
(9)
дает слишком маленький бонус по сравнению с правильным промптом
Если промпт со всеми дополнительными установками влезает в 10к токенов, то такой промпт лучше файн-тюнигнга, ибо дает конкретную инструкцию. Но если инструкция - это 1М токенов, то тут без файн-тюнинга принципиально никак. Т.е. нужно понимать, что в каких случаях работает. И собрать датасет под файн-тюнигн - это тот еще аттракцион, ибо правильное обучение - это условные 10к пар "вопрос-ответ", которые делятся на 5 или 10 частей. После чего на 4 или 9 частях идет обучение, а не 1 части - тестирование, ну и ротация. Качество данных, собранных 1С-негами, будет скорее всего такое себе. Тем более ума не приложу, где они найдут свои хотя бы 10к вопросов с верными ответами. Ну и нужно понимать, до какого уровня ошибки сеть учится, а после которого просто зубрит.

Так что если у автора есть хороший (очень хороший) датасет на 10к вопрос/ответ, то все эти LoRA и около - это правильно. А если нет, то RAG и хороший промпт, а не то, что у него тут в статье.
17. Shur1cIT 4 05.05.26 12:22 Сейчас в теме
(15)
Если промпт со всеми дополнительными установками влезает в 10к токенов, то такой промпт лучше файн-тюнигнга, ибо дает конкретную инструкцию. Но если инструкция - это 1М токенов, то тут без файн-тюнинга принципиально никак. Т.е. нужно понимать, что в каких случаях работает. И собрать датасет под файн-тюнигн - это тот еще аттракцион, ибо правильное обучение - это условные 10к пар "вопрос-ответ", которые делятся на 5 или 10 частей. После чего на 4 или 9 частях идет обучение, а не 1 части - тестирование, ну и ротация. Качество данных, собранных 1С-негами, будет скорее всего такое себе. Тем более ума не приложу, где они найдут свои хотя бы 10к вопросов с верными ответами. Ну и нужно понимать, до какого уровня ошибки сеть учится, а после которого просто зубрит.


Добавлю. Вы абсолютно правы насчет классического обучения: если пытаться "с нуля" научить модель платформе 1С, то 10к размеченных пар это минимум.
Но у нас ситуация другая.
Во-первых, про размер промпта. Проблема не в том, что инструкции не влезают. Проблема в архитектуре ReAct. Агент делает 5-7 шагов для решения одной задачи. Если системный промпт весит даже 5к токенов, гонять его на каждый вызов инструмента (каждую итерацию) — это колоссальный оверхед по времени генерации и расходу памяти для локальной модели. Дообучение нужно именно для того, чтобы "сбросить" этот балласт из промпта в веса и ускорить работу.
Во-вторых, про 10к пар и качество данных. Модели не нужно учиться программировать с нуля, базовая логика у нее уже есть. Нам нужно лишь "выпрямить" синтаксис. Для этого через LoRA/DoRA требуется кратно меньше данных.
И самое главное — никто не будет писать датасеты руками. Для сбора данных мы будем использовать пайплайн, похожий на фреймворк ATLAS (Adaptive Teaching and Learning Alignment System). Агент сам работает в базе, совершает синтаксические ошибки, получает логи от HTTP-сервиса 1С и исправляется. Мы просто берем финальную, успешную траекторию ("Вопрос пользователя -> Правильный SQL запрос") и сохраняем. К концу месяца из этих накопленных автоматически выверенных логов формируется чистейший датасет, на котором и будет тюниться модель.
19. starik-2005 3266 05.05.26 12:46 Сейчас в теме
(17)
К концу месяца из этих накопленных автоматически выверенных логов формируется чистейший датасет, на котором и будет тюниться модель.
Ну удачи ))) Главное тут - это понять, когда стоит уже остановиться и "собрать сигналы" )))

Но вообще радует, что 1С-неги начинают разбираться во всей этой непростой на первый взгляд теме, набираются опыта, формируют понятийный набор и начинают разбираться в его иерархии. Гладишь так и 1С перепишем на реакт и около того
Для отправки сообщения требуется регистрация/авторизация