Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ИИкона — AI-коннектор для 1С:Предприятие

Расширение для интеграции языковых моделей (LLM) в конфигурации 1С:Предприятие 8.3: единый коннектор к провайдерам, агентская петля с инструментами, RAG, MCP-сервер, мониторинг ошибок с ИИ-анализом и генератор диаграмм.

Лицензия: MIT 1С:Предприятие Версия Тесты

🎯 О проекте

ИИкона (КИИ — Коннектор Искусственного Интеллекта) — расширение для работы с языковыми моделями прямо из 1С. Начиналась как API-коннектор с единым интерфейсом для всех популярных провайдеров; с версии 1.3.0 это платформа ИИ-подсистем: поверх коннектора работают агентская петля с инструментами, семантический поиск по базе знаний (RAG), MCP-сервер для внешних ИИ-агентов, мониторинг ошибок с ИИ-диагнозом и генератор диаграмм.

Ставится как расширение конфигурации, основную конфигурацию не изменяет.

Готовые сценарии из коробки:

  • 🚨 Мониторинг ошибок базы: сбор из журнала регистрации, ИИ-диагноз, Telegram
  • 🔍 Аудит кода по ошибке: место в исходниках + объяснение причины
  • 🛠 База 1С как набор инструментов для Claude/Cursor (MCP)
  • 📊 Диаграммы по текстовому описанию (mermaid/plantuml/graphviz/bpmn)

И API для своих решений:

  • 🤖 Чат-боты для поддержки клиентов
  • 📝 Генерация контента (описания товаров, документы)
  • 🔍 Классификация и извлечение структурированных данных из текста
  • 📚 Ответы по своей базе знаний (RAG)
  • 🎯 Агенты, которые сами ходят по данным 1С инструментами

✨ Возможности

Коннектор (ядро)

  • Пять форматов провайдеров отдельными коннекторами: OpenAI-совместимые API, Anthropic, Google Gemini, YandexGPT, GigaChat — плюс 25+ готовых моделей в макете предустановок.
  • Синхронные и асинхронные запросы (фоновые задания), история сообщений, системные промпты.
  • Мультимодальность: изображения и документы во вложениях запроса у OpenAI-совместимых API, Anthropic, Google Gemini и GigaChat (YandexGPT вложений не принимает), генерация изображений в ответе.
  • Кеш ответов с TTL (per-model, opt-in), полное логирование запросов (токены, время, ошибки), поддержка прокси, OAuth2 (GigaChat), IAM (Yandex).
  • Повторы с экспоненциальным backoff — только транзиентные коды (429/5xx), без задвоения POST.

Контроль персональных данных (с 1.5.0)

Перед отправкой наружу текст проверяется на персональные данные: ФИО с отчеством («Иванов Иван Иванович»; «Иван Иванович Иванов» — при фамилии с типичным окончанием -ов, -ин, -ский, -енко и подобных) или с инициалами («Иванов И.И.», «ИВАНОВ И.И.», «И.И. Иванов»), ИНН, СНИЛС, номер карты, паспорт (по слову «паспорт» рядом), телефон, электронная почта. Номер карты принимается только с верной контрольной суммой, ИНН и СНИЛС — с верной суммой или рядом со словом «ИНН»/«СНИЛС». Найденное заменяется подстановками, одно значение в пределах запроса получает одну подстановку. Стиль замены выбирается (с 1.6.0): правдоподобные значения из заведомо несуществующих диапазонов (телефон с кодом 000, почта на example.com, ИНН с регионом 00, карта с BIN 0000), метки вида [ФИО-1], которые модель не склоняет, или смешные выдуманные имена — «Вельзевулов Саурон Сарумяныч», ООО «Рога и копыта» — которые никто не примет за клиента.

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

Канал Что проверяется По умолчанию
Запросы к моделям системный и пользовательский промпт, история, имена файлов вложений, сообщения и аргументы вызовов агентской петли, результаты инструментов, промпт генерации изображений, текст для эмбеддинга (вопрос пользователя при поиске по базе знаний и фрагменты при индексации) Заменять подстановками
Уведомления Telegram текст сообщения, подпись, имя файла Заменять подстановками
Рендер диаграмм (kroki) код диаграммы; в SVG подписи возвращаются исходные Только записывать в журнал

