← Claude на русском
Перевод с разбором · для Вани
Адаптировал Claude Opus 4.7 (ИИ) на основе документации Anthropic. Полная версия — в docs/reduce-hallucinations.html.

Снижение галлюцинаций

Адаптация для Вани · 2026-04-27

Почему это важно именно вам

Галлюцинация — это когда модель уверенно выдаёт правдоподобный, но неверный ответ: выдумывает несуществующий метод, библиотеку, неверную сигнатуру, фантомный параметр конфигурации. Anthropic в оригинале пишет про это так:

Even the most advanced language models, like Claude, can sometimes generate text that is factually incorrect or inconsistent with the given context.

То есть: даже самые продвинутые модели иногда выдают текст, который фактически неверен или не согласуется с контекстом. У вас это особенно больно: вы не пишете LLM в код, вы используете Claude Code как помощника по своему Kotlin + Ktor + JDBI + PostgreSQL + React. Когда Claude в чате уверенно предлагает «вызови OrderRepository.findActiveByDate()» — а такого метода нет, — это ровно та же галлюцинация. Только в продакшен-системе её ловят evals и фильтры, а у вас — только вы сами при ревью.

Хорошая новость: приёмы снижения галлюцинаций из этой статьи Anthropic переносятся на сценарий «помощник в коде» почти один в один. Ниже — три базовые техники из оригинала и четыре продвинутые, плюс, в конце, пример именно для вашего стека.

Базовые техники

1. Разрешите Claude сказать «не знаю»

Самая простая и самая недооценённая техника. Anthropic формулирует её так:

Allow Claude to say "I don't know": Explicitly give Claude permission to admit uncertainty. This simple technique can drastically reduce false information.

Перевод: явно дайте Claude разрешение признаваться в неуверенности — это резко сокращает количество ложной информации. Ключевая фраза — «I don't know is OK»: «не знаю» — нормальный ответ.

По умолчанию модель тренирована быть полезной и продолжать. Если вы не разрешили ей остановиться и сказать «у меня недостаточно информации» — она дополнит пробел догадкой. Особенно опасно в коде: Claude уверенно «вспомнит» сигнатуру метода, который сам же только что и придумал.

Пример из оригинала — анализ M&A-отчёта:

As our M&A advisor, analyze this report on the potential acquisition
of AcmeCo by ExampleCorp.

<report>
{{REPORT}}
</report>

Focus on financial projections, integration risks, and regulatory hurdles.
If you're unsure about any aspect or if the report lacks necessary
information, say "I don't have enough information to confidently assess
this."

Обратите внимание на последнее предложение — это и есть приём. Никакой магии: просто прямым текстом разрешили честно сказать «не хватает данных».

2. Просите дословные цитаты до выполнения задачи

Когда модель работает с длинным документом (Anthropic в оригинале говорит про >20k токенов), полезно сначала заставить её извлечь дословные цитаты, а потом уже на их основе делать вывод. Это опирается на источник (grounds in source) — ответы привязаны к реальному тексту, а не к «общему ощущению» модели от документа.

Пример из оригинала — аудит политики приватности:

As our Data Protection Officer, review this updated privacy policy for
GDPR and CCPA compliance.

<policy>
{{POLICY}}
</policy>

1. Extract exact quotes from the policy that are most relevant to GDPR
and CCPA compliance. If you can't find relevant quotes, state "No
relevant quotes found."

2. Use the quotes to analyze the compliance of these policy sections,
referencing the quotes by number. Only base your analysis on the
extracted quotes.

У вас такой документ — это ваш собственный код. Когда вы просите Claude Code изменить логику в OrderCalculationService, полезно сначала попросить процитировать существующие сигнатуры и использования, и только потом править. Подробнее — в разделе «Пример в вашем стеке» ниже.

3. Делайте ответ проверяемым через ссылки на цитаты

Похожий приём, но шире: после того как Claude сгенерировал ответ, попросите его пройтись по каждому утверждению и найти подтверждающую цитату. Если цитаты нет — утверждение удаляется.

Пример из оригинала — пресс-релиз:

Draft a press release for our new cybersecurity product, AcmeSecurity
Pro, using only information from these product briefs and market reports.

<documents>
{{DOCUMENTS}}
</documents>

After drafting, review each claim in your press release. For each claim,
find a direct quote from the documents that supports it. If you can't
find a supporting quote for a claim, remove that claim from the press
release and mark where it was removed with empty [] brackets.

Перенос на ваш сценарий: после того как Claude Code выдал план правок, попросите его рядом с каждым шагом плана указать строку из реального файла. Если строки нет — шаг под подозрением.

Продвинутые техники

Anthropic перечисляет четыре. Все четыре полезны и для кода:

Пример в вашем стеке

Допустим, вы хотите добавить новый метод в OrderService, который пересчитывает наценку через OrderCalculationService. Соблазнительно написать в Claude Code:

Добавь в OrderService метод recalculateMarkup(orderId), который вызовет
OrderCalculationService и сохранит результат через OrderRepository.

Что Claude Code сделает: уверенно сгенерирует код, в котором с приличной вероятностью будут выдуманные сигнатуры — orderRepository.updateMarkup(...), которого в вашем коде нет, или вызов OrderCalculationService.calc(...) с другим набором аргументов, чем у реального метода. Внешне всё компилируется в голове модели, в IDE — нет.

Лучший промпт — с тремя приёмами из этой статьи сразу:

Я хочу добавить в OrderService метод recalculateMarkup(orderId): он
должен пересчитать наценку через OrderCalculationService и сохранить
результат через OrderRepository.

Прежде чем писать код:
1. Открой OrderService.kt, OrderCalculationService.kt, OrderRepository.kt
   и процитируй (дословно) сигнатуры всех методов, которые могут быть
   полезны: расчёт наценки, обновление заказа, чтение заказа.
2. Если нужного метода нет — напиши «такого метода нет» и предложи,
   какой добавить и где.
3. Опирайся только на код в репозитории, не на общие знания о Ktor/JDBI.

После этого — план правок. Каждому шагу плана соответствует конкретный
файл и метод из цитат выше. Если для шага нет подходящего метода в
цитатах — шаг помечается как «нужно добавить».

Что вы получаете:

На практике именно эта связка ловит большинство галлюцинаций в коде — потому что она заставляет модель сначала посмотреть, а потом написать. Если применять её систематически, вы почти перестанете ловить «фантомные методы» на ревью.

Что важно помнить

Anthropic заканчивает статью прямой оговоркой:

Remember, while these techniques significantly reduce hallucinations, they don't eliminate them entirely. Always validate critical information, especially for high-stakes decisions.

То есть: эти приёмы существенно снижают галлюцинации, но не устраняют их полностью. Всегда проверяйте критичную информацию — особенно там, где цена ошибки высокая. Для вас это значит простое: код, который сгенерировал Claude, всё равно нужно прочитать. Запустить тест в IntegrationTestBase или JwtFilterTest. Сверить сигнатуры с реальным файлом. Никакой промпт-приём не заменяет это последнее звено.

Коротко