Лучшие практики
Оптимизация для продакшена
Достигните минимальной задержки, максимальной пропускной способности и минимальных затрат при интеграции с TokSpan. Это паттерны, которые мы используем в собственном продакшен-стеке.
Минимизация задержки
Используйте пул соединений
Повторное использование HTTP-соединений устраняет накладные расходы на рукопожатие TLS при каждом запросе (экономия ~50–100 мс на вызов). OpenAI SDK автоматически использует пул соединений, но для продакшена настройте размер пула:
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 масштабируется горизонтально — ваш предел пропускной способности обычно определяется лимитом запросов, а не сервером:
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-вызовы в логику повторных попыток:
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, видимость цепочки рассуждений |