Режимы канала: «Выключен», «Только записывать в журнал» (отправить как есть и записать событие), «Заменять подстановками», «Не отправлять». Модель может переопределить режим канала, а доверенный маршрут (свой сервер модели) отключает проверку, пока не изменились адрес, прокси или имя модели. Перед отправкой тело HTTP-запроса контрольно сверяется: исходное значение, прошедшее в обход подготовки, останавливает запрос. Сбой проверки в защищённом режиме запрос тоже останавливает. Журнал контроля хранит тип находок, счётчики и решение, но не значения.

Настройки — обработка «Контроль персональных данных» (там же проверка любого текста: что найдено и как он уйдёт) и вкладка «Персональные данные» в карточке модели.

⚠ Чего контроль не делает. Не проверяет содержимое вложений (картинки, PDF) — в режиме «Не отправлять» запрос с вложением не уходит, в «Заменять подстановками» уходит как есть; не касается MCP-сервера (внешний агент получает данные по своим правам — см. SECURITY.md); без сервиса распознавания имен не находит одиночные фамилии, наименования организаций, адреса и даты рождения. Слово с заглавной перед именем и отчеством («Звонил Иван Иванович») может попасть в замену вместе с ними. Поиск по базе знаний через внешний эмбеддер не найдёт фрагмент по конкретному ФИО или номеру: у вопроса и у фрагмента разные подстановки (для такого поиска — локальный эмбеддер с доверенным маршрутом). Правдоподобные ФИО берутся из списков распространённых имён: если позже в той же операции встретится реальный человек с точно таким же ФИО, его имя уйдёт без замены (метки и смешные имена этого риска не несут). Если модель просклоняла подставную фамилию, это место человек увидит с подстановкой — форма «Тест ИИ» об этом предупреждает. Это техническая замена значений, а не юридическое обезличивание.

Агентская петля (function calling)

Модель вызывает инструменты 1С и продолжает рассуждение по результатам — во всех пяти форматах провайдеров. Лимиты раундов и вызовов, дедупликация повторных вызовов, принуждение к финальному выводу, аудит каждого вызова.

Форматные адаптеры всех провайдеров покрыты тестами; живой прогон выполнялся на OpenAI-совместимых моделях. Флаги «Поддерживает инструменты» у остальных провайдеров в предустановках включайте после смоука со своими ключами.

RAG — база знаний

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

MCP-сервер

HTTP-сервис (JSON-RPC 2.0): внешние ИИ-агенты работают с базой как с набором инструментов — метаданные, структура объектов, read-only запросы, диаграммы. Basic Auth, ограничение частоты, whitelist запросов, сокрытие секретов, аудит с автоочисткой. ⚠ Наружу публикуйте только через HTTPS (reverse-proxy с TLS).

Мониторинг ошибок

Регламентный сбор из журнала регистрации, нормализация и дедупликация, пакетный ИИ-анализ и глубокий агентный разбор, уведомления в Telegram с антиспамом, правила игнорирования, статистика. Плюс аудитор кода: по ошибке находит место в исходниках и объясняет причину. Аудитор работает поверх стороннего анализатора rlm-tools-bsl (MIT): структурный индекс кода отдаёт метод и граф вызовов по строке ошибки; REST-шим — отдельный репозиторий iikona-audit-shim, установка описана в руководстве.

