From eb4ca780da9420143c1e9572d5b9088f2325ceb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Tue, 23 Jun 2026 00:36:21 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=20Opus=20?= =?UTF-8?q?=D1=80=D0=B0=D1=83=D0=BD=D0=B4=202=20=E2=80=94=20provenance,=20?= =?UTF-8?q?confidence,=20temporal=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/opus-answer-2.md | 83 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 History/opus-answer-2.md diff --git a/History/opus-answer-2.md b/History/opus-answer-2.md new file mode 100644 index 0000000..ea00ec2 --- /dev/null +++ b/History/opus-answer-2.md @@ -0,0 +1,83 @@ +# Opus 4.8 — Раунд 2: Практические ответы для реального проекта + +**Дата:** 2026-06-23 + +--- + +## Вопрос 1: Одна идея с максимальным преимуществом + +**Provenance с кликабельной трассировкой до исходного текста.** + +Юрист подписывается под результатом. «Добавилась услуга X за 15000» без источника — бесполезно. «Добавилась услуга X ← допник №3, п.2.4, вот абзац» → проверка за 2 секунды → реальная экономия. + +**Механика:** каждая op содержит `source_quote` (точная цитата из документа). Клик по строке → показать исходный абзац в документе. + +--- + +## Вопрос 2: Self-consistency vs logprobs + +**N=1 + self-reported confidence. Не logprobs.** + +Причины: +- logprobs на JSON шумные — не отражают уверенность в смысле +- Модель сама возвращает `confidence: 0.0-1.0` — ноль инфраструктуры +- Self-consistency 3 прогона НЕ утраивает время: прогоны одного файла независимы → параллельно ~80с, не 240с + +**Оптимальный гибрид:** N=1 по умолчанию. Для ops с `confidence < 0.7` → выборочный повторный прогон. Низко-confidence → в очередь на ручную проверку. + +--- + +## Вопрос 3: Минимальный двухслойный лог + +**Слой 1 уже есть — таблица `documents`** (original_bytes + elements_json = сырые факты). + +Минимальное: добавить в `spec_events` колонку **`source_document_id`** (FK → documents). + +Не нужно `event_type`, не нужно `parent_event_id`. Одна FK-колонка даёт: +- Двухслойное разделение +- Provenance-костяк +- Возможность ре-интерпретации новыми моделями + +--- + +## Вопрос 4: Эмбеддинги vs NFKC + +**NFKC покрывает ~90-95%. Эмбеддинги преждевременны.** + +NFKC ловит типографику (тире, пробелы, кавычки). Эмбеддинги нужны только для семантического перефраза — но в домене облачного провайдера допники копируют названия дословно. Плюс после подачи LLM `spec_current` с готовыми ID проблема матчинга почти исчезает. + +**Рекомендация:** NFKC достаточно. pgvector добавлять только при доказанных промахах. + +--- + +## Вопрос 5: Temporal UI + +**Шаговый таймлайн:** `Договор → Допник1 → Допник2 → Допник3`. + +Клик на узел = спецификация на этот момент. + +**Две ручки выбора (from/to):** diff-таблица между версиями. + +**Визуализация:** 🟢 добавлено / 🔴 удалено / 🟡 изменено с inline old→new. + +**Каждая строка кликабельна** → provenance (исходный абзац). + +**Два режима:** «Итог» (последняя vs база) и «Пошагово» (дельта каждого допника). + +--- + +## Вопрос 6: Provenance MVP — колонки + +Три колонки в `spec_events`: + +1. **`source_document_id`** FK → documents — самая важная. Костяк всего. +2. **`prompt_version`** TEXT — какая версия промпта. +3. **`raw_llm_response`** JSONB — полный ответ модели. + +Поле `source_quote` — внутри op (в raw_llm_response), не отдельная колонка. + +--- + +## Сквозная логика + +`source_document_id` + `source_quote` от LLM закрывают provenance, двухслойность и трассировку одновременно. Самый дешёвый и конкурентный ход. Temporal UI — следующий слой поверх той же истории.