NODEDC_1C/llm_normalizer/docs/final_answer_composer_spec.md

2.6 KiB

Final Answer Composer Spec

1. Назначение

answerComposer преобразует нормализованные retrieval results в один user-facing ответ на русском языке.

Реализация:

  • backend/src/services/answerComposer.ts

Вход:

  • userMessage
  • routeSummary
  • retrievalResults[] (уже в unified schema)

Выход:

  • assistant_reply (текст для пользователя)
  • reply_type
  • fallback_type

2. Приоритеты ответа

Порядок разрешения:

  1. out_of_scope fallback.
  2. clarification fallback (если factual результатов нет).
  3. error, если есть только ошибки retrieval.
  4. empty, если запрос валиден, но найдено 0 результатов.
  5. partial, если есть полезные данные, но покрытие неполное.
  6. factual, если есть корректные результаты без fallback-конфликта.

3. Типы ответов

factual

  • данные найдены;
  • даётся краткий итог + компактная сводка.

empty

  • корректный запрос, но выдача пустая.

partial

  • часть вопроса обработана;
  • часть недоступна/пустая/ошибочная.

clarification

  • нужно уточнение периода/документа/счёта/контрагента.

out_of_scope

  • запрос не относится к учётному контуру компании.

error

  • техническая ошибка retrieval.

4. Контентные правила

User-facing текст:

  • только русский;
  • без route names;
  • без trace, fallback_type, planned routes;
  • без служебного planner/debug языка.

Технические детали живут только в debug payload.

5. Форматирование factual-ответа

Composer умеет кратко форматировать несколько типов retrieval:

  • chain: акцент на цепочки контрагент/документы/операции.
  • ranking: топ/ранжирование.
  • list: список записей (в т.ч. риск-объекты).
  • object/summary: компактный факт-блок.

Если результатов много, выдаётся только верхняя часть (top-N), остальное остаётся в debug payload.