Дашборд ошибок — страница на ECharts (библиотека лежит макетом, интернет не нужен): вхождения по дням и критичности, тепловая карта, топ-10 «что болит», карта «где болит» по объектам метаданных, воронка разбора, расходы на ИИ, последние разборы; периоды 7/30/90 дней, светлая и тёмная темы. Открывается обработкой «Дашборд ошибок» в 1С и по ссылке через HTTP-сервис расширения: https://<сервер>/<база>/hs/iikona-dashboard/page (?days=7|30|90&theme=light|dark, автообновление раз в 5 минут). Для веб-доступа заведите отдельного пользователя с ролью «Просмотр дашборда ошибок»: права на регистры мониторинга ему не нужны, данные отдаёт сервер. Страница показывает тексты ошибок и рекомендации ИИ из журнала регистрации — давайте роль тем, кому можно видеть журнал. ⚠ Наружу публикуйте только через HTTPS.

Генератор диаграмм

Описание словами → диаграмма (mermaid / plantuml / graphviz / bpmn). Mermaid рендерится локально встроенной библиотекой mermaid.js — без внешних сервисов; остальные форматы и серверный рендер (PNG/SVG, MCP-инструмент) — через kroki. Модель с инструментами сама читает метаданные конфигурации и рисует реальные реквизиты.

🌐 Поддерживаемые провайдеры

Провайдер Формат API Function calling Статус
OpenAI (GPT-5.x/6) OpenAI Compatible ✅ ✅
Anthropic (Claude) Anthropic Messages ✅ формат готов ✅
Google (Gemini) Google AI ✅ формат готов ✅
DeepSeek OpenAI Compatible ✅ ✅
GigaChat (Сбер) OAuth2 + legacy functions ✅ формат готов ✅
Yandex (YandexGPT) Yandex Cloud ✅ формат готов ✅
Mistral / Qwen / Groq / Grok / Cohere OpenAI Compatible ✅ ✅
Ollama / LM Studio / LiteLLM (локальные) OpenAI Compatible зависит от модели ✅
OpenRouter / Together / Fireworks и др. OpenAI Compatible ✅ ✅

📦 Установка

Требования

  • 1С:Предприятие 8.3.24+ — версии 1.3.x–1.6.1 разрабатывались и тестировались на 8.3.27
  • БСП (Библиотека стандартных подсистем) 3.1.10+ — тестировалось на демо-базе БСП 3.1.11.392
  • Режим совместимости интерфейса: «Такси. Разрешить Версия 8.2» (стандарт типовых конфигураций и БСП) — платформа контролирует его при установке любого расширения
  • Доступ в интернет для облачных провайдеров (локальные модели работают офлайн)
  • Опционально: Qdrant для быстрого векторного поиска, kroki для рендера диаграмм, rlm-tools-bsl для аудитора кода

Версии 1.0.x проверялись также на 1С:ERP 2.5.17. Версии 1.3.x–1.6.0 на ERP не перепроверялись — отчёты о работе на других конфигурациях приветствуются в Issues.

Шаги установки

  1. Скачайте .cfe из Releases
  2. Подключите расширение (Администрирование → Расширения конфигурации)
  3. Обновите базу данных
  4. Откройте справочник «Модели ИИ» и нажмите «Заполнить модели» — загрузятся 30 предустановок (свои модели с другими наименованиями не перезаписываются)
  5. Укажите API-ключи нужных моделей (хранятся в безопасном хранилище БСП, а не в реквизите модели; полная выгрузка базы .dt содержит и его — храните ее как секрет); кнопка проверки соединения — на форме модели
  6. Создайте «Эксперта ИИ»: модель + системный промпт
  7. Новые подсистемы включаются заполнением их настроек: модель анализа и Telegram в «Настройках мониторинга ошибок», адрес Qdrant для RAG, адрес kroki для диаграмм, пользователь API для MCP — что не настроено, то просто не работает, не мешая остальному

Обновление до 1.6.1

Данные и настройки сохраняются. После обновления откройте и запишите любую модель ИИ (или нажмите «Обновить предустановленные модели»): так создадутся регламентные задания очистки кеша ответов, аудита MCP и журнала контроля персональных данных — до 1.6.1 их не создавал никто. Настройки мониторинга теперь правятся формой «Настройки мониторинга ошибок» в разделе «Коннектор ИИ»; прежние значения констант она подхватывает. Администратору ИИконы достаточно роли «КИИ полные права», полные права в базе не нужны.

