Работа с локальным ИИ (LLM, БЯМ) через KoboldCPP из 1С

16.12.24

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

Обработка для использования моделей искусственного интеллекта (LLM) в целях написания кода 1С и других без использования внешних сервисов. Для работы с ИИ необходим только компьютер пользователя.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Запросы к LLM через KoboldCPP
.epf 6,46Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.

Использованные сокращения:

ИИ – искусственный интеллект.

БЯМ, она же LLM – большая языковая модель

LLM, она же БЯМ – large language model

ПО – программное обеспечение

ОЗУ – оперативная память компьютера.

SSD – solid state drive, твердотельный накопитель, более быстрая альтернатива жестким дискам

 

Мотивы

На создание данной обработки меня подтолкнуло прохождение интенсива по 1С от Университета Зерокодер. Идея использовать БЯМ (ИИ в обычной терминологии) для генерации программного кода с минимальным участием программиста невероятно притягательна. Возможно, когда-нибудь это станет признаком следующего поколения языков программирования. Но если для широко распространенных языков программирования технология уже работает довольно неплохо, то с 1С ситуация пока не так хороша. Причина в обучении моделей - материалов для обучения 1С объективно доступно меньше. Язык 1С не так широко распространен в мире, программисты 1С в основном используют русский язык. В итоге, на аналогичном курсе университета с использованием языка Python использовался реально сгенерированный ИИ программный код. На курсе по 1С создатели замахнулись только на создание ИИ описаний ресторанных блюд.

В обоих курсах в качестве ИИ использовался ChatGPT от компании OpenAI, чьи модели обладают несомненными преимуществами. На данный момент лидерство ChatGPT в генерации программного кода вряд ли может быть оспорено. Обидно, но в генерации кода 1С ведущие российские модели YandexGPT и GigaChat работают хуже, чем ChatGPT. Хотя казалось бы, отечественные модели должны лучше работать с русским языком, российским ПО и тд. Однако, ChatGPT имеет существенные недостатки для обычного пользователя из РФ – плату за использование продвинутых моделей и запрет на доступ из РФ (API работает только через прокси-посредников). Это дополнительно повышает стоимость использования, растут риски в глазах бизнеса. Приходится искать альтернативы, не имеющие подобных недостатков. Здесь радует, что ситуация в отрасли меняется в лучшую сторону прямо на глазах – если полгода назад альтернатив ChatGPT для мира 1С я не находил в принципе, то сейчас они появляются все быстрее и быстрее. Новые модели выходят буквально каждую неделю. Более того, выходят открытые бесплатные модели, которые желающий вполне может запускать и использовать прямо на своем компьютере. Другими словами, для использования таких моделей не нужны и не используются никакие внешние сервисы. Конечно, надо принимать во внимание, что характеристики компьютера должны соответствовать предъявляемым требованиям. Для генерации кода на 1С простые и маленькие версии моделей вряд ли подойдут, результат их работы скорее разочарует. А серьезная большая модель на слабом компьютере либо вообще не запустится, либо будет работать неприемлемо медленно. Самым критичным параметром компьютера является размер ОЗУ. Для ускорения работы весомым плюсом станет наличие видеокарты от Nvidia последних поколений. Мои рекомендации по результатам проведенных лично тестов – ОЗУ от 32 Гб и видеокарта от Nvidia поколения 3000 или 4000 (скоро ожидается анонс видеокарт поколения 5000). Для ускорения запуска модели рекомендуется использовать SSD. Но прогресс неумолимо идет вперед, и к счастью, требования к компьютеру для запуска моделей ИИ постепенно снижаются.

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

Данная обработка демонстрирует использование ИИ из 1С в варианте локальной БЯМ, запускаемой на компьютере пользователя.

 

Использованное стороннее ПО

Для запуска локальной модели ИИ используется KoboldCPP. Из аналогичных продуктов я выбрал его за возможность использования видеокарт Nvidia для ускорения работы и использования более объемных моделей за счет расширения доступной оперативной памяти. При ОЗУ в 64 Гб и видеокарте с 12 Гб видеопамяти получается запускать модели ИИ размером в 70 Гб, которые показывают очень неплохие результаты. Разумеется, скорость работы будет сильно падать с увеличением размера модели, мгновенных ответов от больших моделей ждать точно не стоит.

KoboldCPP имеет удобный веб-интерфейс для общения и настройки. Используются модели ИИ в формате файлов c расширением GGUF.

https://koboldai.com/Koboldcpp/

Ссылка на скачивание с GitHub - https://github.com/LostRuins/koboldcpp/releases

 

Пример командной строки запуска KoboldCPP на компьютере с видеокартой, имеющей 12 Гб видеопамяти, из которой используются рекомендованные Max – 1 = 11 Гб. contextsize 4096 – максимальный размер контекста запроса в токенах, с которым может работать модель:

C:\Kobold\koboldcpp.exe --model C:\AIModels\t-pro-it-1.0-q8_0.gguf --usecublas --gpulayers 11 --contextsize 4096

 

Модель ИИ

В качестве LLM я использовал новую модель от Т-Банка, опубликованную буквально несколько дней назад. Данная модель основана на Qwen от китайской компании Алибаба, дополнительно обучена специалистами Т-Банка и показала неплохие результаты в моих тестах. Модели от Т-Банка доступны на https://huggingface.co, ссылки для скачивания в статье ниже. Из других испытанных мною неплохие результаты в генерации кода 1С показали модели DeepSeeker и Qwen, также доступные на Huggingface.

https://www.tbank.ru/about/news/11122024-the-t-technologies-group-has-introduced-the-worlds-most-efficient-open-large-language-models-in-russian/

 

Описание кода

Код для обращения к модели ИИ достаточно компактен и занимает не более страницы текста. Для передачи запроса и получения ответа используется API KoboldCPP, доступный по HTTP по адресу Localhost:5001. Код функции из приложенной обработки приведен на скриншоте ниже.

 

