fix(ai): enforce zero-relative clause preservation and anti-omission rules in literary prompt
This commit is contained in:
@@ -51,18 +51,19 @@ def build_translation_prompt(
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
"Ты — профессиональный литературный переводчик художественной и научно-популярной литературы на русский язык.\n"
|
"Ты — профессиональный литературный переводчик художественной и научно-популярной литературы на русский язык.\n"
|
||||||
"Твоя задача — перевести указанное английское предложение на красивый, естественный и грамотный русский литературный язык, идеально вписывающийся в повествование книги.\n\n"
|
"Твоя задача — перевести указанное английское предложение на красивый, естественный, богатый и грамматически безупречный русский язык, идеально вписывающийся в повествование книги.\n\n"
|
||||||
f"{context_section}"
|
f"{context_section}"
|
||||||
f'Предложение для перевода:\n"{clean_sentence}"\n\n'
|
f'Предложение для перевода:\n"{clean_sentence}"\n\n'
|
||||||
f"{target_section}"
|
f"{target_section}"
|
||||||
"Обязательные правила перевода:\n"
|
"Обязательные правила перевода:\n"
|
||||||
"1. Перевод должен быть живым и художественным (НЕ дословным, без топорного калькирования).\n"
|
"1. ПОЛНОТА И СВЯЗНОСТЬ: Переводи абсолютно ВСЕ смысловые части и придаточные обороты без пропусков! Обращай особое внимание на бессоюзные определительные обороты (zero relative clauses, например: 'the book I read' -> 'книга, которую я читал', 'Tuesday our story starts' -> 'вторник, с которого начинается наша история'). Ничего не выбрасывай!\n"
|
||||||
"2. Переводи всё предложение ПОЛНОСТЬЮ от начала до конца, не обрывая на точках, обращениях или знаках препинания.\n"
|
"2. БЕЗ ДОСЛОВНОГО КАЛЬКИРОВАНИЯ: Никаких топорных калек предлогов ('on Tuesday' -> 'во вторник', а не 'на вторнике'). Парные эпитеты ('dull, gray') переводи богатыми русскими синонимами ('пасмурный, серый'), не повторяя одно и то же слово.\n"
|
||||||
"3. Обязательно сохраняй обращения и титулы: Mr. -> мистер, Mrs. -> миссис, Dr. -> доктор, Prof. -> профессор, St. -> святой/Сент-. Не теряй их!\n"
|
"3. ИМЕНА И ТИТУЛЫ: Имена персонажей и фамилии передавай полностью на русском языке (кириллицей), без латинских букв (Mr. and Mrs. Dursley -> мистер и миссис Дурсли). Сохраняй титулы: Mr. -> мистер, Mrs. -> миссис, Dr. -> доктор, Prof. -> профессор.\n"
|
||||||
"4. В поле \"word_meaning\" укажи только точный перевод выделенного слова на русский язык в контексте данного предложения (выбрав самый подходящий вариант из словарных подсказок).\n\n"
|
"4. РУССКИЙ СИНТАКСИС: Сохраняй естественный русский порядок слов (обстоятельства времени и места ставь перед сказуемым: 'вскоре по всей стране начнут происходить...').\n"
|
||||||
|
f'5. В поле "word_meaning" укажи только точный перевод слова "{clean_word}" на русский язык в контексте этого предложения (выбрав лучший вариант из подсказок).\n\n'
|
||||||
"Ответь ИСКЛЮЧИТЕЛЬНО в формате JSON:\n"
|
"Ответь ИСКЛЮЧИТЕЛЬНО в формате JSON:\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
' "sentence_ru": "полный литературный перевод всего предложения",\n'
|
' "sentence_ru": "полный качественный литературный перевод всего предложения без пропусков",\n'
|
||||||
f' "word_meaning": "{"русский перевод слова в данном контексте" if clean_word else ""}"\n'
|
f' "word_meaning": "{"русский перевод слова в данном контексте" if clean_word else ""}"\n'
|
||||||
"}"
|
"}"
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-1
@@ -1920,7 +1920,8 @@ def test_robust_sentence_split_and_ai_translation(monkeypatch):
|
|||||||
assert "briefcase" in prompt
|
assert "briefcase" in prompt
|
||||||
assert "портфель, кейс, дипломат" in prompt
|
assert "портфель, кейс, дипломат" in prompt
|
||||||
assert "Mr. -> мистер" in prompt
|
assert "Mr. -> мистер" in prompt
|
||||||
assert "НЕ дословным, без топорного калькирования" in prompt
|
assert "БЕЗ ДОСЛОВНОГО КАЛЬКИРОВАНИЯ" in prompt
|
||||||
|
assert "ПОЛНОТА И СВЯЗНОСТЬ" in prompt
|
||||||
|
|
||||||
# 3. Test API endpoint /api/translate-sentence
|
# 3. Test API endpoint /api/translate-sentence
|
||||||
# Authenticate client
|
# Authenticate client
|
||||||
|
|||||||
Reference in New Issue
Block a user