Перейти к содержанию

brain.output — Слой вывода

Формирование ответов, валидация, построение трейсов. Аналог речевых центров.


DialogueResponder

Генерация текстовых ответов на основе шаблонов (без LLM).

DialogueResponder

DialogueResponder(trace_builder: Optional[OutputTraceBuilder] = None)

Формирователь текстового ответа.

Только рендерит шаблон по 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

ResponseValidator(max_length: int = MAX_RESPONSE_LENGTH, hedge_confidence_threshold: float = 0.6)

Валидатор ответа перед отправкой.

Проверки (в порядке приоритета): 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

validate(result: CognitiveResult) -> ValidationResult

Валидировать 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

build(result: CognitiveResult) -> ExplainabilityTrace

Конвертировать CognitiveResult → ExplainabilityTrace.

Извлекает данные из CognitiveResult.metadata, trace, memory_refs.

to_digest

to_digest(trace: ExplainabilityTrace) -> str

Форматировать ExplainabilityTrace в человекочитаемый digest.

Формат

Cycle Query: "" Reasoning: [] Memory used: Confidence: () Action: Duration: ms

to_json

to_json(trace: ExplainabilityTrace) -> Dict[str, Any]

Конвертировать ExplainabilityTrace в machine-readable dict.

Использует to_dict() из ContractMixin + добавляет вычисляемые поля.