Результаты тестирования

Тестирование проводилось с помощью приложенной обработки на различных запросах по коду 1С и не только. Для запуска обработки подойдет пустая или любая конфигурация 1С 8.3, весь код  находится в самой обработке. Я задавал модели различные каверзные вопросы, на которые не смог получить адекватный ответ от других моделей (исключая ChatGPT, он ответил наилучшим образом и выступал в качестве эталона). Список вопросов у меня постоянно пополняется, ниже приведены примеры ответов на некоторые из них. Вывод по результатам тестирования – ответы не идеальны, но в целом модель ИИ от Т-Банка тестирование выдержала, для задач в области программирования на 1С вполне может использоваться.

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

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.383

Обработка Искусственный интеллект Большая языковая модель large language model KoboldCPP БЯМ LLM локальная gguf Т-Банк

См. также

Нейросети 8.3.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Обработка подключения фотокамер Canon и Nikon к Управление торговлей 11.4 для потоковой загрузки фотографий в карточки товаров с автоматическим удалением фона

22800 руб.

24.06.2021    9982    4    4    

15

Мастера заполнения Нейросети Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

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

5000 руб.

13.03.2023    18432    47    50    

76

Нейросети Мастера заполнения Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

5000 руб.

08.11.2023    2834    12    0    

21

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

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

10.01.2025    1542    mkalimulin    57    

26

Нейросети Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Поставщики присылают счета на оплату. Чтобы на основе счета сделать платежное поручение, нужно завести контрагента, создать его банковский счет, вбить реквизиты, назначение платежа. А это около 5 минут времени, если поставщик новый. Данное решение позволяет вставить скопированный текст счета в окно 1С и по одной кнопке нейросеть вычислит реквизиты контрагента, сгенерирует самого контрагента, его банковский счет. Далее по кнопке будет создано платежное поручение и для удобства сгенерирован qr код, который, например, можно задействовать для оплаты в мобильном банке.

3 стартмани

09.01.2025    343    4    svcoopers    0    

2

Инструментарий разработчика Нейросети Программист Платформа 1С v8.3 Абонемент ($m)

Решение демонстрирует механизмы взаимодействия с сетями TVM (Telegram Open Network Virtual Machine), такими как Everscale, TON и другими, построенными на базе этой виртуальной машины. Взаимодействие реализовано через клиента командной строки ever-cli. Пример реализации выполнен для сети Everscale, но с небольшими доработками может быть использована для сети TON.

2 стартмани

27.12.2024    403    0    lectorkoba    0    

2

Нейросети Россия Бесплатно (free)

Иногда читаешь статью на Инфостарте и понимаешь, что для тебя это слишком сложно. К счастью, сейчас есть искусственный интеллект. Искусственный интеллект разберет статью на тезисы и ответит на вопросы о непонятом. Можно, конечно, задать вопрос автору статьи, но есть проблема. Всегда есть вероятность, что твой вопрос окажется «глупым». С искусственным интеллектом можно не стесняться и задавать любые вопросы. Хочу рассказать, как я осмысливал сложную статью с Инфостарта с помощью языковой модели O1 от OpenAI.

24.12.2024    803    Torin57    1    

5

Нейросети Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

23.12.2024    2562    mkalimulin    35    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kalyaka 1114 17.12.24 16:14 Сейчас в теме
Какая по итогу конфигурация железа использовалась? Сколько времени уходило на обработку запроса?
9. gariki 73 18.12.24 09:08 Сейчас в теме
(1) kalyaka, Железо у меня достаточно среднее, только оперативку добил до 64 Гб. Без этого работало довольно грустно. Скорость очень сильно зависит от размера используемой модели. Light варианты моделей на 7 Гб отвечают примерно со скоростью родных сервисов. У средних по размеру на 30-40 Гб, которых сейчас появляется больше всего, на достаточно большой ответ уходит примерно пара минут. Ну а большие на 70 Гб... Кофе попить точно успеете) На Pro модели из примера на моем компьютере скорость ответа примерно 1,5 токена/сек.
Главное условие успешной работы - модель должна полностью вмещаться в свободную оперативную память. И, как написал, на скорость хорошо влияет наличие видеокарты NVidia. Чем большую часть модели удастся разместить в видеопамяти, тем заметнее будет эффект.
2. DmitryKSL 157 17.12.24 17:59 Сейчас в теме
Как ИИ обучить программированию на 1С? Вчера как раз от скуки попробовал гигачат. На простой задаче, выгрузить структуру в текстовый файл в формате json, получил похожий на правду, но не рабочий код. А говорил что умеет 1С, обманул ...
3. milanse 39 17.12.24 22:45 Сейчас в теме
(2) повезло, что код просто нерабочий. Мне гигачат выдал неправильно работающий скрипт на sql - язык уж куда проще. На уточняющий вопрос, мол код делает не то, ответил да, действительно, вот тебе код, который делает то. Надо ещё уметь правильно составить запрос, тоже опыт.
4. mkalimulin 1250 18.12.24 00:33 Сейчас в теме
(2) Вы, ребята, небось в режиме "сказочника" запускали. Ну и чего вы хотели?
10. gariki 73 18.12.24 09:10 Сейчас в теме
(2) DmitryKSL, напишите, пожалуйста, пример своего запроса? Добавлю в свой чеклист для оценки моделей.
16. DmitryKSL 157 18.12.24 12:56 Сейчас в теме
(10) Точно не вспомню. Примерно так: "Напиши код на 1С 8.3, который выгружает структуру (это тип данных) в текстовый файл в формате json".
20. gariki 73 18.12.24 14:40 Сейчас в теме
(16)
Напиши код на 1С 8.3, который выгружает структуру (это тип данных) в текстовый файл в формате json


