Команда, которая делает ИИ-продукт для российского рынка, первый месяц тратит на что угодно, только не на сам продукт.
К API модели нужна карта, которой можно заплатить. Реестр контейнеров, куда хочет ходить деплой-инструмент, недоступен. Terraform-реестр отвечает Content not available in your region. Объектное хранилище, на которое вы рассчитывали, выставляет счёт в валюте, которую бухгалтерия не отправит. Ничего из этого не сложно. Просто это месяц.
Последние несколько недель мы этот месяц убирали — в первую очередь потому, что нам самим он мешал. Дальше — что работает сейчас.
Деплой едет в Yandex Cloud
В sc появился провайдер Yandex Cloud: доступ по сервисному аккаунту, состояние Pulumi в Object Storage, Serverless Containers как вычислительная единица, бакеты, DNS, секреты из Lockbox и таймерные триггеры. Те же файлы стека, что описывают развёртывание в AWS, описывают развёртывание в YC — меняется тип шаблона.
Инженерная часть за этой фразой оказалась не такой аккуратной, как сама фраза. Оба Terraform-реестра недоступны из России, то есть удобный путь Pulumi — забрать провайдер из реестра на сборке — не работает ровно в тех сетях, ради которых всё и затевалось. Поэтому мы держим собственный мост, который тянется с GitHub, а он доступен. Чтобы получить провайдер целиком, а не половину, пришлось сшить два Terraform-провайдера через мультиплексор: 88 ресурсов превратились в 268. Подробный разбор — в блоге Simple Container (на английском), вместе с тремя багами, которые нашёл живой деплой и не нашло бы никакое чтение исходников.
Самое простое доказательство, которое мы можем предъявить: русская версия этого сайта, simple-forge.ru
, отдаётся из Yandex Cloud Object Storage через CDN — со своим доменом, своим сертификатом и своей картой сайта, а не языковым разделом внутри .com.
Модели: GigaChat и Yandex AI Studio на общих правах
Оба провайдера работают в шлюзе в проде, рядом с Anthropic, OpenAI, Google и остальными.
Ключевое слово здесь — «рядом». Это не отдельная интеграция, под которую надо писать отдельный код. Запрос уходит в GigaChat или в Yandex AI Studio ровно так же, как в любого другого: тот же выбор провайдера, тот же автоматический фолбэк, если один из них нездоров, тот же учёт по организациям, то же логирование исходящих. Если российская модель недоступна, запрос уйдёт туда, что организации разрешено, — а если нужно наоборот, запрос можно закрепить за одним провайдером, и никуда он оттуда не уедет.
Дорога туда была в основном долгим спором про историю диалога. GigaChat отвечает 422 на параллельные вызовы инструментов и на результаты, которые не являются JSON, а инструменты принимает в старом формате functions, а не в нынешнем. У Yandex AI Studio окно контекста уже, чем у моделей, с которыми его по привычке сравнивают, и часть сочетаний вызовов инструментов он отклоняет. И то и другое теперь разбирается в шлюзе, а не у вас в промпте, — там этому и место.
С речью мы чуть позади: коннекторы к Yandex SpeechKit и Sber SaluteSpeech написаны и прошли смоук-тесты, но до той же отметки «в проде», что у двух текстовых провайдеров, ещё не доведены. Лучше сказать так, чем округлить в свою пользу.
Сайты, которые публикуют ваши клиенты, в облаке, за которое можно заплатить
У одного из наших партнёров есть продукт, где его клиенты описывают сайт и получают живой HTTPS-адрес. Весь этот путь — бакет, статический хостинг, CDN с сертификатом, DNS-запись — работает в Yandex Cloud, в проде, сегодня. Клиенты партнёра не видят консоль облака, не вставляют руками DNS-записи и не видят нашего имени.
Про устройство этой функции мы писали месяц назад . Новое здесь — облако под ней, в котором российская компания может завести аккаунт и оплатить счёт.
И, честно говоря, это пока единственный написанный облачный адаптер для такого сценария. Сам процесс к нему не привязан, но остальные адаптеры ещё не сделаны, и узнать об этом лучше сейчас, а не на второй неделе.
Компромисс, который стоит заложить в план
Интересный вопрос не в доступности. Он в задержках.
Мы их померили, а не прикинули: от YC ru-central1 до управляемого кластера MongoDB в eu-central-1 полный обмен по прогретому соединению занимает p50 ≈ 45 мс, а установка холодного TCP+TLS — ≈ 146 мс. Для сервиса, у которого горячий путь — объектное хранилище, а база держит метаданные, это нормально. Для сервиса, который делает двадцать последовательных запросов на каждый вызов, — нет. Решение принимается по каждому сервису отдельно, но теперь это число, а не ощущение.
О чём мы не говорим
Здесь мог бы быть абзац про то, где физически лежат данные и каким российским нормам это соответствует. Мы его не напишем.
Мы точно скажем, где данные лежат: какое облако, какой регион, какой бакет. Мы не скажем, какому закону это соответствует, — потому что ответ зависит от ваших данных и ваших клиентов, и его должен давать ваш юрист. Вендорский пост, который отвечает на этот вопрос за вас, делает вам не одолжение, а медвежью услугу.
Что дальше
Провайдер выпущен и от начала до конца проверен на реальной папке в YC. Следующими туда переезжают наши собственные сервисы, начиная с объектного хранилища. Русская версия этого сайта там уже живёт.
Если вы делаете что-то для этого рынка и хоть один пункт выше стоил бы вам месяца — расскажите, что вы строите
. А если нужно собрать продукт, в который клиенты входят под своим аккаунтом, — с ассистентом и счётом, и всё это под вашим именем, — инструмент для этого называется Atrium
, и для российского сегмента у него есть зеркало: порталы открываются на atriumdev.ru.