Редактор получил гладкую статью о новой функции продукта. В тексте были правильные кнопки, но функция ещё не вышла. Модель нашла название в черновике релиз-нота и превратила будущее время в настоящее.
Проверяют утверждения, а не впечатление
Генерацию отделяют от проверки. Сначала система собирает разрешённые источники и делает черновик с ссылками. Затем извлекает атомарные проверяемые утверждения. Для каждого ищет подтверждение, фиксирует статус и только после этого собирает публикацию.
class Claim(BaseModel):
text: str
source_ids: list[str]
status: Literal["supported", "contradicted", "missing"]
async def fact_check(draft, corpus):
claims = await extract_claims(draft)
checked = []
for claim in claims:
evidence = await retrieve(claim.text, corpus=corpus)
checked.append(await judge_claim(claim, evidence))
return checkedJudge не получает задачу «оцени статью». Он сравнивает одно утверждение с конкретными фрагментами. Ссылки валидируются сервером, даты источников учитываются. Числа, цитаты, юридические обещания и статус доступности требуют редактора даже при найденном подтверждении.
brief -> approved corpus -> outline -> draft with citations
-> claim extraction -> evidence check -> editorial review
-> publish immutable revision -> monitor correctionsFailure modes
Два сайта перепечатали одну ошибку, и количество ссылок выглядит как независимое подтверждение. Источник устарел. Модель приписала вывод источнику, который сообщает только исходные числа. После фактчека редактор изменил абзац, но проверку повторно не запустил. Поэтому проверяем именно финальный hash публикации и храним происхождение источников.
Правило: опубликованным считается текст конкретной ревизии, где каждое существенное утверждение имеет проверяемый статус и владельца решения.
Практикум 52.1
Возьмите статью с двадцатью фактами. Разметьте атомарные claims и допустимые источники. Постройте pipeline, который блокирует публикацию при contradicted и отправляет missing редактору. После успешной проверки измените одно число и убедитесь, что прежний approval больше не действует.