RussiaAPI

Техническое руководство

Интеграция OpenAI API с 1С через серверный прокси

OpenAI API для 1С через серверный прокси — безопаснее, чем встраивать секрет или внешний URL в обработку клиента. В такой схеме расширение 1С вызывает только внутренний HTTP-сервис вашей компании. Сервис аутентифицирует технического пользователя, связывает запрос с организацией и разрешённой бизнес-операцией, ограничивает размер данных, а затем делает документированный server-side вызов через RussiaAPI. Термин «OpenAI API» здесь описывает распространённый поисковый запрос и возможную форму интеграции, а не официальный аккаунт или связь RussiaAPI с OpenAI. До запуска команда проверяет текущие маршруты, модели и условия обработки в собственном контуре.

Опубликовано 17 сентября 2026 · 10 минут чтения · Ключевой запрос: OpenAI API для 1С серверный прокси интеграция

Короткий ответ: 1С не должна знать ключ gateway

Ключ API нельзя хранить в общем модуле, конфигурационном файле клиента, внешней обработке или журнале 1С. Даже если доступ к форме ограничен, пользователь с правами на рабочее место, резервную копию или отладку может получить строку соединения. Расширение должно знать только адрес внутреннего proxy и собственный способ аутентификации, например короткоживущий служебный токен, выпущенный вашим сервером. Сам proxy получает RUSSIAAPI_API_KEY из защищённого окружения и никогда не возвращает его в ответе, ошибке или трассировке.

Отдельная граница полезна и для смены поставщика. Код 1С передаёт бизнес-намерение: «сделай черновик описания номенклатуры» или «классифицируй обезличенный комментарий», а не произвольный JSON, model ID и base URL. Сервер сопоставляет намерение с разрешённым адаптером. Поэтому обновление модели, SDK или формата проходит через тесты proxy, а не через одновременное изменение десятков клиентских установок. Такая архитектура не гарантирует качество ответа; она уменьшает число мест, где могут утечь секреты или появиться неучтённые вызовы.

Определите узкий контракт между 1С и proxy

Начните с одного короткого метода и явной схемы: operation, object_id, text и request_id. Не принимайте от 1С поля api_key, authorization, provider, model, URL, limit или роль пользователя как достоверные. Сервис получает организацию и права из своего контекста, а object_id перепроверяет в разрешённой системе. Поле text ограничивается длиной, типом и допустимой задачей. Если нужно использовать карточку товара или документ, server-side слой сам загружает разрешённые данные; клиент не должен присылать полный архив, выгрузку базы или персональные реквизиты «на всякий случай».

Версионируйте контракт, например /internal/ai/v1/draft, и возвращайте стабильные статусы приложения: accepted, invalid_input, access_denied, quota_exceeded или temporary_unavailable. Не проксируйте наружу код и тело внешнего ответа без фильтрации. Полный текст supplier-ошибки, адрес маршрута, заголовки и стек могут раскрыть устройство инфраструктуры. Для сопоставления инцидента достаточно request_id, времени и безопасного класса ошибки. Если контракт меняется, сначала добавьте совместимую версию и тесты, затем переключайте расширение 1С контролируемо.

Минимизируйте данные до отправки в AI API

Интеграция с 1С часто затрагивает коммерческие, контактные и учётные данные. Proxy должен отправлять только те поля, без которых конкретная функция не работает. Для тестового черновика используйте синтетические номенклатуры и обезличенные описания. Номера телефонов, адреса, реквизиты, полные документы, пароли, токены и служебные примечания не подходят для демонстрационного prompt. Если сценарий действительно требует чувствительные данные, до запуска согласуйте минимизацию, доступ, срок хранения и договорные условия в вашей организации; эта статья не заменяет юридическую или комплаенс-проверку.

Логи proxy тоже должны быть минимальными. Записывайте идентификатор операции, tenant, версию адаптера, длительность, безопасный reason code и размер полезной нагрузки, но не исходный текст и не заголовок Authorization. При разборе инцидента добавляйте контролируемую временную диагностику только для тестового tenant и удаляйте её по политике. Доступ к журналу отделите от права запускать операцию: бухгалтер или оператор может видеть результат в 1С, но не обязательно имеет доступ к истории технических запросов всех организаций.