Попробовал. Согласен, далек ответ модели от совершенства. Общая последовательность действий в принципе верная, но синтаксис языка и близко не похож( За пример спасибо, обязательно буду проверять!

Процедура ВыгрузитьКонтактыВJSON(Контакты, ПутьКФайлу)
    // Создаем JSON-объект
    JSONДокумент = Новый JSONДокумент;

    // Создаем массив для хранения контактов
    КонтактыArray = JSONДокумент.ДобавитьМассив();

    // Перебираем все записи в структуре Контакты
    Для Каждого Контакт Из Контакты Цикл
        // Создаем новый JSON-объект для каждого контакта
        КонтактJSON = КонтактыArray.ДобавитьОбъект();
        
        // Заполняем поля контакта
        КонтактJSON.Добавить("Имя", Контакт.Имя);
        КонтактJSON.Добавить("Телефон", Контакт.Телефон);
        КонтактJSON.Добавить("Адрес", Контакт.Адрес);
    КонецЦикла;

    // Преобразуем JSON-документ в строку
    JSONСтрока = JSONДокумент.Сериализовать();

    // Открываем файл для записи
    Файл = Новый Файл(ПутьКФайлу);

    // Проверяем, существует ли файл
    Если Файл.Существует() Тогда
        Файл.Удалить();
    КонецЕсли;

    // Открываем файл для записи
    Файл.ОткрытьДляЗаписи();

    // Записываем JSON-строку в файл
    Файл.Записать(JSONСтрока);

    // Закрываем файл
    Файл.Закрыть();
Показать
Прикрепленные файлы:
5. AntonProgma 48 18.12.24 00:35 Сейчас в теме
А сертификат 1специалиста ИИ уже может получить?
6. mkalimulin 1250 18.12.24 00:43 Сейчас в теме
7. shard 282 18.12.24 07:30 Сейчас в теме
не в ту сторону воюете)) надо запросы вида "напиши код для загрузки цен поставщика из вот этого файла xlsx" или "проанализируй товары по ликвидности и оборачиваемости и выведи в порядке выгодности". И в итоге поставщик пришлет файл, который 1с не открывает...
8. muskul 18.12.24 08:35 Сейчас в теме
(7) Вот вот. кому сдались в 1с эти сортировки.
ixijixi; Светлый ум; +2 Ответить
12. gariki 73 18.12.24 09:16 Сейчас в теме
(8) Это для сравнения с ответами по другим языкам программирования) Частенько модели в ответ вместо кода на 1С выдают ответ на Python или вообще что-то гибридно-нереальное.
11. gariki 73 18.12.24 09:14 Сейчас в теме
(7) Согласен, поэтому я не верю в идеи зерокодинга, что ИИ напишет весь код и не надо больше ничего делать, уметь программировать и тп. Да, некий шаблон ИИ выдаст, но "обработку напильником" по месту никто не отменял) Программист по-прежнему необходим, а ИИ просто сэкономит время, не более того...
13. kalyaka 1114 18.12.24 09:31 Сейчас в теме
(11) Ограничение ИИ (слишком громко сказано!) в том, что генеративные модели в принципе не могут ничего нового вывести, только комбинацию из имеющегося. Удобство в том, что они позволяют выуживать информацию из огромного массива данных. Т.е. если раньше нужно было "гуглить" и самому компилировать, то теперь можно просто "поговорить" с ChatGPT. Т.е. современный ИИ это по сути очень удобная база знаний на основе "горы" данных.

По сути это очень удобная экспертная система. ИИ - это просто коммерчески раскрученное имя.
json; ivanov660; +2 Ответить
14. SerVer1C 839 18.12.24 09:50 Сейчас в теме
Пока разработчикам не стоит беспокоиться о превосходстве ИИ над человеком. Захват мира машинами тоже отменяется.
Тиньковская модель на 32B параметров отжигает
Прикрепленные файлы:
15. kalyaka 1114 18.12.24 11:03 Сейчас в теме
(14) провел такой же эксперимент с моделью GPT-4o в вариантах быстрого ответа и более качественного. Убедился, что пока нам ИИ не угрожает :))
Прикрепленные файлы:
19. mkalimulin 1250 18.12.24 14:40 Сейчас в теме
(15) Ну вот где и какому специалисту по 1С потребуется считать количество букв в слове?
Вместо того, чтобы вот это вот все сюда постить, попросите лучше sate-of-art модель написать ФИФО запросом. Вот это дело будет
JohnyDeath; +1 Ответить
24. gariki 73 18.12.24 15:09 Сейчас в теме
(19) Согласен, это ближе к нашей теме! Задача популярная, обучать есть на чем, ответ должен быть лучше. Получилось как-то так:

Конечно! Вот пример запроса на языке 1С для получения остатков по методу FIFO (First-In, First-Out) из регистра "ОстаткиТовара" с учетом измерений "Товар", "Партия" и количества:

```1C
Процедура ПолучитьОстаткиПоFIFO()
    // Создаем запрос к регистру накопления "ОстаткиТовара"
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
            |РегистрНакопления.ОстаткиТовара.Товар КАК Товар,
            |РегистрНакопления.ОстаткиТовара.Партия КАК Партия,
            |СУММА(РегистрНакопления.ОстаткиТовара.Количество) КАК Остаток
        |ИЗ
            |РЕГИСТРНАКОПЛЕНИЯ.ОстаткиТовара КАК РегистрНакопления.ОстаткиТовара
        |ГДЕ
            |РегистрНакопления.ОстаткиТовара.Дата <= &ДатаНачала
        |ГРУППИРОВКА ПО
            |РегистрНакопления.ОстаткиТовара.Товар,
            |РегистрНакопления.ОстаткиТовара.Партия";

    // Устанавливаем параметры запроса
    Запрос.УстановитьПараметр("ДатаНачала", Сегодня());

    // Выполняем запрос и получаем набор данных
    Результат = Запрос.Выполнить().Выбрать();

    // Инициализируем структуру для хранения остатков по FIFO
    ОстаткиFIFO = Новый Структура;

    // Обрабатываем результаты запроса
    Пока Результат.Следующий() Цикл
        Товар = Результат.Следующее();
        Партия = Результат.Следующее();
        Остаток = Результат.Следующее();

        Если Не ОстаткиFIFO.Существует(Товар) Тогда
            ОстаткиFIFO.Добавить(Товар, Новый Структура);
        КонецЕсли;

        ТекущиеОстатки = ОстаткиFIFO.Получить(Товар);

        Если Не ТекущиеОстатки.Существует(Партия) Тогда
            ТекущиеОстатки.Добавить(Партия, 0);
        КонецЕсли;

        ТекущиеОстатки.Положить(Партия, ТекущиеОстатки.Получить(Партия) + Остаток);
    КонецЦикла;

    // Выводим или используем результаты
    Для Каждого Товар Из ОстаткиFIFO Цикл

        |Вывести("Товар
" + Товар.Ключ);
        |Для Каждого Партия Из Товар.Значение Цикл

        |   |Вывести("  Партия
" + Партия.Ключ + ", Остаток: " + Партия.Значение);
        |КонецЦикла;
    КонецЦикла;
КонецПроцедуры
Показать

```

Этот код создает запрос к регистру накопления "ОстаткиТовара", группирует данные по товару и партии, а затем обрабатывает их для получения остатков по методу FIFO. Вы можете настроить параметр `ДатаНачала`
26. mkalimulin 1250 18.12.24 15:53 Сейчас в теме
(24) Какая модель? Какая температура? И не надо из регистра. Говорите:
есть таблица приходов Товар, Партия, Количество
есть таблица расходов Товар, Количество
нужен текст запроса для распределения по FIFO
30. _root 167 19.12.24 02:09 Сейчас в теме
(12)
дипендненсы
- зависимости.
(15) А вы уверены, что GPT использует русские слова? В слове банан 3 буквы а - banana...
31. kalyaka 1114 19.12.24 08:47 Сейчас в теме
(30) а это не важно. Нужно просто понимать, что GPT это не интеллект, а алгоритм генерации текста. Соответственно область применения не предполагает интеллектуальных функций: переводчик, сокращение/обогащение, автодополнение, бот, экспертная система.
32. ivanov660 4592 19.12.24 14:27 Сейчас в теме
(15) скорее всего он считает что слово банан пишется как банана, на английский манер) т.к. мне он выдал что буквы а встречаются 2,4 и 6 позицией.
17. gariki 73 18.12.24 14:06 Сейчас в теме
(14) Выдает с головой, что модель обучалась в основном на английском) В английском слове Banana действительно 3 буквы A.
ivanov660; +1 Ответить
18. SerVer1C 839 18.12.24 14:15 Сейчас в теме
(17) Это не причина. В слове стол 1 буква "о", хотя сеть не сказала, что там их ноль. Да и представители Т говорят, что дорабатывали модель под русский язык. А если второй раз спросить с уточнением про банан, то ответ будет уже правильный. Но это же не дело, когда мы знаем правильный ответ и подталкиваем сеть к этому результату - зачем нам тогда такой ИИ ? Все эти игрушки больше подходят для выжимки "сухого" остатка из некоторого набора данных.
21. mkalimulin 1250 18.12.24 14:42 Сейчас в теме
(18) Игрушки, потому что вы работаете с игрушечными моделями, да еще, небось, в режиме сказочника. "Взрослые" модели в режиме математика выдадут вам нормальный результат
22. SerVer1C 839 18.12.24 14:51 Сейчас в теме
(21) ну не знаю, какими вы пользуетесь, но вот:
Прикрепленные файлы:
23. SerVer1C 839 18.12.24 14:54 Сейчас в теме
25. mkalimulin 1250 18.12.24 15:49 Сейчас в теме
(22) Общие бэнчмарки тут не сильно полезны. Смотреть надо на то, что вы собираетесь делать. Будете генерировать SQL запросы? Будете писать несложный код на 1С? Вот для этих задач и собирайте свой собственный бэнчмарк. А общие вас только в заблуждение будут вводить.
И опять же. Режим "сказочника" никто не отменял.
27. kalyaka 1114 18.12.24 16:29 Сейчас в теме
(25)
Режим "сказочника"
Это где такой установлен? Или что вы имеете в виду под этим режимом?
29. mkalimulin 1250 18.12.24 19:13 Сейчас в теме
(27) Это везде такой установлен. По умолчанию.
Попросите ИИ рассказать сказку. Он расскажет. Вам одну, Васе другую, Наташе третью. Лично вам сегодня одну, завтра другую...
Прежде чем проводить эксперименты на тему программирования или запросов SQL, убедитесь, что запускаете модель в режиме "одна сказка для всех и всегда"
28. bolikov 20 18.12.24 18:36 Сейчас в теме
Часто невозможно разобраться что же напрограммировал человек. А вы хотите получить какой-то смысл от бредогенератора. Ашманова посмотрите для начала.
Хотя может пригодиться. Если вам платят за код постранично. Во времена линейного программирования мы с коллегой ломали голову над фрагментом кода предыдущего программиста на 20 листов примерно. Потом обнаружили if 1=0 then. Не забудьте только в самом конце подставить endif.
33. dreamadv 157 20.12.24 17:55 Сейчас в теме
Лучше всего код 1С пишет Claude, особено если ему сунуть своих кусков схожего функционала который нужно переписать. Например объединить функционал 2-х модулей в 1. Такой условно продвинутый копипаст. Но тоже галюцинаций много когда придумывает не существующие функции метаобъектов и т.д. Но в любом случае работает лучше чем ChatGPT с 1С кодом.
34. mkalimulin 1250 20.12.24 20:04 Сейчас в теме
(33) Лучше всего код 1С пишут state-of-art модели
35. dreamadv 157 21.12.24 00:36 Сейчас в теме
(34) это же общее название современных моделей
36. mkalimulin 1250 21.12.24 01:14 Сейчас в теме
(35) Общее название САМЫХ современных моделей
37. dreamadv 157 22.12.24 19:18 Сейчас в теме
(36) А чем Claude 3.5 не САМАЯ современная модель, да не ризониг модел как о1. Но я много что попробовал с 1С кодом лучше всего работает на данный момент Claude. Ваш же пассаж не понятно о чем и к чему.
38. mkalimulin 1250 22.12.24 20:04 Сейчас в теме
Ну попробуйте, например, это

