Технічна демонстрація · Як ШІ читає час
Повний огляд трьохетапного процесу витягування, розпізнавання норвезьких форматів дат, схеми класифікації подій, потокового оновлення SSE та завантаження у форматі Word.
Архітектура
Процес навмисно послідовний — Етап 1 базується на правилах і майже миттєвий; Етап 2 — витягування LLM; Етап 3 обробляє та оцінює вихідні дані.
Детермінований етап зіставлення шаблонів виконується перед будь-яким викликом LLM. Він сканує весь вхід на наявність дат, що відповідають 12+ норвезьким форматам, і нормалізує їх до ISO 8601:
dd.mm.yyyy → YYYY-MM-DDНормалізовані якорі вводяться в запит LLM, щоб зменшити випадкові або неправильно прочитані дати.
LLM читає повний документ разом з попередніми якорями. Для кожного тимчасового посилання він повертає структурований об'єкт події JSON:
date — resolved ISO date, or verbatim string if unresolvabledate_type — absolute | relative | recurring | conditional | periodconfidence — high | medium | lowactor — attributed entity (from source text, not inferred)description — one-sentence event summarysource_excerpt — verbatim text fragment (max 200 chars)Запит чітко інструктує модель не вигадувати дати або акторів, які не присутні в джерелі. Температура встановлена на 0.1 для детермінованого виходу.
PHP застосовує всі активні фільтри перед поверненням результату:
Постобробник потім збирає список what_remains_uncertain та рекомендацію next_practical_step.
Визнання дати
Норвезькі юридичні документи використовують широкий спектр позначень дати. Попередній прохід Pass 1 розпізнає всі ці дати детерміновано; LLM обробляє решту в Pass 2.
| Формат | Приклад | Примітки |
|---|---|---|
dd.mm.yyyy |
30.07.2015 | Стандартний норвезький числовий |
dd.mm.yy |
09.04.25 | Дворічний рік → завжди 20YY |
d. månedsnavn yyyy |
3. mars 2024 | Написаний місяць у bokmål/nynorsk |
d. månedsnavn |
15. januar | Рік, виведений шляхом сканування близькості |
yyyy-mm-dd |
2024-03-12 | ISO 8601 |
månedsnavn yyyy |
mars 2024 | Тільки місяць + рік |
yyyy |
2024 | Посилання тільки на рік |
| Season + year | høsten 2023 | Сезонне посилання → Q3/Q4 |
| Diary-format line | 18.09.2025: Møte avholdt | Дата + двокрапка → автоматично позначена як подія |
| Relative reference | tre uker etter vedtaket | Закріплена за найближчою вирішеною подією |
| Recurring pattern | hver mandag | Класифікована як повторювана |
| Period / range | fra mars til juni 2024 | Видає start_date + end_date |
Схема класифікації
| date_type | Визначення | Приклад |
|---|---|---|
absolute |
Конкретна, вирішувана календарна дата | 30.07.2015 → 2015-07-30 |
relative |
Дата, виражена відносно іншої події | tre uker etter vedtaket |
recurring |
Шаблон, що повторюється за розкладом | each Monday, every 6 months |
conditional |
Дата, що залежить від виконання умови | if no response within 14 days |
period |
Діапазон дат або тривалість з початком і закінченням | fra mars til juni 2024 |
| впевненість | Значення | Візуалізація в хронології |
|---|---|---|
high |
Дата чітко і однозначно вказана в вихідному тексті | Зелений значок |
medium |
Дата виведена, приблизна або вказана з невеликою неоднозначністю | Помаранчевий значок |
low |
Дата має на увазі, без дати або витягнута з зіпсованого/неоднозначного уривка | Сірий значок |
| Правило | Приклад |
|---|---|
| Названа сутність в одному реченні | “Trude [saksbehandler] ringte 14. mars” → actor: Trude |
| Мітка ролі без імені | “Barnevernet fattet vedtak” → actor: Barnevernet |
| Немає чіткої атрибуції в реченні | actor: [unattributed] |
| За замовчуванням на рівні документа | Якщо немає актора для кожної події, за замовчуванням використовується відправник/видавець документа |
Двигуни
Обидва двигуни повертають однакову JSON-схему — пост-обробник обробляє їх однаково. Вибір двигуна впливає лише на швидкість, якість і вартість кредитів.
| Engine | Модель | Затримка | Найкраще для |
|---|---|---|---|
| Azure gpt-4o-mini ★ | gpt-4o-mini (Azure West Europe) |
~15 s | За замовчуванням. Швидко, економічно, добре обробляє більшість юридичних документів. |
| Azure gpt-4o | gpt-4o (Azure West Europe) |
~45 s | Складні документи, перекриття подій, текст джерела низької якості або щільний. |
Живі оновлення та експорт
Хронологія використовує Server-Sent Events (SSE) для потокової передачі живих повідомлень про стан у браузер під час виконання вилучення. Замість того, щоб дивитися на індикатор завантаження 30–60 секунд, ви бачите «Підготовка документа…», «Виклик gpt-4o-mini…», «Аналіз подій…» у режимі реального часу.
Після завершення вилучення натисніть «Експортувати до Word», щоб завантажити відформатований .docx з кожною подією як позначеним абзацом, цитатами з джерел і роздільником між подіями.
Конфіденційність та безпека
Конфіденційність за дизайном
gpt-4o, gpt-4o-mini) налаштовано на регіоні Західна Європа. Дані, оброблені через Azure OpenAI, не використовуються для навчання моделі за умовами стандартної корпоративної угоди.Безкоштовно для членів Do Better Norge. Усі механізми доступні для кожного члена.