Поставьте лимиты, очередь и проверку результата

Ограничение приложения — не то же самое, что лимит внешнего сервиса. Proxy сам считает запросы и внутренний budget по организации, виду операции и времени. Для тяжёлых задач лучше ставить очередь и возвращать operation_id, чем держать сеанс 1С в ожидании. Повтор из-за сетевой ошибки связывают с тем же request_id: для действия с побочным эффектом сначала выясняют состояние предыдущей операции, а не бесконечно создают новые. Конкретные возможности идемпотентности внешнего маршрута подтверждают в текущей документации и отдельном тесте.

Текст или JSON, полученный от модели, остаётся недоверенным вводом. Не подставляйте его сразу в проводку, SQL, команду, печатную форму или правило доступа. Сначала проверьте схему, длину, допустимые значения и связь с исходным объектом. Для операции, которая влияет на учёт, нужен человек или отдельный бизнес-процесс подтверждения. Удачный smoke test не является обещанием постоянной доступности, цены или поведения модели: наблюдайте ошибки и качество на ограниченном tenant, а при изменении контракта останавливайте rollout.

Проведите тесты до включения реального потока

Минимальный набор включает: корректный синтетический запрос, пустой и слишком длинный текст, неизвестную operation, запрос чужой организации, повтор request_id, отсутствие server-side ключа и временную недоступность adapter. Убедитесь, что ответ 1С понятен пользователю и не выдаёт конфигурацию proxy. Отдельно проверьте, что ключ не попадает в журнал 1С, access log, исключение или экспорт поддержки. Синтаксис серверного примера ниже можно проверить локально; фактический route и model ID подставляют только после сверки с каталогом RussiaAPI.

Запускайте пилот на test tenant с небольшим числом операторов и заранее определённым отключением. Измеряйте долю отклонённых запросов, задержку, повторные вызовы, валидность результата и расходы по внутреннему счётчику. Если качество или договорные условия не соответствуют сценарию, выключите операцию через feature flag, сохраните безопасные технические идентификаторы и вернитесь к прежнему ручному процессу. RussiaAPI — сторонний gateway; ваша команда отвечает за права пользователя, данные, бизнес-решение и корректность действий в 1С.

Server-side пример

Пример показывает локальную проверку или контроллер на сервере. Ключи берутся только из окружения; до запуска подтвердите маршрут, model ID и параметры в текущем каталоге RussiaAPI.

import http from 'node:http';

const allowedOperations = new Set(['draft_product_text']);
const key = process.env.RUSSIAAPI_API_KEY;

http.createServer(async (req, res) => {
  if (req.method !== 'POST' || req.url !== '/internal/ai/v1/draft') return res.writeHead(404).end();
  const chunks = []; for await (const chunk of req) chunks.push(chunk);
  const body = JSON.parse(Buffer.concat(chunks).toString('utf8'));
  if (!key || !allowedOperations.has(body.operation) || typeof body.text !== 'string' || body.text.length > 2000) {
    return res.writeHead(400, {'content-type':'application/json'}).end(JSON.stringify({state:'invalid_input'}));
  }
  // Authenticate the 1C technical user and load tenant policy before this call.
  // Use only a documented RussiaAPI route and a server-side timeout in production.
  return res.end(JSON.stringify({state:'accepted', request_id: body.request_id ?? crypto.randomUUID()}));
}).listen(8080);

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

Проверьте сценарий в RussiaAPI

Создайте собственный тестовый ключ в консоли, сверьте текущий каталог моделей и выполните обезличенный server-side smoke test. Расширяйте нагрузку и доступ только после измеримой проверки.

Открыть консоль RussiaAPI · Документы · Каталог моделей

FAQ

Можно ли записать ключ RussiaAPI в конфигурацию 1С?

Нет. Ключ хранится только в секретном окружении server-side proxy. Клиент или расширение 1С обращается к вашему внутреннему endpoint с собственной аутентификацией и не получает ключ, внешний URL или полный ответ поставщика.

Нужно ли отправлять в proxy весь документ 1С?

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

Можно ли автоматически применять текст модели в учёте?

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

Читайте также