Из строки следующего вида: "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" вытащить все числа. Сложность в том, что в качестве разделителя разрядов и разделителя дробной части указывается точка "." Например, число 32342324.34 записывается как 32.342.324.34, а число 21434 как 21.434 Числа представлены в денежном формате. Это означает, что дробная часть имеет только два знака, если она есть.
Нужен код на языке 1С без использования регулярных выражений

Что вам выдаст Claude 3.5?
39. gariki 73 23.12.24 09:31 Сейчас в теме
(38) claude-3-5-sonnet-20241022 справился очень неплохо! Навскидку ошибок в коде и результате не увидел. Еще и объяснил)

Функция ИзвлечьЧисла(Знач СтрокаВход) Экспорт
    
    МассивЧисел = Новый Массив;
    ТекущееЧисло = "";
    ЕстьТочка = Ложь;
    СчетчикПослеТочки = 0;
    
    Для Индекс = 1 По СтрДлина(СтрокаВход) Цикл
        Символ = Сред(СтрокаВход, Индекс, 1);
        
        Если Символ = "." Тогда
            // Если точка уже была или число еще не начали собирать
            Если ЕстьТочка ИЛИ ПустаяСтрока(ТекущееЧисло) Тогда
                // Начинаем собирать новое число
                ТекущееЧисло = "";
                ЕстьТочка = Ложь;
                СчетчикПослеТочки = 0;
                Продолжить;
            КонецЕсли;
            
            ЕстьТочка = Истина;
            ТекущееЧисло = ТекущееЧисло + Символ;
            Продолжить;
        КонецЕсли;
        
        Если СтрНайти("0123456789", Символ) > 0 Тогда
            Если ЕстьТочка Тогда
                СчетчикПослеТочки = СчетчикПослеТочки + 1;
                // Если после точки больше двух цифр
                Если СчетчикПослеТочки > 2 Тогда
                    // Сохраняем предыдущее число если оно корректное
                    Если ЗначениеЗаполнено(ТекущееЧисло) Тогда
                        МассивЧисел.Добавить(Число(ТекущееЧисло));
                    КонецЕсли;
                    // Начинаем собирать новое число
                    ТекущееЧисло = Символ;
                    ЕстьТочка = Ложь;
                    СчетчикПослеТочки = 0;
                    Продолжить;
                КонецЕсли;
            КонецЕсли;
            ТекущееЧисло = ТекущееЧисло + Символ;
        Иначе
            // Если встретили не цифру и не точку
            Если ЗначениеЗаполнено(ТекущееЧисло) Тогда
                МассивЧисел.Добавить(Число(ТекущееЧисло));
            КонецЕсли;
            ТекущееЧисло = "";
            ЕстьТочка = Ложь;
            СчетчикПослеТочки = 0;
        КонецЕсли;
    КонецЦикла;
    
    // Добавляем последнее число, если оно есть
    Если ЗначениеЗаполнено(ТекущееЧисло) Тогда
        МассивЧисел.Добавить(Число(ТекущееЧисло));
    КонецЕсли;
    
    Возврат МассивЧисел;
    
КонецФункции

// Пример использования
Процедура ТестИзвлечения()
    
    СтрокаТест = "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34";
    МассивРезультат = ИзвлечьЧисла(СтрокаТест);
    
    Для Каждого Число Из МассивРезультат Цикл
        Сообщить(Число);
    КонецЦикла;
    
КонецПроцедуры
Показать


Этот код:

Проходит по строке посимвольно
Собирает числа, учитывая следующие правила:
Дробная часть может иметь только 2 знака после точки
Если после точки идет больше двух цифр, начинается новое число
Числа разделяются нецифровыми символами (кроме точки)
Сохраняет найденные числа в массив

Для строки "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" результат будет:

12.43
234.32
21.43
4.34
334.34
2.34

Код учитывает различные краевые случаи:

Несколько точек подряд
Точка в начале или конце числа
Буквы между цифрами
Дробные числа с более чем двумя знаками после точки (разбивает на разные числа)
Прикрепленные файлы:
Тест кода от LLM.epf
JohnyDeath; dreamadv; +2 Ответить
40. mkalimulin 1250 23.12.24 10:09 Сейчас в теме
41. dreamadv 157 23.12.24 18:58 Сейчас в теме
42. gariki 73 27.12.24 19:22 Сейчас в теме
Новейшая китайская DeepSeek V3 также показала прекрасные результаты, умеет как с регулярными выражениями, так и без них. Локально запустить ее, к сожалению, нереально из-за размера. Ждем уменьшенные версии, оригинальная модель выложена на https://huggingface.co/deepseek-ai/DeepSeek-V3. Проверить работу можно в чате https://chat.deepseek.com/a/chat/

Напиши код на языке 1С, чтобы из строки вида: "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" вытащить все числа. Дробная часть числа имеет 2 разряда, если есть.

Для решения задачи на языке 1С можно использовать регулярные выражения. Вот пример кода, который извлекает все числа из строки, учитывая, что дробная часть числа может иметь два разряда:
1C
Copy

Функция ИзвлечьЧисла(Строка)

РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d{2}|\d+)");
Совпадения = РегулярноеВыражение.НайтиВсе(Строка);

Результат = Новый Массив;

Для Каждого Совпадение Из Совпадения Цикл
Результат.Добавить(Совпадение.Значение);
КонецЦикла;

Возврат Результат;

КонецФункции

// Пример использования
Строка = "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34";
Числа = ИзвлечьЧисла(Строка);

Для Каждого Число Из Числа Цикл
Сообщить(Число);
КонецЦикла;

Описание:

Регулярное выражение (\d+\.\d{2}|\d+):

\d+ — одна или более цифр.

\.\d{2} — точка и ровно две цифры (дробная часть).

| — логическое "или".

\d+ — одна или более цифр (целая часть числа без дробной части).

Метод НайтиВсе — находит все совпадения с регулярным выражением в строке.

Массив Результат — хранит все найденные числа.

Цикл Для Каждого — проходит по всем найденным числам и добавляет их в массив.

Функция Сообщить — выводит каждое число в сообщение (можно заменить на другие действия, например, запись в таблицу значений).

Пример вывода:
Copy

12.43
2.23
4.32
21.43
4.34
334.34
2.34

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


Напиши код на языке 1С без использования регулярных выражений, чтобы из строки вида: "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" вытащить все числа. Дробная часть числа имеет 2 разряда, если есть.

Если не использовать регулярные выражения, то можно реализовать алгоритм, который проходит по строке посимвольно и собирает числа, учитывая формат (целая часть и дробная часть из двух разрядов). Вот пример кода на языке 1С:
1C
Copy

Функция ИзвлечьЧисла(Строка)

Результат = Новый Массив;
ДлинаСтроки = СтрДлина(Строка);
Индекс = 1;

Пока Индекс <= ДлинаСтроки Цикл
Символ = Сред(Строка, Индекс, 1);

Если Найти("0123456789", Символ) > 0 Тогда
Число = "";
ТочкаНайдена = Ложь;
КоличествоЦифрПослеТочки = 0;

Пока Индекс <= ДлинаСтроки Цикл
Символ = Сред(Строка, Индекс, 1);

Если Найти("0123456789", Символ) > 0 Тогда
Число = Число + Символ;
Если ТочкаНайдена Тогда
КоличествоЦифрПослеТочки = КоличествоЦифрПослеТочки + 1;
КонецЕсли;
ИначеЕсли Символ = "." И Не ТочкаНайдена Тогда
Число = Число + Символ;
ТочкаНайдена = Истина;
Иначе
Прервать;
КонецЕсли;

Индекс = Индекс + 1;
КонецЦикла;

Если ТочкаНайдена И КоличествоЦифрПослеТочки = 2 Тогда
Результат.Добавить(Число);
ИначеЕсли Не ТочкаНайдена Тогда
Результат.Добавить(Число);
КонецЕсли;
Иначе
Индекс = Индекс + 1;
КонецЕсли;
КонецЦикла;

Возврат Результат;

КонецФункции

// Пример использования
Строка = "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34";
Числа = ИзвлечьЧисла(Строка);

Для Каждого Число Из Числа Цикл
Сообщить(Число);
КонецЦикла;

Описание:

Переменные:

Результат — массив для хранения найденных чисел.

ДлинаСтроки — длина входной строки.

Индекс — текущий индекс символа в строке.

Основной цикл:

Проходит по строке посимвольно.

Если символ является цифрой, начинается сбор числа.

Сбор числа:

Если встречается точка, она добавляется к числу, и начинается отсчет цифр после точки.

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

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

Проверка формата:

Если число содержит точку, но после нее не две цифры, оно игнорируется.

Пример вывода:
Copy

12.43
2.23
4.32
21.43
4.34
334.34
2.34

Этот код корректно извлекает числа из строки, учитывая формат с двумя разрядами дробной части.
43. AlexanderEkb 25 30.12.24 06:41 Сейчас в теме
Не знаю как у вас у меня всё супер работает с 1с. Управляемые формы, любые обработки на ура пишет без ошибок с перового раз по промту. Если лень описывать кнопки, закладки форму словами, то я просто даю скрин или рисунок формы - выдаёт мне готовую форму.
44. user2116242 04.01.25 22:07 Сейчас в теме
(43) Супер. А что за модель, если не секрет?
47. AlexanderEkb 25 10.01.25 15:26 Сейчас в теме
49. user2116242 10.01.25 18:06 Сейчас в теме
(43)
Если лень описывать кнопки, закладки форму словами, то я просто даю скрин или рисунок формы - выдаёт мне готовую форму.

В каком виде получается готовая форма? Неужели Cloude Sonnet 3.5 уже умеет формировать файлы внешних обработок epf?
Интересно, а отчет на СКД сумеет сформировать? К сожалению, нет времени проверить.
51. AlexanderEkb 25 10.01.25 23:40 Сейчас в теме
(49) В готовом, открывай в 1с и запускай
52. AlexanderEkb 25 10.01.25 23:41 Сейчас в теме
(49) Без понятия про СКД, никогда с СКД не работал
53. AlexanderEkb 25 10.01.25 23:50 Сейчас в теме
(49) Зачем напрямую к cloude sonnet 3.5 обращаться, если тем более в РФ?Ставишь ide:cursor и пользуешься всеми современными моделями, в том числе cloude sonnet 3.5 из РФ, без VPN-ов и бесплатно
55. user2116242 11.01.25 10:08 Сейчас в теме
(53) Поставил cursor. Пока не понимаю как в курсоре сгенерировать управляемую форму 1с.
Можно написать такой промт, причем ИИ поможет его сочинить:
Мне нужно сгенерировать файл внешней обработки для 1с 8.3
В обработке будет управляемая форма с 2-мя полями:
1. Поле ввода текста
2. Поле выбора даты

