Интеграция AI в 1С через AI Gateway: HTTP-запросы на встроенном
Как обратиться к AI из 1С:Предприятие 8: HTTP-запрос на встроенном языке к OpenAI-совместимому API AI Gateway, сериализация JSON и разбор ответа. Ключ в константе или параметрах.
1С:Предприятие умеет ходить в HTTP-сервисы штатными средствами встроенного языка — этого достаточно, чтобы обращаться к OpenAI-совместимому API AI Gateway. Соберём функцию, которая шлёт текст промпта на шлюз и возвращает ответ модели: её можно вызывать из обработки, регламентного задания или обработчика события. Модели берём из каталога.
Подготовка
Нужен ключ AI Gateway sk-aigate-… и хост ai-gatewey.ru (порт 443, HTTPS). Ключ лучше хранить в константе или параметре сеанса, а не в модуле. Обращения идут на путь /v1/chat/completions.
Реализация
- Вспомогательные функции JSON
Тело запроса и разбор ответа — через штатные
ЗаписатьJSON/ПрочитатьJSON:bslbslФункция ВJSON(Значение)Запись = Новый ЗаписьJSON;Запись.УстановитьСтроку();ЗаписатьJSON(Запись, Значение);Возврат Запись.Закрыть();КонецФункцииФункция ИзJSON(Строка)Чтение = Новый ЧтениеJSON;Чтение.УстановитьСтроку(Строка);Результат = ПрочитатьJSON(Чтение);Чтение.Закрыть();Возврат Результат;КонецФункции - Функция обращения к модели
Формируем структуру запроса, шлём
HTTPЗапроспо защищённому соединению и достаём текст ответа:bslbslФункция ЗапросКAI(ТекстПромпта) ЭкспортСообщение = Новый Структура("role, content", "user", ТекстПромпта);Сообщения = Новый Массив;Сообщения.Добавить(Сообщение);Тело = Новый Структура;Тело.Вставить("model", "deepseek/deepseek-v4-flash");Тело.Вставить("messages", Сообщения);Запрос = Новый HTTPЗапрос("/v1/chat/completions");Запрос.Заголовки.Вставить("Content-Type", "application/json");Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючAIGateway());Запрос.УстановитьТелоИзСтроки(ВJSON(Тело));Соединение = Новый HTTPСоединение("ai-gatewey.ru", 443, , , , 30,Новый ЗащищенноеСоединениеOpenSSL);Ответ = Соединение.ОтправитьДляОбработки(Запрос);Данные = ИзJSON(Ответ.ПолучитьТелоКакСтроку());Возврат Данные["choices"][0]["message"]["content"];КонецФункции - Хранение ключа
Ключ отдаём отдельной функцией — из константы или параметра сеанса, чтобы не хардкодить в бизнес-логике:
bslbslФункция КлючAIGateway()Возврат Константы.КлючAIGateway.Получить();КонецФункции - Вызов из кода
Дальше функцию можно применять где угодно — например, сформировать краткое описание номенклатуры:
bslbslОписание = ЗапросКAI("Составь краткое описание товара: " + Наименование);
Какие модели подойдут
Для типовых задач учёта (описания, классификация, черновики писем) хватает быстрой недорогой модели; сложные разборы можно направить на флагман:
Частые вопросы
Нужны ли внешние компоненты или коннекторы?
Нет. Достаточно штатных HTTPСоединение, HTTPЗапрос и объектов JSON встроенного языка — API AI Gateway обычный HTTPS с JSON, как у OpenAI. Сторонние компоненты не требуются.
Работает ли это в тонком клиенте?
HTTP-запросы выполняются на стороне сервера 1С, поэтому вызывайте функцию в серверном контексте (&НаСервере или общий серверный модуль). Так соединение с интернетом не зависит от рабочего места пользователя.
Как обработать ошибку или таймаут?
Оберните вызов в попытку (Попытка … Исключение) и проверяйте Ответ.КодСостояния: 401 — неверный ключ, 402 — исчерпана квота, пуст баланс, модель сверх тарифа или сработал лимит самого ключа (список моделей, потолок расхода, срок действия), 429 — превышен лимит RPM. Логируйте сбои и делайте повтор с паузой.