Как тестировать OpenAI-совместимый API

Руководство для production: Как тестировать OpenAI-совместимый API. Включает детерминированный артефакт, границы отказа, контроль rollout и проверенные источники.

Руководство для production: Как тестировать OpenAI-совместимый API. Включает детерминированный артефакт, границы отказа, контроль rollout и проверенные источники.

Сначала решение

Как тестировать OpenAI-совместимый API — явный production-контракт, а не отдельное изменение. До переноса трафика задайте успех, конечный отказ и rollback; артефакт отделяет доказательства от предположений.

Начните с text, детерминированно докажите stream и сделайте errors обязательным release-gate.

Повторно используемый артефакт

Строка считается пройденной, только если доказательство относится к тому же запросу, окну теста или версии конфигурации.

Контрольная точка Доказательство Условие прохождения
text non-stream_response,finish_state,empty_and_Unicode_input Значение точно сохраняется и сравнивается на wire-границе.
stream SSE_event_order,terminal_marker,usage_placement,disconnect Запись связывает логический запрос и конкретную попытку.
tools single_and_parallel_calls,argument_schema,call_correlation Запись связывает логический запрос и конкретную попытку.
schema valid_object,refusal,truncation,unsupported_keyword Предел явный, превышение закрывает операцию.
usage input,output,cache_read/write,missing_categories Резерв, наблюдение и итог сходятся в долговечном ledger.
errors 401,403,429,499,5xx_outer_and_embedded_failures Owner, источник, дата и ограничение записаны.

Разобранный пример

Пример синтетический и детерминированный. Подставьте проверенные параметры своей нагрузки; не используйте секреты или данные клиентов.

corpus_version: 1
cases:
  - id: text/non_stream_zero_values
    request: { stream: false, temperature: 0 }
    assert: [http_status, response_shape, explicit_zero_preserved]
  - id: stream/disconnect
    action: cancel_after_first_content_delta
    assert: [client_cancelled, upstream_cancelled, terminal_state_recorded]
  - id: tools/two_calls
    assert: [stable_call_ids, arguments_validated, results_correlated]
  - id: errors/rate_limit
    assert: [status_429, retry_after_parsed, attempt_budget_respected]

Порядок внедрения

  1. Зафиксировать текущие запрос, ответ, конфигурацию и наблюдаемую базовую линию.
  2. Выполнить детерминированный положительный сценарий и сохранить полный результат.
  3. Выполнить парный отрицательный или предельный сценарий.
  4. Связать попытки одним логическим request ID и записать время, конечное состояние и usage без чувствительного содержимого.
  5. Раскатывать на ограниченную когорту с условиями остановки.
  6. Повторно прочитать долговечное состояние и публичное поведение; при нарушении инварианта выполнить rollback.

Режимы отказа

Эти ошибки обесценивают результат, даже если внешний HTTP выглядит успешным:

  • Один текстовый ответ принимается за полное доказательство совместимости.
  • Явный 0 или false теряется при сериализации.
  • Читается одно удобное поле, а типизированные outputs, tools, отказы или частичные результаты теряются.
  • Повторы без бюджета усиливают нагрузку.

Граница Modelflare

Modelflare централизует OpenAI-совместимый routing, ключи, группы, usage и ошибки, но настроенный маршрут не доказывает опциональные возможности провайдера. Проверяйте модель и канал нативным протоколом, сохраняйте явные нули и считайте истиной billing только долговечный расчет.

Общая граница решения описана в родительском руководстве, текущая настройка — в документации.

Проверка перед публикацией

  • Сначала ответить на главный вопрос.
  • Назначить owner каждому полю, состоянию, метрике и формуле.
  • Использовать только синтетические идентификаторы.
  • Сохранить структуру, код, лимиты и предупреждения во всех языках.
  • На T-1 перепроверить контракты, поддержку и цены; при изменении перенести дату.
  • До срока исключить страницу из public API, маршрутов и sitemap.

Источники и дата проверки

Источники проверены 2026-08-07; они не доказывают непроверенный маршрут.