1C и GigaChat на базе 1С HTTP Connector (теперь + DeepSeek)

25.04.25

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

Данная публикация демонстрирует основы взаимодействия 1С по АПИ с GigaChat от Сбера. Приведены примеры получения токена, отправки файла для последующей обработки и чат с ИИ, и непосредственно обработка файла.

Скачать файл

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

Наименование По подписке [?] Купить один файл
1C и GigaChat на базе 1С HTTP Connector
.epf 7,15Kb
4
4 Скачать (2 SM) Купить за 2 150 руб.
1C и DeepSeek на базе 1С HTTP Connector
.epf 6,66Kb
0
0 Скачать (2 SM) Купить за 2 150 руб.

Моя вторая публикация и снова на базе https://github.com/vbondarevsky/Connector

В приложенной обработке реализовано получение токена Bearer для обращения к API GigaChat, помещение файла pdf в хранилище GigaChat для последующего анализа и обработки и простой чат вопрос - ответ.

 

Выкладываю код, он же в приложенной обработке.

Подставляем в функцию Токен() <Authorization key> из кабинета developers.sber.ru

&НаСервере
Функция Токен()
    
    Аутентификация = КоннекторHTTP.НоваяАутентификацияBearer("<Authorization key>");

Также понадобится <id клиента>

  

  Данные = Новый Структура("purpose", "general");
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("x-client-id", "<id клиента>");

Прилагаю код формы:

&НаКлиенте
Процедура Команда1(Команда)
     РеквизитТокен = Токен();
 КонецПроцедуры
 
 &НаКлиенте
Процедура Команда2(Команда)
     СкормитьПДФ();
 КонецПроцедуры
 
&НаСервере
Функция Токен()
    
    Аутентификация = КоннекторHTTP.НоваяАутентификацияBearer("<Authorization key>");

    Данные = Новый Структура("scope", "GIGACHAT_API_PERS");
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("RqUID",XMLСтрока(Новый УникальныйИдентификатор));

    Результат = КоннекторHTTP.КакJSON(КоннекторHTTP.Post("https://ngw.devices.sberbank.ru:9443/api/v2/oauth", Неопределено, Новый Структура("Аутентификация,Заголовки, Данные", Аутентификация, Заголовки, Данные)));
    
    Возврат Результат["access_token"];    
    
КонецФункции

&НаСервере 
Процедура СкормитьПДФ()
    Аутентификация = КоннекторHTTP.НоваяАутентификацияBearer(Токен());

    Файлы = Новый Массив;  
    ФайлДанных = КоннекторHTTP.НовыйОтправляемыйФайл("file", "d:\test.pdf", Новый ДвоичныеДанные("d:\test.pdf"),  "application/pdf");
    Файлы.Добавить(ФайлДанных);

    Данные = Новый Структура("purpose", "general");
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("x-client-id", "<id клиента>");

    Результат = КоннекторHTTP.Post("https://gigachat.devices.sberbank.ru/api/v1/files", Неопределено, Новый Структура("Файлы,Данные,Аутентификация,Заголовки", Файлы, Данные, Аутентификация, Заголовки));
    Ответ = КоннекторHTTP.КакJson(Результат)["id"];
КонецПроцедуры    


&НаСервере
Процедура СпроситьИИНаСервере()

    ИДФайла = Ответ;
    Аутентификация = КоннекторHTTP.НоваяАутентификацияBearer(Токен());
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("x-client-id", "<id клиента>");
    
    // Определение структуры
    СтруктураДанных = Новый Структура;
    СтруктураДанных.Вставить("model", "GigaChat");
    
    Сообщения = Новый Массив;
    
    СообщениеСистемы = Новый Структура;
    СообщениеСистемы.Вставить("role", "system");
    СообщениеСистемы.Вставить("content", "Ты - пьяный гопник и быдло. Тебе нужно отвечать на все вопросы как будто ты маргинал.");
    Сообщения.Add(СообщениеСистемы);
    
    СообщениеПользователя = Новый Структура;
    СообщениеПользователя.Вставить("role", "user");
    СообщениеПользователя.Вставить("content", ВопросИИ);  
    //СообщениеПользователя.Вставить("attachments", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИДФайла));  
    
    
    Сообщения.Add(СообщениеПользователя);
    
    СтруктураДанных.Вставить("messages", Сообщения);
    
    // Теперь структура готова к использованию    
    
    Результат = КоннекторHTTP.PostJSON("https://gigachat.devices.sberbank.ru/api/v1/chat/completions", СтруктураДанных, Новый Структура("Аутентификация,Заголовки", Аутентификация, Заголовки));
    Ответ = Результат["choices"][0]["message"]["content"];