В обработке будет 2 кнопки:
1. Кнопка "Сохранить"
2. Кнопка "Отмена"

При нажатии на кнопку "Сохранить" в таблицу регистрации будет добавлена новая запись с текстом из поля ввода и датой из поля выбора даты.
При нажатии на кнопку "Отмена" форма закроется без сохранения данных.
Внешняя обработка "ВводДанных"


Дальше мне курсор написал текст кода, тоже все замечательно.

&НаКлиенте
Перем ТекстВвода;
&НаКлиенте
Перем ДатаВвода;

// Процедура при создании формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ТекстВвода = "";
    ДатаВвода = ТекущаяДата();
КонецПроцедуры

// Обработчик нажатия кнопки "Сохранить"
&НаКлиенте
Процедура КнопкаСохранитьНажатие(Кнопка)
    ЗаписатьДанныеВРегистр();
    Закрыть();
КонецПроцедуры

// Процедура записи данных в регистр
&НаСервере
Процедура ЗаписатьДанныеВРегистр()
    НаборЗаписей = РегистрыСведений.РегистрДанных.СоздатьНаборЗаписей();
    Запись = НаборЗаписей.Добавить();
    Запись.Текст = ТекстВвода;
    Запись.Дата = ДатаВвода;
    НаборЗаписей.Записать();
КонецПроцедуры

// Обработчик нажатия кнопки "Отмена"
&НаКлиенте
Процедура КнопкаОтменаНажатие(Кнопка)
    Закрыть();
КонецПроцедуры
Показать


Теперь я хочу получить файл с расширением epf и управляемой формой внутри. Как это сделать? По-моему никак. Можно сохранить файл с расширением epf, но это будет тот же текстовый файл, просто с другим расширением.
Прикрепленные файлы:
56. AlexanderEkb 25 11.01.25 11:06 Сейчас в теме
(55) У меня всё получилось. Сейчас видео скину.
57. пользователь 11.01.25 12:38
Сообщение было скрыто модератором.
...
58. AlexanderEkb 25 11.01.25 12:47 Сейчас в теме
(55) (55) Если создаёте с нуля обработку, то главное это выбрать Composer, а не Chat, как скрине ниже. И модель Cloude Sonnet 3.5. Вот видео: https://rutube.ru/video/87d627a03489cd9c6c833d6470284664/
Прикрепленные файлы:
JohnyDeath; +1 Ответить
59. user2116242 11.01.25 21:14 Сейчас в теме
(58) Форму Cursor создавать не захотел. Предлагает самому нарисовать форму.
Предполагаю что мне нужно установить расширение Language 1C (BSL). Я прав?
Прикрепленные файлы:
60. AlexanderEkb 25 12.01.25 19:07 Сейчас в теме
(59) нет, просто попросить самому создать форму
61. AlexanderEkb 25 13.01.25 16:48 Сейчас в теме
62. AlexanderEkb 25 13.01.25 16:48 Сейчас в теме
(59) Не только форму создаёт, а целые конфигурации с нуля
63. Torin57 33 13.01.25 20:46 Сейчас в теме
(62) У меня не получилось, несколько раз просил ИИ устранить ошибку. При открытии файла ВводДанных.xml в конфигураторе возникает ошибка загрузки документа. Ошибка преобразования данных XML по причине:Ошибка преобразования данных XML.

Прикрепляю получившиеся в Cursor файлы xml и bsl.

Пришлите, пож-та, получившиеся у вас файлы. Я их подсуну ИИ и тогда он поймет что я от него хочу.
Прикрепленные файлы:
ВводДанных.zip
69. AlexanderEkb 25 14.01.25 11:48 Сейчас в теме
(63) Конкретно это ошибка с экрана связана с guid-ам, uuid-ами. Просто попроси исправить ошибки с guid-ами, uuid-ами. Так же скажи, что он забыл создать объект метаданных формы. И потом ещё будут ошибки, но просто ему скармливаешь - он их решает. Ошибку с "префикс в определении типа. Исправим тип" он со второго "fix it" решил. Остальные все с первого. По итогу - у меня запустилось всё
70. Torin57 33 14.01.25 11:52 Сейчас в теме
(69) Спс, проверю. А как получилось, что вы никогда с СКД не работали? У вас какие-то старые самописные конфигурации на работе? Потому что в 8.3 все отчеты на СКД. По крайней мере, у меня такое впечатление сложилось.
71. AlexanderEkb 25 14.01.25 12:02 Сейчас в теме
(70) Я не работаю во франчайзи и не обслуживаю 1с, не работаю с учётом и отчётами. Я работаю на стыке областей кассовые аппараты и 1с, автоматизация и розница.
79. Torin57 33 18.01.25 20:31 Сейчас в теме
(69) Эту задачу бросил, начал решать другую. Начал писать ВПФ заявления на отпуск для ЗУП 3.1. За основу взял заявление о приеме. В целом получается, но нужно терпение. Подскажите, плиз, такой вопрос. В composer перед комментарием вы пишете @codebase. Для чего это нужно? Это какие-то разные АИ агенты в одном чате?
45. gariki 73 09.01.25 14:24 Сейчас в теме
Неплохо показала себя свежая свободная модель от Microsoft phi-4. Русский язык понимает, все тесты по 1С прошла. Размер модели - 11,4 Гб позволяет запускать ее на вполне обычном компьютере с 16 Гб оперативки. Модель для Kobold можно скачать здесь https://huggingface.co/bartowski/phi-4-GGUF/blob/main/phi-4-Q6_K_L.gguf
46. user2116242 09.01.25 14:42 Сейчас в теме
(45) Мне это вряд ли подойдет. Я знаю что у автомобиля есть газ и тормоз, а как работает двигатель - это пусть автомеханики разбираются. А есть какой-то сайт с онлайн чатом? Что-то типа https://caila.io, где тебе при регистрации дают 500 рублей?
48. user2116242 10.01.25 18:02 Сейчас в теме
(45) Немножко резковато выразился. Хотел сказать, что обязательно воспользуюсь Microsoft phi-4, но только когда эта модель появится на Calia.io или каком-то другом сайте онлайн. Скачать Kobold и развернуть у себя - слишком трудоемко для меня. Все равно спасибо за помощь!
50. gariki 73 10.01.25 22:29 Сейчас в теме
(48) Можете здесь попробовать - https://lmarena.ai/ Выбираете Direct Chat, нужную модель (сейчас доступно 84 модели) и вперед! Можно также задать параметры, ту же температуру.
54. user2116242 11.01.25 00:38 Сейчас в теме
64. Torin57 33 13.01.25 21:10 Сейчас в теме
(50) Возможно, вам будет интересно. Задал вопрос Сергею Нуралиеву в личных сообщениях на партнерском форуме. Спросил Сергея когда у 1С будет нейросеть способная писать код на 1С? Сергей ответил что пока не готовы сказать.
Удивительно, уже два года прошло, но пока не готовы. Что ж, бывает и так.
Прикрепленные файлы:
65. JohnyDeath 302 13.01.25 21:14 Сейчас в теме
(64) работы точно ведутся. Но в конфигураторе вы их вряд ли увидите. Только ЕДТ.
А для ЕДТ, как мне кажется, можно уже и сейчас что-то прикрутить в виде плагинов.
Другое дело, что конфигурации огромные. Я, например, хотел в Курсоре открыть проект с исходниками от БП+БитФинанс. Он индексировать кодовую базу отказался, т.к. имеет лимит в 100000 файлов. Да, будет что-то подсказывать, но хотелось бы, чтобы весь контекст конфигурации держал в себе при ответах на вопросы и подсказках.
66. Torin57 33 13.01.25 21:16 Сейчас в теме
(65)
работы точно ведутся. Но в конфигураторе вы их вряд ли увидите. Только ЕДТ.
А для ЕДТ, как мне кажется, можно уже и сейчас что-то прикрутить в виде плагинов.