Обновление до 1.6.0

Данные и настройки сохраняются. Стиль подстановок по умолчанию — правдоподобные значения, как в 1.5; сервис распознавания имен выключен, пока в обработке «Контроль персональных данных» не указан его адрес. Новые предустановки моделей появятся после «Обновить предустановленные модели» в списке моделей (кнопка спросит подтверждение); устаревшие (GPT-4, Gemini 2.5, Perplexity) не удаляются — ненужные пометьте на удаление.

Обновление до 1.5.0

После обновления контроль персональных данных сразу работает в режиме «Заменять подстановками» для запросов к моделям и уведомлений Telegram: модель видит подстановки вместо ФИО, ИНН, телефонов. Если ваш код разбирает ответ модели программно и ждёт исходные значения, передайте в ЗапросКМодели третьим параметром контекст (КИИ_КонтрольПерсональныхДанных.НовыйКонтекст()) и восстановите ответ через КИИ_КонтрольПерсональныхДанных.ВосстановитьДляЧеловека — либо выберите для канала или модели другой режим в обработке «Контроль персональных данных». Кеш ответов для запросов с заменами не используется.

Обновление с 1.0.x

Штатное: данные моделей и экспертов сохраняются, публичный API совместим (ЗапросКМодели, ЗапросКМоделиВФоне, ПараметрыМодели — прежние сигнатуры). Единственное поведенческое изменение: роль «КИИ Полные права» больше не раздаёт права на объекты основной конфигурации — только на объекты расширения (закрыта избыточная выдача).

🚀 Быстрый старт

Простейший запрос (3 строки кода)

Модель = Справочники.КИИ_МоделиИИ.НайтиПоНаименованию("GPT-6 Sol", Истина);
Ответ = КИИ_КоннекторИИ.ЗапросКМодели(Модель, "Привет! Как дела?");

Если Не Ответ.ЭтоОшибка Тогда
    ОбщегоНазначения.СообщитьПользователю(Ответ.ТекстОтвета);
КонецЕсли;

С системным промптом и историей

Промпт = Новый Структура;
Промпт.Вставить("СистемныйПромпт", "Ты — помощник программиста 1С");
Промпт.Вставить("ПользовательскийПромпт", "Как создать новый документ?");
Промпт.Вставить("ИсторияСообщений", История); // необязательно

Ответ = КИИ_КоннекторИИ.ЗапросКМодели(Модель, Промпт);

Асинхронный запрос (фоновое задание)

ДлительнаяОперация = КИИ_КоннекторИИ.ЗапросКМоделиВФоне(Модель, Промпт);
ДлительныеОперации.ОжидатьЗавершение(ДлительнаяОперация);
Ответ = ПолучитьИзВременногоХранилища(ДлительнаяОперация.АдресРезультата);

Markdown → HTML

HTML = КИИ_МаркдаунПарсерКлиентСервер.ПреобразоватьВHTML(Ответ.ТекстОтвета);

Тестирование без кода

Обработка «Тест ИИ»: чат с экспертом, вложения (изображения/документы), история диалога, просмотр логов — всё интерактивно.

📚 Документация и разработка

  • Руководство пользователя (вики) — iikona-guide: настройка моделей и провайдеров, RAG и база знаний, мониторинг ошибок и аудитор кода, MCP-сервер и безопасность, генератор диаграмм.
  • Исходники расширения — iikona (Gitea, ветка main; релизы с готовым .cfe — на странице релизов репозитория).
  • Автотесты (563 YAxUnit-теста) — iikona-tests; для прогона нужны YAxUnit в базе и тестовое расширение.
  • MCP-прокси для stdio-клиентов — iikona-mcp-proxy (Claude Desktop и другие клиенты без HTTP-транспорта).
  • Аудит-шим — iikona-audit-shim: REST-мост аудитора кода к анализатору rlm-tools-bsl.

🔑 Получение API ключей

Инструкции по провайдерам

OpenAI

  1. platform.openai.com → API keys → создайте ключ
  2. Пополните баланс

