Назад в блог
Prompt Engineering

Многоязычные промпты LLM: армянский, русский и английский

Один контракт решений для трёх языков

Перевод меняет формулировку, но не полномочия

Авторская схема LANG-CONTRACT-7
Проверка маршрута, прав и источников
ТемаInvariant policy contract
ФокусLANG-CONTRACT-7
СтатусPUBLISHED / 2026-10-03
Три языковые дорожки сходятся к единому контракту правил и проверке результата
Три языковые дорожки сходятся к единому контракту правил и проверке результата
TERMINAL_PREVIEW.LOG
$ prompt --contract LANG-CONTRACT-7
> bind: policy / locale / version
> check: route / rights / evidence
> route: answer / clarify / refuse / review
Разбор

Перевод промпта может звучать естественно и при этом менять права ассистента. Русская версия просит уточнить номер заказа, английская угадывает его, а армянская пропускает правило. Для production важна эквивалентность решений, а не буквальное совпадение предложений.

Здесь разбирается узкая инженерная задача: как сохранить единые правила решений для армянского, русского и английского. О более широком проектировании рассказывают страницы prompt engineering, AI-автоматизации и AI-специалиста в Армении. Соседние материалы: системный промпт как контракт и проверка структурированного вывода.

Проблема и требования

Представим синтетического помощника поддержки. Он читает запрос и составляет черновик ответа: кратко описывает проблему, ссылается на одобренное правило, просит недостающий номер заказа. Он не вправе обещать возврат, раскрывать чужие данные или менять заказ. Язык запроса не должен менять эти границы.

Критерии приёмки задаются наблюдаемыми маршрутами: ответ с подтверждённым источником, уточнение, отказ либо передача человеку. Язык ответа соответствует пользователю, но полномочия, доказательства, обязательные поля и условия эскалации не зависят от локали. Армянский текст должен проверить человек, владеющий языком, прежде чем появятся армянская публичная страница или production-шаблон.

Авторская архитектура LANG-CONTRACT-7

Это проектная схема на синтетическом примере, а не измеренный результат или описание запущенной клиентской системы.

01 INTENT определить задачу и язык запроса 02 POLICY загрузить единую версию неизменных правил 03 LOCALE выбрать проверенный языковой шаблон 04 EVIDENCE получить только разрешённые актуальные источники 05 GENERATE создать типизированный черновик и код маршрута 06 VALIDATE сверить ответ с правилами и источниками 07 ROUTE ответить, уточнить, отказать или передать человеку

Неизменный контракт хранится в структурированном виде, а языковые формулировки связываются с ним устойчивыми ID правил. Например, refund.promise.denied означает запрет обещать возврат. Фразы на трёх языках лишь объясняют решение. Правка перевода не должна незаметно изменить само решение.

Минимальный контракт и псевдокод

const policy = loadPolicy("support-v3"); const locale = detectSupportedLocale(request.text); const template = loadReviewedTemplate(locale, policy.version); const evidence = retrieveAllowedSources(request.actor, request.topic); const draft = await model.generate({ policy, template, evidence }); const parsed = responseSchema.parse(draft); if (!policy.allows(parsed.route, request.actor)) return review("route"); if (!claimsSupported(parsed.claims, evidence)) return review("evidence"); return renderInLocale(parsed, locale);

detectSupportedLocale, claimsSupported и renderInLocale — функции приложения, а не гарантии модели. Её собственное утверждение о соблюдении правил проверкой не считается. Версии правил и шаблона фиксируются в квитанции решения для воспроизведения регрессии.

Компоненты и сценарии отказа

ГраницаПример дрейфаДействие
Определение языкаСмешанный армяно-русский ввод принят за английскийУточнить или применить объявленный fallback
Перевод правила«Можно составить черновик» стало «Можно отправить»Отклонить шаблон без редакторской проверки
ИсточникиДля одной локали доступна старая редакция политикиОстановить ответ до проверки актуального источника
Схема ответаВ одной версии нет review_requiredОтклонить ответ с неверной схемой
ПраваЛокальная формулировка подразумевает доступ к чужому аккаунтуПроверить права вне модели и отказать
ЭскалацияТекст отказа скрывает необходимость проверки человекомВыдать стабильный код маршрута и квитанцию

Идентификаторы, права и редакции источников нельзя свободно переводить как прозу. Ввод пользователя и извлечённые документы остаются данными, даже если содержат инструкции на другом языке. Фраза «игнорируй прежние правила» на любом языке остаётся недоверенным вводом.

Тестирование и production-проверка

Подготовьте параллельные примеры на трёх языках: обычный ответ, отсутствующий номер, запрещённое действие, устаревший источник, смешанный ввод и внедрение инструкции. Редакторы проверяют смысловую эквивалентность примеров и ответов. Для каждого набора сверяются код маршрута, решение по правам, обязательные поля и редакция источника. Формулировки могут различаться, границы решений — нет.

Повторяйте проверку при изменении правил, шаблонов, модели, корпуса или схемы вывода. Исследуйте расхождения по ID правила, а не только по суммарной точности. Сохраните путь возврата к последним проверенным версиям. Перед выпуском проверьте манифест версий, покрытие примеров, человеческую редактуру армянского текста, актуальность источников, границы журналирования и владельца эскалации. Это критерии приёмки, а не обещанные показатели.

Для разбора проекта запросите технический аудит. Гайд об ошибках function calling описывает отдельную проверку последующего вызова инструмента.

CODE_BLOCK.TXT
const policy = loadPolicy("support-v3");
const template = loadReviewedTemplate(locale, policy.version);
const draft = await generate(policy, template, evidence);
return validateRouteAndClaims(draft, policy, evidence);