Шлюз цитування: кожне число в опублікованому тексті має бути знайдене в доказах
Число в статті — це обіцянка, що воно звідкись узялося. Ми перевіряємо цю обіцянку невеликою програмою до публікації: знаходимо кожне число в тексті й вимагаємо, щоб кожне з них було в доказах. Наша перша версія вигадувала числа, яких там не було.
🎯 Для Усім, хто публікує числа, написані людьми або AI
- Чому правилу пошуку чисел потрібна ліва межа й обережне поводження з комами
- Як шлюз порівнює текст із доказами
- Справжній баг, коли перевіряч вигадав цитування
🔢 Обіцянка
Читач довіряє числу, бо воно має вигляд виміряного. Якщо число взялося з пам'яті, із здогаду моделі або з давнішого прогону, сторінка хибна й при цьому має вигляд правильної. Шлюз публікації відповідає на одне питання: для кожного числа в цьому тексті чи можемо ми вказати місце в доказах, де воно наявне символ у символ?
🐛 Баг
25 серпня 2026 наша перевірячка визнала два правдиві твердження «недостатньо доказаними», хоча кожне справжнє число в них було на місці. Причина була в шаблоні, який знаходить числа. Початковий шаблон мав дві вади.
- Немає лівої межі. Цифри всередині ідентифікатора рахувалися числами:
sha256давав256, а дата на кшталт2026-07-26давала-07і-26. - Жадібні коми. Кома приймалася всередині числа навіть тоді, коли стояла в кінці, тож фраза «sha256, markers» давала токен
256,, якого немає в жодному знімку.
Далі перевіряч шукав ці вигадані токени в доказах, не знаходив їх і відхиляв правдиві твердження.
🧪 Виправлення, запущене наживо
Ми постачаємо виправлений шаблон у невеликому модулі з єдиним визначенням того, що вважається цитатою. Він не дозволяє числу починатися всередині слова або крапкового ланцюжка й бере кому до складу числа лише тоді, коли за нею йдуть цифри. Модуль також зберігає старий шаблон для однієї мети: передбачити, які хибні цитати старий перевіряч вигадав би для тексту.
3 листопада 2026, 21:53 UTC ми запустили обидва на одному реченні: «Snapshot sha256, markers 2026-07-26 and 1,234 items, 12.5% up.»
| Шаблон | Знайдені числа |
|---|---|
| Старий (як був) | 256,, 2026, -07, -26, 1,234, 12.5% |
| Виправлений | 2026, 07, 26, 1,234, 12.5% |
Виправлений шаблон більше не вигадує 256, із хешу й не створює фрагментів дати з мінусом попереду, яких немає в жодному файлі доказів. Він усе ще розбиває дату на 2026, 07 і 26. Це нешкідливо: кожна частина наявна в доказах, якщо там є сама дата. Це й нагадування, що шлюз перевіряє наявність, а не зміст.
🧰 Як працює шлюз
- Витягніть числа й цитати з тексту. Модуль розпізнає чотири стилі лапок.
- Для кожного числа збудуйте локальні варіанти, наприклад з комою або пробілом як розділювачем тисяч.
- Шукайте літерал у файлах доказів, байт за байтом.
- Повідомте про числа, яких не знайдено, і про цитати, яких не знайдено. Будь-який такий пункт блокує публікацію.
- Окремо повідомте про числа, які вигадав би старий шаблон, щоб ви побачили ризиковане речення до того, як воно провалиться.
🛠️ Практика: додайте шлюз до своєї публікації
- Виберіть, де живуть ваші докази, наприклад тека з експортованими результатами й датами.
- Напишіть пошук чисел із лівою межею й правилом, що кома належить числу лише перед цифрами.
- Перевірте його на ідентифікаторах, датах, номерах версій, хешах і відсотках.
- Напишіть перевірку: кожне число має траплятися буквально у файлі доказів. Гучно падайте зі списком промахів.
- Додайте місце для чисел, які є визначеннями, а не вимірами, як-от «десять хвилин» у заголовку, і тримайте цей список коротким та переглянутим.
- Запускайте шлюз на кроці публікації. Невдача блокує випуск.
✅ Перевірте себе
- Вставте хеш і дату в речення. Шлюз не повідомляє про фрагмент хешу чи частини дати з мінусом, яких ніде немає.
- Змініть одну цифру справжнього числа. Шлюз падає й називає його.
- Опублікуйте текст із числом, у якому є кома. Шлюз знайде докази, якщо там записано з тією самою комою або її локальним варіантом.
- Новий колега може пояснити, чого шлюз не доводить.
🚧 Коли це не працює
- Наявність — не правда. Число може бути в доказах і бути неправильним для твердження. Шлюз перевіряє наявність, а не зміст.
- Округлені або похідні числа. Відсоток, обчислений із двох вимірів, відсутній у файлах. Зберігайте похідні числа разом з їхніми вхідними даними.
- Числа словами. «Три» не знайде шаблон цифр. Для вимірів надавайте перевагу цифрам.
- Докази, які самі хибні. Шлюз довіряє своїй теці.
- Занадто довгі списки винятків. Якщо половина чисел — винятки, шлюз нічого не означає.
📊 Докази
| Що ми виміряли | Вивід старого й виправленого шаблонів чисел на одному тестовому реченні та запис про дефект від 25 серпня 2026 |
| Коли | 3 листопада 2026, 21:53 UTC |
| Артефакт | Модуль цитат у нашому приватному репозиторії, з дефектом, описаним у його шапці, та його шлюз публікації |
| Обмеження | Одне речення демонструє різницю. Ми не публікували виміряний рівень помилок шлюзу |
➡️ Далі
Дізнайтеся, як ми позначаємо дати й джерела, у Джерела та верифікація, і чому заява про успіх не є доказом, у Судження AI.
Джерела
- Джерела, дати й що означає «перевірено»: як ми позначаємо докази.
- Судження AI: чому «воно каже, що готово» не є прийманням: перевірка тверджень.
- Чому AI-агенти вигадують і як перевірити відповідь: перевірка відповідей.
- Як редагують і публікують цю вікі: редакційний процес.
🔗 Зв'язки статті
Відкрити повний граф знань ↗Зв’язки опублікованих статей. Виберіть вузол, щоб відкрити статтю біля заголовка.
Зв’язки статей · клавіатура / текст
Та сама тема
- Векторна база — це мапа, а не джерело: що ми з'ясували про пошук
- Коли невідомо, скільки коштував виклик моделі: заморожування, потім звіряння
- Розбиття великого завдання для дешевої моделі: урок про 24 000 байтів
- Навички, інструменти MCP і правила: три способи дати агенту можливості
- Вісім помилок з shell і git, яких припускалися наші агенти, і правило для кожної
- Кілька агентів, один репозиторій: правила володіння з реальних інцидентів
Наступні кроки
Пов'язані матеріали
Векторна база — це мапа, а не джерело: що ми з'ясували про пошук
Векторна база знаходить уривки, близькі за змістом до вашого запиту. Вона не знає, які з них правдиві чи актуальні. Сприймайте кожен результат як вказівник: відкрийте названий файл, перевірте хеш і беріть числа з артефакту, а не зі знайденого абзацу.
AI agents and MCP explainedКоли невідомо, скільки коштував виклик моделі: заморожування, потім звіряння
Іноді виклик моделі перевищує час очікування, і ви не знаєте, чи провайдер списав кошти. Ніколи не записуйте це як нуль. Позначте витрату як непевну, зупиніть нові платні виклики й доручте названій людині звірити її з випискою провайдера. Виняток — відмови, що сталися до генерації.
AI agents and MCP explainedРозбиття великого завдання для дешевої моделі: урок про 24 000 байтів
Дешева модель добре дає раду з однією невеликою чітко окресленою роботою, але погано з великим нагромадженням. Ми обмежуємо завдання 24 000 байтами і відмовляємо більшим ще до виклику моделі. Діліть на одиниці — один файл або одна країна на завдання — і перевіряйте розмір до початку.
AI agents and MCP explainedНавички, інструменти MCP і правила: три способи дати агенту можливості
Агенти отримують можливості по-різному. Правило обмежує те, що вони роблять, навичка підказує, як виконати роботу, а інструмент MCP дозволяє викликати функцію. Кожен із трьох має власний ризик, тож фіксуйте всі три в реєстрі й перевіряйте тестом, що нічого не існує поза ним.
💬 Коментарі