Anthropic (Claude)

  1. console.anthropic.com → API Keys

Google (Gemini)

  1. Google AI Studio → Get API key

DeepSeek

  1. platform.deepseek.com → API Keys

GigaChat (Сбер)

  1. developers.sber.ru/gigachat
  2. Получите Authorization key (или ClientId:ClientSecret) — модуль сам обменяет на OAuth2-токен

Yandex GPT

  1. Yandex Cloud → сервисный аккаунт → API-ключ
  2. В модели укажите Folder ID

🔍 Качество кода

  • ✅ 563 модульных теста (YAxUnit): коннекторы, вложения, агентская петля, RAG, мониторинг, MCP, парсеры, контроль персональных данных, предустановленные модели
  • ✅ Красная проба контроля персональных данных: 56 мутантов кода (снятая проверка, ослабленное правило, потерянный контекст) — каждый ловится своим тестом
  • ✅ SonarQube (BSL Language Server): Quality Gate пройден, рейтинги A; одно информационное замечание осознанное — предупреждение, а не ошибка, в журнале регистрации при недоступном необязательном сервисе распознавания имен
  • ✅ Независимый аудит кода и повторный аудит исправлений перед выпуском
  • ✅ Проход сертификационных EDT-проверок (доккомментарии, области, роли)
  • ✅ Протестировано на демо-базе БСП 3.1.11.392 / платформе 8.3.27

🗺️ Roadmap

Выполнено (v1.3.0)

  • Vision API — изображения и документы во вложениях + генерация изображений
  • Улучшенная обработка rate limits — backoff, повтор только транзиентных кодов
  • Function calling — агентская петля во всех пяти форматах провайдеров
  • Embeddings API — и весь RAG поверх
  • Сверх плана: MCP-сервер, мониторинг ошибок с ИИ-анализом, аудитор кода, генератор диаграмм, 398 автотестов

Выполнено (v1.4.0)

  • Вложения (изображения и документы) у Anthropic, Gemini и GigaChat, а не только у OpenAI-совместимых моделей
  • Дашборд ошибок v2 на ECharts: в форме 1С и по ссылке через HTTP-сервис

Выполнено (v1.5.0)

  • Контроль персональных данных в запросах к моделям, эмбеддингах, уведомлениях Telegram и рендере диаграмм: маскировка подстановками, режимы по каналу и модели, доверенный маршрут, журнал без значений, восстановление ответа для человека

Выполнено (v1.6.0)

  • Стили подстановок: правдоподобные значения, метки [ФИО-1], смешные выдуманные имена
  • Сервис распознавания имен на Natasha: одиночные фамилии, организации, адреса, даты рождения
  • Предустановленные модели обновлены до актуальных на сентябрь 2026

Выполнено (v1.6.1)

  • Настройки мониторинга ошибок формой вместо правки констант
  • Администрирование ИИконы ролью «КИИ полные права» без полных прав базы
  • Регламенты очистки кеша, аудита MCP и журнала контроля ПД создаются сами
  • Генератор диаграмм из формы — через агентскую петлю; категории знаний в карточке эксперта; форма списка журнала запросов ИИ
  • Руководство пользователя: начало работы, эксперты, агентская петля, вложения, журнал запросов и кеш, мониторинг ошибок, для разработчика, частые вопросы

Планы

  • Streaming — в BSL возможен только эмуляцией (платформа отдаёт HTTP-ответ целиком); исследуется эмуляция через фоновое задание с опросом
  • Формат Responses API (Perplexity Agent API, OpenAI Responses)
  • Live-смоук function calling и вложений на Anthropic/Google/Yandex/GigaChat и включение флагов в предустановках
  • CI: сборка .cfe, прогон тестов и Sonar на каждый коммит
  • Расширение покрытия тестами (инструментальное измерение покрытия)

❓ FAQ

Частые вопросы

Какая платформа 1С поддерживается?

8.3.24+; версии 1.3.x–1.6.1 разрабатывались и тестировались на 8.3.27.