Любопытно, попробую уточнить.
72. AlexanderEkb 25 14.01.25 12:17 Сейчас в теме
(65)
100000 файлов
ничего себе не знал, что у него (Курсора) есть лимит. С большими конфигурациями можно greptile (он специализируется на большом коде) пробовать, но когда в последний раз это пробовал (этим летом), он не справлялся - ерунду отвечал. Может сейчас, что нибудь поменялось - я не знаю.

У меня есть в голове представляю себе как можно сделать помощника, который бы умел с конфигурациями over 100000 файлов работать. На сегодняшний - это решаемая задачка, на разработку - где-то год*человек - если продовую и mvp - 1,5-2 месяца*человека.
73. JohnyDeath 302 14.01.25 12:23 Сейчас в теме
(72) вот я тоже не знал, что есть лимиты.
Там есть вариант добавить в игнор какие-то типы файлов или целые каталоги, но для типовых это скорее всего не решит проблему. Описание метаданных, их форм, и модулей точно не поместиться в этот лимит (
Прикрепленные файлы:
74. Torin57 33 14.01.25 12:39 Сейчас в теме
(65)
работы точно ведутся.

Есть какой-то анонс от 1С, о том что работы ведутся?
Опять написал Нуралиеву, пока не ответил.
75. JohnyDeath 302 14.01.25 12:42 Сейчас в теме
(74) Анонс чего? Что ведутся работы?
1С такое обычно никогда не рассказывает. Только где-то на финальной стадии, ближе к альфа.
67. gariki 73 14.01.25 07:31 Сейчас в теме
(64) Спасибо за информацию! Писать код на 1С - понятие растяжимое) Я в нейросетях пока что вижу больше продвинутые синтакс-помощник и генератор шаблонов, которые будут способны на простой человеческий запрос и с учетом контекста генерировать осмысленный и почти работающий код. Для этого много не надо - взять готовую модель и обучить ее на большом объеме данных по 1С. Который у фирмы 1С безусловно есть, исключительно вопрос желания. А пока, тестируя очередную модель (вчера это была Sky-T1-32B-Preview), вижу, что они обучены на одних и тех же ограниченных данных и на запросы отвечают уже практически одинаково. Ну и чтобы ИИ начал писать более сложный код, сами модели должны перейти на следующий уровень с возможностью рассуждений, логических цепочек и самоконтроля. Возможностей чистого GPT для этого недостаточно, на мой взгляд.
68. Torin57 33 14.01.25 10:43 Сейчас в теме
(67) Если я хочу, чтобы Клод Соннет написал мне программный код на 1С, то какую температуру и top p мне выставить? Зашел на сайт Arena в Direct Chat, по умолчанию там стоит 0.7 и 0.7. Мне нужные значения, которые подойдут в большинстве случаев.
Прикрепленные файлы:
76. gariki 73 15.01.25 10:39 Сейчас в теме
(68) Креатив в нашем случае вряд ли нужен, галлюцинации начнутся) Поэтому меняйте в сторону уменьшения, я 0,1 ставлю, результаты лучше получаются.
77. Torin57 33 15.01.25 11:18 Сейчас в теме
А top P? По умолчанию стоит 0,7. И что за параметр max output tokens? Я такую версию слышал. ИИ может заглючить, зациклиться и начать бесконечное число раз выводить в ответ одинаковый набор слов.
Прикрепленные файлы:
78. gariki 73 16.01.25 08:03 Сейчас в теме
(77) В интернете столько прекрасных статей про параметры запросов к ИИ, поищите. Не хочу быть испорченным телефоном) Плюс они здорово зависят от контекста, поэкспериментируйте на своих запросах, вполне возможно, что вам другие значения лучший результат покажут.
Оставьте свое сообщение