brain.output — Слой вывода¶
Формирование ответов, валидация, построение трейсов. Аналог речевых центров.
DialogueResponder¶
Генерация текстовых ответов на основе шаблонов (без LLM).
DialogueResponder
¶
Формирователь текстового ответа.
Только рендерит шаблон по ActionType — не принимает решений. ActionSelector решает тип → DialogueResponder рендерит текст.
MVP Limitation
Текущая реализация использует шаблонный рендеринг (template-based) с фиксированными hedging phrases и fallback templates. Ответы формируются из CognitiveResult.response + confidence-based hedging. Нет генерации свободного текста — только подстановка шаблонов.
TODO (Stage H+): Добавить LLM Bridge для генерации естественного языка. - Интеграция с внешним LLM API (OpenAI / local LLM) для свободной генерации - DialogueResponder.generate() → LLMBridge.render() fallback → template - Контроль hallucination через ResponseValidator - Бюджет токенов через ResourceMonitor См. docs/layers/07_output_layer.md для деталей архитектуры.
Использование
responder = DialogueResponder() output = responder.generate(cognitive_result, validation, trace)
ResponseValidator¶
Валидация ответов: логическая консистентность, длина, формат.
ResponseValidator
¶
Валидатор ответа перед отправкой.
Проверки (в порядке приоритета): 1. Пустой ответ → CRITICAL, автокоррекция (fallback message) 2. Low confidence без hedge → WARNING, автокоррекция (добавить hedge) 3. Слишком длинный (>2000) → WARNING, автокоррекция (обрезать) 4. Language mismatch → INFO, только флаг (без автокоррекции)
Использование
validator = ResponseValidator() result = validator.validate(cognitive_result)
result.corrected_response — исправленный ответ¶
result.issues — список проблем¶
validate
¶
Валидировать CognitiveResult и вернуть ValidationResult.
Применяет проверки последовательно. Автокоррекции кумулятивны.
OutputTraceBuilder¶
Построение explainability-trace для output layer.
OutputTraceBuilder
¶
Построитель объяснимого trace из CognitiveResult.
Использование
builder = OutputTraceBuilder() trace = builder.build(cognitive_result) digest = builder.to_digest(trace) data = builder.to_json(trace)
build
¶
Конвертировать CognitiveResult → ExplainabilityTrace.
Извлекает данные из CognitiveResult.metadata, trace, memory_refs.
to_digest
¶
Форматировать ExplainabilityTrace в человекочитаемый digest.
Формат
Cycle
to_json
¶
Конвертировать ExplainabilityTrace в machine-readable dict.
Использует to_dict() из ContractMixin + добавляет вычисляемые поля.