КонецПроцедуры


&НаКлиенте
Процедура СпроситьИИ(Команда)
    СпроситьИИНаСервере();
КонецПроцедуры

 

upd:
Пример обработки загруженного файла в хранилище GigaChat
&НаСервере
Процедура СпроситьИИНаСервере()

	ИДФайла = Ответ;
	Аутентификация = КоннекторHTTP.НоваяАутентификацияBearer(РеквизитТокен);
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("x-client-id", "");
	
	// Определение структуры
	СтруктураДанных = Новый Структура;
	СтруктураДанных.Вставить("model", "GigaChat-2-preview");
	
	Сообщения = Новый Массив;
	
	СообщениеПользователя = Новый Структура;
	СообщениеПользователя.Вставить("role", "user");
	СообщениеПользователя.Вставить("content", "Выпиши все значения id в документе в столбик. Отвечай на основе приложенного документа");  
	СообщениеПользователя.Вставить("attachments", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИДФайла));  
	
	
	Сообщения.Add(СообщениеПользователя);
	
	СтруктураДанных.Вставить("messages", Сообщения);
	
	// Теперь структура готова к использованию	
	
	Результат = КоннекторHTTP.PostJSON("https://gigachat.devices.sberbank.ru/api/v1/chat/completions", СтруктураДанных, Новый Структура("Аутентификация,Заголовки", Аутентификация, Заголовки));
	Ответ = Результат["choices"][0]["message"]["content"];
КонецПроцедуры

 

upd:

Добавлен диалог с DeepSeek

 

Проплатить токены так:


Прилагаю пример:

&НаСервере
Процедура СпроситьИИНаСервере()

	ИДФайла = Ответ;
	Аутентификация = КоннекторHTTP.НоваяАутентификацияBearer("<API key DeepSeek>");
	Заголовки = Новый Соответствие;
	
	// Определение структуры
	СтруктураДанных = Новый Структура;
	СтруктураДанных.Вставить("model", "deepseek-chat");
	
	Сообщения = Новый Массив;
	
	СообщениеПользователя = Новый Структура;
	СообщениеПользователя.Вставить("role", "system");
	СообщениеПользователя.Вставить("content", "Ты отвечаешь как маргинал, быдло и интернет тролль.");  
	
	Сообщения.Add(СообщениеПользователя);

	СообщениеПользователя = Новый Структура;
	СообщениеПользователя.Вставить("role", "user");
	СообщениеПользователя.Вставить("content", ВопросИИ);  
	
	Сообщения.Add(СообщениеПользователя);
	
	СтруктураДанных.Вставить("messages", Сообщения);
	СтруктураДанных.Вставить("stream", false);
	// Теперь структура готова к использованию	
	
	Результат = КоннекторHTTP.PostJSON("https://api.deepseek.com/chat/completions", СтруктураДанных, Новый Структура("Аутентификация,Заголовки", Аутентификация, Заголовки));
	Ответ = Результат["choices"][0]["message"]["content"];
КонецПроцедуры

 

 

 

 

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

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

См. также

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

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

5000 руб.

08.11.2023    3665    15    0    

25

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

Все пишут, какой умный о3 от openAI, как он прекрасно разбирается в логике и какой у него замечательный механизм рассуждения. Проверим это на примитивных задачах 1С. Мы знаем, что буржуйский зверь не учили на нормальных данных по 1С и, следовательно, он толком ничего не умеет, но при этом он неплохо ищет в интернете, так вот заценим, сможет ли он скомпилировать что-то рабочее из того, что он там в интернетах найдет.

