Как настроить автоматический перевод с помощью LLM
Практическое руководство по настройке автоматического перевода документов и текстов через языковые модели.
Языковые модели изменили стандарты машинного перевода. GPT-4o и Claude переводят тексты с пониманием контекста, сохранением стиля и адаптацией под целевую аудиторию — то, с чем Google Translate и DeepL справляются хуже. По тестам профессиональных переводчиков, LLM-перевод художественных и маркетинговых текстов превосходит классические MT-системы в 60–70% случаев. Разберём, как настроить такой перевод для регулярных задач.
Когда LLM лучше Google Translate
Классические системы перевода (Google Translate, DeepL, Яндекс Переводчик) работают на уровне предложений. LLM анализируют документ целиком и учитывают контекст. Это даёт преимущество в нескольких сценариях.
Маркетинговые тексты. LLM адаптируют тон, шутки и культурные отсылки. Google Translate переведёт буквально, и текст потеряет убедительность.
Техническая документация. LLM сохраняют единообразие терминов в пределах документа и правильно обрабатывают код в тексте (не переводят имена переменных).
Юридические тексты. LLM лучше справляются с устойчивыми конструкциями и терминологией, но требуют вычитки юристом.
Для коротких фраз и простых текстов Google Translate и DeepL остаются быстрее и дешевле. LLM оправдан для текстов, где важен стиль и точность.
Базовый перевод через API
from openai import OpenAI
client = OpenAI()
def translate(text, source_lang="английский", target_lang="русский", style="нейтральный"):
response = client.chat.completions.create(
model="gpt-4o",
temperature=0.3,
messages=[
{
"role": "system",
"content": f"""Ты — профессиональный переводчик с {source_lang} на {target_lang}.
Стиль перевода: {style}.
Правила:
- Сохраняй форматирование (markdown, HTML-теги)
- Не переводи имена собственные, названия продуктов, код
- Не добавляй пояснений — только перевод
- Технические термины переводи общепринятым русским эквивалентом"""
},
{"role": "user", "content": text}
]
)
return response.choices[0].message.contentПараметр temperature=0.3 обеспечивает стабильность перевода. Для творческих текстов увеличьте до 0.6–0.7. Подробнее о работе с промптами — в отдельном гайде.
Пакетная обработка документов
Для перевода длинных документов разбивайте текст на фрагменты с перекрытием — это сохраняет контекст на стыках:
def translate_document(text, chunk_size=3000, overlap=200):
chunks = []
start = 0
while start < len(text):
end = start + chunk_size
# Не разрывать предложения
if end < len(text):
last_period = text.rfind(".", start, end)
if last_period > start:
end = last_period + 1
chunks.append(text[start:end])
start = end - overlap
translated = []
for i, chunk in enumerate(chunks):
context = f"Часть {i+1} из {len(chunks)} одного документа. "
if i > 0:
context += f"Предыдущий фрагмент заканчивался: ...{translated[-1][-100:]}"
result = translate(chunk, style=f"{context} Сохраняй единообразие терминов.")
translated.append(result)
return "\n".join(translated)Перекрытие в 200 символов помогает модели сохранить связность текста. Контекст о предыдущем фрагменте обеспечивает единообразие терминологии.
Глоссарий терминов
Для корпоративного перевода критично единообразие терминов. Подключите глоссарий через системный промпт:
glossary = {
"deployment": "развёртывание",
"pipeline": "пайплайн",
"latency": "задержка",
"throughput": "пропускная способность",
"fine-tuning": "дообучение",
"inference": "инференс"
}
glossary_text = "\n".join(f"- {en} → {ru}" for en, ru in glossary.items())
system_prompt = f"""Ты — технический переводчик.
Используй следующий глоссарий:
{glossary_text}
Не отступай от глоссария. Неизвестные термины переводи общепринятым вариантом."""Перевод файлов разных форматов
Для Markdown и HTML-файлов добавьте в промпт инструкцию сохранять разметку. Для SRT-субтитров (видео) сохраняйте таймкоды. Для JSON с текстовым контентом — переводите только значения, не ключи:
import json
def translate_json(data, target_lang="русский"):
"""Переводит строковые значения в JSON, сохраняя структуру."""
json_str = json.dumps(data, ensure_ascii=False, indent=2)
response = client.chat.completions.create(
model="gpt-4o",
temperature=0.2,
messages=[
{"role": "system", "content": f"Переведи значения JSON на {target_lang}. Не меняй ключи, числа, булевы значения. Верни валидный JSON."},
{"role": "user", "content": json_str}
]
)
return json.loads(response.choices[0].message.content)Стоимость и оптимизация
Перевод книги в 100 000 слов через GPT-4o обойдётся примерно в $15–20. Через GPT-4o-mini — $1–2, но с потерей качества на сложных конструкциях. Для технических текстов с простой структурой GPT-4o-mini достаточно. Для художественных и маркетинговых — стоит использовать GPT-4o или Claude.
Для снижения затрат: используйте локальные модели (Llama 3.1 70B даёт приемлемое качество перевода), кэшируйте переведённые сегменты, переводите только изменённые части документа при обновлениях.
Проверка качества
Автоматическая проверка перевода — ещё одно применение LLM. Отправьте оригинал и перевод в модель с промптом «Найди ошибки в переводе: пропуски, искажения смысла, стилистические проблемы». Модель вернёт список замечаний, которые можно исправить вручную или автоматически.
Для критически важных текстов (юридические, медицинские) автоматический перевод — черновик для профессионального редактора, не финальный результат.
LLM для машинного перевода: почему это лучше традиционных систем
Традиционные системы машинного перевода (DeepL, Google Translate) используют специализированные нейросети, обученные исключительно на параллельных корпусах. LLM, обученные на огромных мультиязычных данных, показывают другой подход: они понимают контекст, стиль и культурные нюансы на уровне, недоступном специализированным переводчикам.
Сравнение подходов к автоматическому переводу
| Метод | Качество | Скорость | Стоимость | Кастомизация |
|---|---|---|---|---|
| DeepL API | ★★★★☆ | ★★★★★ | $20/1M знаков | Глоссарии |
| GPT-4o (промпт) | ★★★★★ | ★★★☆☆ | $2.5/1M токенов (вход) | Полная: стиль, тон, термины |
| Claude Sonnet | ★★★★★ | ★★★★☆ | $3/1M токенов (вход) | Полная |
| OPUS-MT (open source) | ★★★☆☆ | ★★★★★ | Бесплатно (self-hosted) | Fine-tuning |
| NLLB-200 (Meta) | ★★★★☆ | ★★★★☆ | Бесплатно (self-hosted) | 200 языков |
Промпт-инженерия для перевода с LLM
Ключ к качественному переводу через LLM — системный промпт с контекстом задачи:
Ты — профессиональный переводчик технической документации.
Переведи следующий текст с английского на русский.
Требования:
- Сохраняй технические термины: [список терминов]
- Стиль: формальный, для инженерной аудитории
- Не переводи имена собственные и бренды
- При неоднозначности выбирай более точный вариант
Автоматизация перевода больших объёмов
Для перевода больших документов (книги, документация, субтитры) используют батчинг через API:
- Разбивка текста на чанки по 1000–2000 слов с учётом границ предложений
- Параллельная отправка чанков через asyncio (Python) или Promise.all (Node.js)
- Кэширование результатов для повторяющихся фрагментов
- Post-processing: восстановление форматирования, проверка глоссария
При батчинге GPT-4o через Batch API стоимость снижается на 50% — это делает LLM-перевод конкурентоспособным с DeepL даже для больших объёмов.
Когда LLM лучше специализированных переводчиков
LLM превосходят DeepL/Google в задачах: художественный перевод с сохранением стиля автора, локализация UI/UX с учётом культурного контекста, перевод юмора и идиом, перевод на редкие или диалектные языки. Для массового технического перевода однотипных текстов DeepL остаётся быстрее и дешевле.