openrouter

OpenRouter

src/modules/legend-v2/ai — виконує структуровані LLM-запити через OpenRouter.

Legend V2 викликає https://openrouter.ai/api/v1/chat/completions для генерації, точкового виправлення, змістової перевірки та фінальної редактури.

У звичайному режимі базова модель задається через OPENROUTER_MODEL. Для фінальної редактури можна окремо задати LEGEND_V2_EDITORIAL_MODEL, а для змістових перевірок — LEGEND_V2_QUALITY_MODEL.

У тестовому Legend Lab модель можна вибрати окремо для кожного етапу. Модель перевірок також вибирається окремо. Цей вибір діє тільки для поточного запуску в Lab і не змінює налаштування інших операторів або звичайні запити.

Обробка відповіді

  1. Для задачі вибирається профіль температури та ліміт токенів.
  2. Запит вимагає структурований JSON. Якщо OpenAI не підтримує потрібну strict-схему, клієнт використовує JSON Object mode.
  3. Відповідь завжди проходить відновлення допустимого JSON, серверну перевірку структури та бізнес-перевірки.
  4. Невдалий запит повторюється в межах LEGEND_V2_AI_ATTEMPTS.
  5. Для запуску з Legend Lab зберігаються модель, токени, час, вартість і причина помилки кожної спроби.
  6. Після остаточної помилки операція завершується без зміни поточних даних.

Числа

  • Таймаут за замовчуванням: 120 с.
  • Кількість спроб за замовчуванням: 2, допустимий діапазон — від 1 до 3.

Нюанси

  • OPENROUTER_API_KEY обов’язковий для генеративних етапів.
  • Для Anchors і Facts поле scaleManifestations має довільні ключі. OpenAI strict schema не підтримує такий словник, тому для цих запитів через OpenAI використовується JSON Object mode. Формат даних і серверна перевірка не змінюються.
  • Текстові заглушки відсутні: система не змішує локальні шаблони з результатами моделі.
  • Уже завершена частина етапу зберігається до помилки, тому повтор не починає весь етап заново.
  • HTTP-помилка, перевищення часу очікування, неповний JSON або невідповідність схемі повертаються як помилка операції з поясненням причини.
  • Для вартості спочатку використовується сума, яку повернув OpenRouter. Розрахунок за ціною моделі потрібен лише тоді, коли OpenRouter не повернув суму.
  • Токени reasoning уже входять у вихідні токени. У звіті вони показані окремо для аналізу, але не додаються до вартості вдруге.
  • Детальний журнал запитів заповнюється тільки маршрутами Legend Lab. Звичайні маршрути й далі використовують моделі з налаштувань сервера.

Зв’язки