вчера в 17:00    899    IncomeGroup    6    

2

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

Расширение, которое подходит для любой конфигурации на платформе 1С:Предприятие 8.3 и позволяет встроить в экранные формы механизм заполнения текстовых полей при помощи DeepSeek. Методы по работе с нейросетью вынесены в отдельный модуль. Благодаря этому их легко использовать для реализации собственных схем применения DeepSeek в 1С.

2 стартмани

30.04.2025    1639    5    impro_otr    6    

22

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

Недавно в сервисе MAKER-STUDIO появился ИИ ассистент, разработчики также обещают, что ИИ ассистент будет добавлен и в встроенный текстовый редактор, что ускорит написание документации по проекту, а также ИИ ассистент научиться генерировать схемы и формы. Пока поделимся тем, какие функции уже есть, приведем примеры наиболее востребованных на наш взгляд ПРОМТОВ, которые могут пригодиться в работе.

12.04.2025    4901    1Concept    0    

6

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

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

09.04.2025    4322    Dziden    65    

0

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

Если вы раздумываете, какую бы среду разработки освоить в дополнение к старому доброму Конфигуратору, тогда для вас самое время посмотреть на этот редактор.

09.04.2025    2846    43    mkalimulin    17    

22

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

Быстро разбирайтесь в логике отчетов (ERF) и обработок (EPF) 1С с помощью AI! Расширение анализирует код, позволяя задавать вопросы и получать понятные объяснения о работе объекта на естественном языке.

3 стартмани

07.04.2025    6097    40    vanya_gonchar    20    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. akR00b 24 15.04.25 09:04 Сейчас в теме
за юмор + ) какой тариф за сие использование? и вообще есть ограничения?
4. qazaz2 17 21.04.25 11:04 Сейчас в теме
Приветствую,
По ссылке https://github.com/vbondarevsky/Connector скачал расширение. Появился общий модуль БОНД_Коннектор.
Скачал обработку. В обработке обращение к КоннекторHTTP, которого вроде как нет.
В БОНД_Коннектор например метода НоваяАутентификацияBearer нет.
Что я делаю не так?
5. exitone 3 21.04.25 14:15 Сейчас в теме
Я использовал этот модуль
Возможно разработка на гитхабе ушла вперед(или назад)
Прикрепленные файлы:
Общий модуль КоннекторHTTP_ Модуль.txt
8. qazaz2 17 21.04.25 22:34 Сейчас в теме
9. qazaz2 17 22.04.25 12:18 Сейчас в теме
Добавил общий модуль КоннекторHTTP.
Синтаксические ошибки из обработки ушли.
Вставил свой <Authorization key>.
В отладке вижу что токен получаю.
Но СпроситьИИ возвращает "message" - "Internal Server Error" и "status" - 500
Что я делаю не так?
11. exitone 3 22.04.25 12:28 Сейчас в теме
(9)
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("model", "GigaChat-2-preview");

Вот тут попробуйте модель
СтруктураДанных.Вставить("model", "GigaChat");
12. exitone 3 22.04.25 12:33 Сейчас в теме
(9)
Заголовки.Вставить("x-client-id", "<id клиента>");
плюс сюда не забудьте id клиента
10. exitone 3 22.04.25 12:26 Сейчас в теме
Вот пример, когда на основе загруженного pdf файла, GigaChat выписывает в столбик все найденные в файле id

СообщениеПользователя = Новый Структура;
СообщениеПользователя.Вставить("role", "user");
СообщениеПользователя.Вставить("content", "Выпиши все значения id в документе в столбик. Отвечай на основе приложенного документа");
СообщениеПользователя.Вставить("attachments", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИДФайла));
13. qazaz2 17 22.04.25 13:16 Сейчас в теме
14. qazaz2 17 22.04.25 15:58 Сейчас в теме
Заработало, дело было в "id клиента",
спасибо.
Оставьте свое сообщение