Таймаут — одна из самых частых проблем при переходе от тестов к продакшену. Короткий запрос отвечает за секунды, а длинный ответ, большой RAG-контекст или reasoning-модель могут генерировать минуту и дольше. Обрыв может произойти в одном из трёх мест: в вашем HTTP-клиенте, в прокси между клиентом и сервером или на стороне Heli. Важно понять, где именно.
Где обрывается запрос
- Клиент: openai.APITimeoutError в Python или ошибка таймаута в Node.js. Официальные SDK по умолчанию ждут до 10 минут и повторяют запрос после таймаута ещё два раза — итоговое ожидание может быть втрое дольше.
- Ваш reverse proxy: nginx по умолчанию ждёт ответа upstream 60 секунд (proxy_read_timeout), Cloudflare обрывает проксируемый запрос примерно через 100 секунд с ошибкой 524.
- Heli: если модель не ответила за отведённое время в запросе без стриминга, Heli вернёт 504 с сообщением «The model did not respond in time. Модель не ответила вовремя.»
Настройка таймаута в SDK
Подбирайте таймаут под сценарий: для чата с короткими ответами хватает десятков секунд, для генерации длинных документов — несколько минут. Слишком большой таймаут в синхронном API держит соединения и воркеры занятыми.
# Python
from openai import OpenAI
client = OpenAI(
base_url="https://getheli.ru/v1",
api_key=os.environ["HELI_API_KEY"],
timeout=90.0, # секунды на запрос
max_retries=1,
)
# отдельный таймаут для одного запроса
client.with_options(timeout=300.0).chat.completions.create(...)
// Node.js
const client = new OpenAI({
baseURL: "https://getheli.ru/v1",
apiKey: process.env.HELI_API_KEY,
timeout: 90 * 1000, // миллисекунды
maxRetries: 1,
});Streaming вместо долгого ожидания
Для длинных ответов включайте stream: true. Первые токены приходят через секунды, соединение не простаивает, и пользователь видит прогресс. В режиме стриминга Heli допускает гораздо более долгие ответы, чем в обычном запросе. Если между клиентом и сервером есть nginx, отключите буферизацию (proxy_buffering off) и увеличьте proxy_read_timeout для маршрута со стримингом.
Как сократить время ответа
- Задайте max_tokens: модель не будет генерировать больше нужного.
- Сократите контекст: в RAG передавайте несколько релевантных фрагментов, а не весь документ.
- Reasoning-модели долго думают перед первым токеном; для простых задач берите быструю модель.
- Длинные задачи выносите в фоновые задачи с очередью и отдавайте результат асинхронно.
Gemini 3.5 Flash — быстрые ответы.
Как отличить источник таймаута
- APITimeoutError или ETIMEDOUT без HTTP-статуса — сработал таймаут вашего клиента.
- 504 с JSON-ошибкой type server_error — ответ Heli: модель не успела ответить.
- HTML-страница 504 Gateway Time-out или 524 — оборвал ваш nginx, балансировщик или Cloudflare.
Попробуйте Heli
Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.