Лучшие практики

Оптимизация для продакшена

Достигните минимальной задержки, максимальной пропускной способности и минимальных затрат при интеграции с TokSpan. Это паттерны, которые мы используем в собственном продакшен-стеке.

Минимизация задержки

Используйте пул соединений

Повторное использование HTTP-соединений устраняет накладные расходы на рукопожатие TLS при каждом запросе (экономия ~50–100 мс на вызов). OpenAI SDK автоматически использует пул соединений, но для продакшена настройте размер пула:

python
import httpx
from openai import OpenAI

# Production-grade client with connection pooling
client = OpenAI(
    api_key="sk-your-key",
    base_url="https://api.tokspan.com/v1",
    http_client=httpx.Client(
        limits=httpx.Limits(
            max_keepalive_connections=20,
            max_connections=50,
        ),
        timeout=60.0,  # total timeout
    ),
)

Всегда используйте потоковую передачу для интерактивного UX

Устанавливайте stream: true для каждого пользовательского запроса. Потоковая передача доставляет первый токен примерно за 100 мс вместо ожидания 5–30 с полного ответа. См. Chat Completions — Потоковая передача для реализации.

Edge-маршрутизация (автоматически)

DNS TokSpan автоматически разрешает api.tokspan.com в ближайшее edge-расположение. Настройка не требуется. Для самостоятельного развёртывания разверните в регионе вашего приложения для сетевой задержки менее 5 мс.

Используйте кэширование промптов

Кэширование промптов может сократить время до первого токена до 80% при повторяющихся промптах. Размещайте статический контент (системные инструкции, контекст) в начале массива сообщений. Подробнее см. руководство по Prompt Caching.

Чек-лист по задержке

ОптимизацияВлияние на задержкуУсилия
Пул соединений−50–100 мс на запросНизкие
Включить потоковую передачуВоспринимаемая: −5–30 сНизкие
Кэширование промптов−80% при попадании в кэшСредние
Собственный хостинг рядом с приложением−30–80 мс RTT сетиВысокие
Используйте суффикс -fast−20–50% времени генерацииОтсутствуют

Минимизация затрат

Умный выбор модели

Не для каждой задачи нужны GPT-4o или Claude Opus. Направляйте простые задачи на более дешёвые модели:

Тип задачиРекомендуемая модельСтоимость относительно GPT-4o
Классификация, извлечение, тегированиеGPT-4o-mini, Claude Haiku, Gemini FlashВ 10–50× дешевле
Черновики, суммаризация, переводDeepSeek V3, Llama 4, Mistral Large 3В 3–10× дешевле
Сложные рассуждения, генерация кодаGPT-4o, Claude Opus 4.8Базовый уровень
Пакетная / фоновая обработкаDeepSeek V3 + суффикс -cheapВ 5–15× дешевле

Установите лимиты расходов

Настройте месячные бюджеты для каждого ключа в панели управления. Ключи автоматически отключаются при достижении лимита — никаких неожиданных счетов. Установите более низкие лимиты на ключи разработки и более жёсткие ограничения на ключи, передаваемые клиентам. См. Key Scoping.

Используйте суффиксы моделей для оптимизации затрат

Добавьте -cheap к любому имени модели для автоматической маршрутизации к самому дешёвому провайдеру этой модели. Для некритичных пакетных задач это экономит 10–30% без изменений кода.

Чек-лист по затратам

ОптимизацияВлияние на стоимостьУсилия
Направляйте простые задачи на мини-модели−70–95% на этих задачахСредние
Включите кэширование промптов−50–90% при попадании в кэшНизкие
Используйте суффикс -cheap для пакетных задач−10–30%Отсутствуют
Установите месячные бюджеты для каждого ключаЖёсткий лимит максимальных расходовНизкие
Еженедельно проверяйте панель использованияРаннее обнаружение аномалийНизкие

Максимизация пропускной способности

Асинхронность + пакетная обработка

Для массовой обработки используйте асинхронные клиенты и параллельные запросы. Инфраструктура TokSpan масштабируется горизонтально — ваш предел пропускной способности обычно определяется лимитом запросов, а не сервером:

python
import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")

async def process_batch(prompts: list):
    tasks = [
        client.chat.completions.create(
            model="gpt-4o",
            messages=[{"role": "user", "content": p}],
        )
        for p in prompts
    ]
    return await asyncio.gather(*tasks)

Рекомендации по параллельным запросам

В качестве отправной точки:

  • Pay-as-you-go: До 50 параллельных запросов (лимит 500 RPM)
  • Enterprise: Индивидуальная настройка — свяжитесь с нами для установки лимита
  • Собственный хостинг: Ограничено только вашей инфраструктурой

Отслеживайте x-ratelimit-remaining-requests в заголовках ответа для оценки запаса. Если вы регулярно достигаете 80%+ лимита, запросите повышение.

Надёжность в продакшене

Повторные попытки с экспоненциальной задержкой

Сетевые сбои и временные проблемы провайдеров случаются. Всегда оборачивайте API-вызовы в логику повторных попыток:

python
import time
import random
from openai import OpenAI, RateLimitError, APIError

def chat_with_retry(client, model, messages, max_retries=3):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(model=model, messages=messages)
        except RateLimitError:
            if attempt == max_retries - 1: raise
            # Exponential backoff with jitter
            wait = (2 ** attempt) + random.uniform(0, 1)
            time.sleep(wait)
        except APIError as e:
            if e.status_code < 500 or attempt == max_retries - 1: raise
            wait = (2 ** attempt) + random.uniform(0, 1)
            time.sleep(wait)

Настройте автоматическое переключение

Настройте цепочку переключения между провайдерами (OpenAI → Anthropic → Google) в панели управления. Если основной провайдер недоступен, трафик автоматически перенаправляется без потери запросов. См. Автоматическое переключение.

Стратегия работы с API-ключами

  • Ключ разработки: Низкий бюджет ($10/мес), ограничен дешёвыми моделями, без ограничения по IP
  • Ключ staging: Умеренный бюджет ($50/мес), набор продакшен-моделей, ограничение по IP
  • Продакшен-ключ: Повышенный бюджет, все модели, ограничение по IP продакшен-серверами

Ротируйте ключи каждые 90 дней. Используйте отдельные ключи для каждого проекта, если вы управляете несколькими проектами.

Краткий справочник: суффиксы моделей для продакшена

СуффиксОптимизируетСценарий использования
-fastМинимальная задержкаЧат в реальном времени, интерактивные приложения
-cheapМинимальная стоимостьПакетные задачи, разработка/тестирование, фоновые процессы
-highМаксимальное качествоСложные рассуждения, генерация кода, анализ
-lowБыстро + дёшевоПростые запросы, классификация
-thinkingОтладка рассужденийPrompt engineering, видимость цепочки рассуждений