ТTessora Docs

AI-модуль

AIService — мультипровайдер с fallback chain и бюджет-контролем

Весь AI в проекте идёт через один сервис — src/lib/ai/service.ts. Прямые вызовы SDK провайдеров запрещены.

Использование

import { aiService } from "@/lib/ai/service";

const { result, model, cause, promptVersion } = await aiService.generate({
  type: "SCENARIO",   // SHORT_TZ | REVISION_PARSE | COMPLETENESS_CHECK | CONTENT_MAKER
  task, userId, companyId,
});

Типы генераций

ТипЧто делает
SCENARIOПолный сценарий ролика по задаче (scene plan, voiceover, чеклист продакшена)
SHORT_TZКороткое ТЗ из полного
REVISION_PARSEСтруктурирование текста правок клиента
COMPLETENESS_CHECKПроверка полноты задачи (хватает ли материалов)
CONTENT_MAKERСтруктура контент-конструктора

Fallback chain

Gemini (primary) → OpenAI (backup) → Template (детерминированный текст)
  • Провайдеры и их порядок хранятся в БД (AIProviderConfig): модель, apiKey, isPrimary, fallbackOrder, isEnabled.
  • Если провайдер падает или отключён — запрос уходит к следующему.
  • Template — последний рубеж: генерирует текст по структуре задачи без внешнего API, система никогда не остаётся без ответа.

Код провайдеров: src/lib/ai/providers/ (gemini.ts, openai.ts, template.ts, фабрика в index.ts). Промпты собираются в src/lib/ai/prompts.ts.

Бюджет

AISystemConfig задаёт месячный лимит в USD и порог (по умолчанию 80%):

  • каждый вызов пишется в AIUsageLog (токены, стоимость, кэш);
  • при достижении порога система автоматически переключается на Template;
  • повторные одинаковые запросы отдаются из кэша (по inputHash).

Admin UI — /ai

Доступ только super_admin (permission admin.manage_ai_budget):

  • добавление/редактирование провайдеров, тест соединения;
  • месячный бюджет и статус системы (последняя ошибка/успех);
  • графики usage и затрат.

API: /api/ai/config, /api/ai/providers, /api/ai/usage — см. API Reference.

On this page