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 і не змінює налаштування інших операторів або звичайні запити.
Обробка відповіді
- Для задачі вибирається профіль температури та ліміт токенів.
- Запит вимагає структурований JSON. Якщо OpenAI не підтримує потрібну strict-схему, клієнт використовує JSON Object mode.
- Відповідь завжди проходить відновлення допустимого JSON, серверну перевірку структури та бізнес-перевірки.
- Невдалий запит повторюється в межах
LEGEND_V2_AI_ATTEMPTS. - Для запуску з Legend Lab зберігаються модель, токени, час, вартість і причина помилки кожної спроби.
- Після остаточної помилки операція завершується без зміни поточних даних.
Числа
- Таймаут за замовчуванням:
120с. - Кількість спроб за замовчуванням:
2, допустимий діапазон — від1до3.
Нюанси
OPENROUTER_API_KEYобов’язковий для генеративних етапів.- Для Anchors і Facts поле
scaleManifestationsмає довільні ключі. OpenAI strict schema не підтримує такий словник, тому для цих запитів через OpenAI використовується JSON Object mode. Формат даних і серверна перевірка не змінюються. - Текстові заглушки відсутні: система не змішує локальні шаблони з результатами моделі.
- Уже завершена частина етапу зберігається до помилки, тому повтор не починає весь етап заново.
- HTTP-помилка, перевищення часу очікування, неповний JSON або невідповідність схемі повертаються як помилка операції з поясненням причини.
- Для вартості спочатку використовується сума, яку повернув OpenRouter. Розрахунок за ціною моделі потрібен лише тоді, коли OpenRouter не повернув суму.
- Токени reasoning уже входять у вихідні токени. У звіті вони показані окремо для аналізу, але не додаються до вартості вдруге.
- Детальний журнал запитів заповнюється тільки маршрутами Legend Lab. Звичайні маршрути й далі використовують моделі з налаштувань сервера.