Рантайм и язык — язык-агностично; всё, что умеет исходящий HTTP+JSON (Node.js, Python, PHP 7.4+, Go, Java/Kotlin, Ruby, .NET). Стандартный HTTP-клиент + JSON, SDK не нужен. UTF-8 везде (многоязычные диалоги, кириллица, CJK).
Сеть (критично) — исходящий HTTPS, порт 443 к нашему API-домену (добавьте в allowlist, если egress ограничен); рабочий DNS; TLS 1.2+ с проверкой сертификата (публичный CA — не отключайте проверку); за корпоративным прокси — HTTPS_PROXY. Входящие порты не нужны, статический IP не нужен.
Ресурсы сервера — пренебрежимо малы: один JSON-запрос на ход, ~1 исходящее соединение и несколько КБ на сообщение. LLM-инференс, каталог и векторы — на нашей стороне; GPU/RAM/диск на вашей не нужны.
Ключи и секреты — Authorization: Bearer <key>. Ключ только в env / хранилище секретов (Vault, Secrets Manager, K8s secrets); никогда в репозитории, клиентском коде, логах или URL. У sandbox и prod ключи разные.
Таймауты и устойчивость — задержка определяется LLM: 0,8–3 с (редко 5–8). Таймаут клиента ≥ 10 с. Fail-soft обязателен: при ошибке, таймауте или ad:null показывать ответ без карточки. Повтор только при сетевой ошибке/5xx, ≤ 1 раза с backoff; 429 и ad:null не повторять. Опционально передавайте IP пользователя (X-Forwarded-For) и session_id для честных лимитов.
Фронтенд / рендер карточки — evergreen-браузеры (последние 2 версии), mobile Safari 15+, Chrome Android; ES2017+, fetch. Контейнер в потоке ответа. Обязательно: видимая метка «Sponsored», rel="sponsored noopener", target="_blank". Клик только через наш /c/{token} — не переписывать, не оборачивать в свой редирект.
CSP (если включён) — connect-src: домен API; script-src: домен ads.js (режим B); img-src: CDN-домены мерчантов или https: — иначе картинки товаров не отрисуются.
Лимиты и данные — тело запроса ≤ 256 КБ (последние ~8–12 ходов); один вызов /api/chat на ход; geo в ISO alpha-2. PII не требуется. Rate-limit на ключ/IP и дневной потолок расхода действуют с первого дня — см. Доход и лимиты.
Статья помогла?
Отлично!
Спасибо за ваш отзыв
Извините, что не удалось помочь!
Спасибо за ваш отзыв
Комментарий отправлен
Мы ценим вашу помощь и постараемся исправить статью