Требуется ли БСП?

Да, БСП 3.1.10+ (тестировалось на 3.1.11.392).

Поддерживается ли отправка изображений и документов?

Да. Вложения собираются одним контрактом (КИИ_КоннекторИИ.ПостроитьКонтентИзображениеДанные, ПостроитьКонтентДокументДанные), а каждый коннектор переводит их в формат своего API. В «Тест ИИ» — вкладка вложений; поддерживается и генерация изображений в ответе.

Провайдер Изображения Документы Как проверено
OpenAI-совместимые ссылка, data-URI, данные как принимает API живые запросы и автотесты
Anthropic JPEG, PNG, GIF, WebP: ссылка или данные PDF автотесты сборки запроса
Google Gemini PNG, JPEG, WebP, HEIC, HEIF: данные; ссылка .png, .jpg, .webp, .bmp или с полем MIME PDF, TXT, Markdown, HTML, XML автотесты сборки запроса
GigaChat JPEG, PNG, TIFF, BMP: одно на сообщение TXT, DOC, DOCX, PDF, EPUB, PPT, PPTX, XLSX автотесты сборки запроса, без сети
YandexGPT нет нет API вложений не принимает

Anthropic, Gemini и GigaChat собраны по официальной документации (с 1.4.0), но живыми ключами ещё не проверены. Есть ключ — отправьте картинку или PDF через «Тест ИИ» и напишите в issues, что получилось. Формат, который провайдер не примет, останавливает запрос понятной ошибкой, а не теряется молча.

В агентской петле с инструментами сообщения передаются в OpenAI-формате как есть, поэтому вложения внутри петли работают только у OpenAI-совместимых моделей.

Можно ли использовать без интернета?

Да — локальные модели через Ollama/LM Studio, встроенный RAG-поиск и локальный рендер mermaid-диаграмм тоже работают без внешних сервисов.

Уходят ли персональные данные клиентов в облачную модель?

С 1.5.0 по умолчанию нет: ФИО, ИНН, СНИЛС, карты, паспорта, телефоны и почта заменяются подстановками до отправки, а ответ показывается человеку с исходными значениями. С сервисом распознавания имен (1.6.0) — ещё одиночные фамилии, организации, адреса и даты рождения. Что именно проверяется и где граница — в разделе «Контроль персональных данных». Проверить конкретный текст можно в обработке «Контроль персональных данных»: в модель ничего не уходит.

Где хранятся API ключи?

В защищённом хранилище 1С; в выгрузки конфигурации не попадают.

Как контролировать затраты?

Все запросы логируются в регистр с токенами и временем; кеш ответов сокращает повторные обращения.

Можно ли добавить своего провайдера?

Любой OpenAI-совместимый API работает из коробки: создайте модель, укажите адрес, формат OpenAI_Compatible, имя модели и ключ.

Можно ли использовать в коммерческих проектах?

Да, лицензия MIT.

🤝 Участие в проекте

  • 🐛 Нашли баг? — Issue
  • 💡 Есть идея? — Discussions
  • 🔧 Хотите помочь? — Pull Request

🙏 Благодарности

  • YAxUnit — движок модульного тестирования 1С
  • rlm-tools-bsl — семантический анализ BSL, на нём работает аудитор кода
  • kroki и mermaid — рендер диаграмм
  • Qdrant — векторный поиск
  • OpenAI, Anthropic, Google, Yandex, Сбер — за API
  • Сообществу 1С — за поддержку и идеи

📄 Лицензия

MIT © 2026 Андриянов Роман (androman.pro)

📞 Контакты


Сделано с ❤️ для сообщества 1С

⭐ Поставьте звезду • 💬 Обсуждения • 🐛 Сообщить об ошибке

About

ИИкона — AI-коннектор для 1С:Предприятие 8.3: LLM-провайдеры, агентская петля (function calling), RAG, MCP-сервер, мониторинг ошибок с ИИ-анализом, генератор диаграмм

Topics

Resources

Security policy

Stars

97 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages