prompts.py 13.4 KB
"""Prompt templates for llm-based translation."""

from __future__ import annotations

from typing import Dict


TRANSLATION_PROMPTS: Dict[str, Dict[str, str]] = {
    "general": {
        "zh": "你是一名专业的 {source_lang}({src_lang_code})到 {target_lang}({tgt_lang_code})翻译专家,请准确传达原文含义并符合{target_lang}语言习惯,只输出翻译结果:{text}",
        "en": "You are a professional {source_lang} ({src_lang_code}) to {target_lang} ({tgt_lang_code}) translator. Accurately convey the meaning following {target_lang} grammar and usage, output only the translation: {text}",
        "ru": "Вы профессиональный переводчик с {source_lang} ({src_lang_code}) на {target_lang} ({tgt_lang_code}). Точно передайте смысл текста, соблюдая нормы {target_lang}, выводите только перевод: {text}",
        "ar": "أنت مترجم محترف من {source_lang} ({src_lang_code}) إلى {target_lang} ({tgt_lang_code}). انقل المعنى بدقة وفق قواعد {target_lang} وأخرج الترجمة فقط: {text}",
        "ja": "あなたは {source_lang}({src_lang_code})から {target_lang}({tgt_lang_code})へのプロ翻訳者です。意味を正確に伝え、{target_lang}の表現に従い、翻訳のみ出力してください:{text}",
        "es": "Eres un traductor profesional de {source_lang} ({src_lang_code}) a {target_lang} ({tgt_lang_code}). Transmite con precisión el significado y devuelve solo la traducción: {text}",
        "de": "Du bist ein professioneller Übersetzer von {source_lang} ({src_lang_code}) nach {target_lang} ({tgt_lang_code}). Gib die Bedeutung korrekt wieder und gib nur die Übersetzung aus: {text}",
        "fr": "Vous êtes un traducteur professionnel de {source_lang} ({src_lang_code}) vers {target_lang} ({tgt_lang_code}). Transmettez fidèlement le sens et produisez uniquement la traduction : {text}",
        "it": "Sei un traduttore professionista da {source_lang} ({src_lang_code}) a {target_lang} ({tgt_lang_code}). Trasmetti accuratamente il significato e restituisci solo la traduzione: {text}",
        "pt": "Você é um tradutor profissional de {source_lang} ({src_lang_code}) para {target_lang} ({tgt_lang_code}). Transmita o significado com precisão e produza apenas a tradução: {text}",
    },
    "sku_name": {
        "zh": "你是一名专业的 {source_lang}({src_lang_code})到 {target_lang}({tgt_lang_code})电商翻译专家,请将原文翻译为{target_lang}商品SKU名称,要求准确完整、简洁专业,只输出结果:{text}",
        "en": "You are a professional {source_lang} ({src_lang_code}) to {target_lang} ({tgt_lang_code}) ecommerce translator. Translate into a concise and accurate {target_lang} product SKU name, output only the result: {text}",
        "ru": "Вы переводчик e-commerce с {source_lang} ({src_lang_code}) на {target_lang} ({tgt_lang_code}). Переведите в краткое и точное название SKU товара на {target_lang}, выводите только результат: {text}",
        "ar": "أنت مترجم تجارة إلكترونية من {source_lang} ({src_lang_code}) إلى {target_lang} ({tgt_lang_code}). ترجم إلى اسم SKU للمنتج بلغة {target_lang} بدقة واختصار، وأخرج النتيجة فقط: {text}",
        "ja": "{source_lang}({src_lang_code})から {target_lang}({tgt_lang_code})へのEC翻訳者として、簡潔で正確な{target_lang}の商品SKU名に翻訳し、結果のみ出力してください:{text}",
        "es": "Eres un traductor ecommerce de {source_lang} ({src_lang_code}) a {target_lang} ({tgt_lang_code}). Traduce a un nombre SKU de producto en {target_lang}, preciso y conciso, devuelve solo el resultado: {text}",
        "de": "Du bist ein E-Commerce-Übersetzer von {source_lang} ({src_lang_code}) nach {target_lang} ({tgt_lang_code}). Übersetze in einen präzisen und kurzen {target_lang} Produkt-SKU-Namen, nur Ergebnis ausgeben: {text}",
        "fr": "Vous êtes un traducteur e-commerce de {source_lang} ({src_lang_code}) vers {target_lang} ({tgt_lang_code}). Traduisez en un nom SKU produit {target_lang} précis et concis, sortie uniquement : {text}",
        "it": "Sei un traduttore ecommerce da {source_lang} ({src_lang_code}) a {target_lang} ({tgt_lang_code}). Traduce in un nome SKU prodotto {target_lang} conciso e accurato, restituisci solo il risultato: {text}",
        "pt": "Você é um tradutor de e-commerce de {source_lang} ({src_lang_code}) para {target_lang} ({tgt_lang_code}). Traduza para um nome SKU de produto {target_lang} conciso e preciso, produza apenas o resultado: {text}",
    },
    "ecommerce_search_query": {
        "zh": "你是一名专业的 {source_lang}({src_lang_code})到 {target_lang}({tgt_lang_code})翻译助手,请将电商搜索词准确翻译为{target_lang}并符合搜索习惯,只输出结果:{text}",
        "en": "You are a professional {source_lang} ({src_lang_code}) to {target_lang} ({tgt_lang_code}) translator. Translate the ecommerce search query accurately following {target_lang} search habits, output only the result: {text}",
        "ru": "Вы переводчик с {source_lang} ({src_lang_code}) на {target_lang} ({tgt_lang_code}). Переведите поисковый запрос e-commerce с учётом привычек поиска, выводите только результат: {text}",
        "ar": "أنت مترجم من {source_lang} ({src_lang_code}) إلى {target_lang} ({tgt_lang_code}). ترجم عبارة البحث للتجارة الإلكترونية بما يناسب عادات البحث وأخرج النتيجة فقط: {text}",
        "ja": "{source_lang}({src_lang_code})から {target_lang}({tgt_lang_code})への翻訳者として、EC検索キーワードを{target_lang}の検索習慣に合わせて翻訳し、結果のみ出力してください:{text}",
        "es": "Eres un traductor de {source_lang} ({src_lang_code}) a {target_lang} ({tgt_lang_code}). Traduce la consulta de búsqueda ecommerce según los hábitos de búsqueda y devuelve solo el resultado: {text}",
        "de": "Du bist ein Übersetzer von {source_lang} ({src_lang_code}) nach {target_lang} ({tgt_lang_code}). Übersetze die E-Commerce-Suchanfrage entsprechend den Suchgewohnheiten, nur Ergebnis ausgeben: {text}",
        "fr": "Vous êtes un traducteur de {source_lang} ({src_lang_code}) vers {target_lang} ({tgt_lang_code}). Traduisez la requête de recherche e-commerce selon les habitudes de recherche, sortie uniquement : {text}",
        "it": "Sei un traduttore da {source_lang} ({src_lang_code}) a {target_lang} ({tgt_lang_code}). Traduce la query di ricerca ecommerce secondo le abitudini di ricerca e restituisci solo il risultato: {text}",
        "pt": "Você é um tradutor de {source_lang} ({src_lang_code}) para {target_lang} ({tgt_lang_code}). Traduza a consulta de busca de ecommerce conforme os hábitos de busca e produza apenas o resultado: {text}",
    },
}


BATCH_TRANSLATION_PROMPTS: Dict[str, Dict[str, str]] = {
    "general": {
        "en": (
            "Translate each item from {source_lang} ({src_lang_code}) to {target_lang} ({tgt_lang_code}). "
            "Accurately and completely preserve the meaning of the original text, including key features and attributes.\n"
            "Output exactly one line for each input item, in the same order, using this exact format:\n"
            "1. translation\n"
            "2. translation\n"
            "...\n"
            "Do not explain or output anything else.\n"
            "Input:\n{text}"
        ),
        "zh": (
            "将每一项从 {source_lang} ({src_lang_code}) 翻译为 {target_lang} ({tgt_lang_code})。"
            "请准确完整地保留原文含义,包括关键特征和属性。\n"
            "请按输入顺序逐行输出,每个输入对应一行,格式必须如下:\n"
            "1. 翻译结果\n"
            "2. 翻译结果\n"
            "...\n"
            "不要解释或输出其他任何内容。\n"
            "输入:\n{text}"
        ),
        "ru": (
            "Переведите каждый элемент с {source_lang} ({src_lang_code}) на {target_lang} ({tgt_lang_code}). "
            "Точно и полностью сохраняйте смысл исходного текста, включая ключевые характеристики и свойства.\n"
            "Выводите ровно по одной строке для каждого входного элемента в том же порядке, в следующем формате:\n"
            "1. перевод\n"
            "2. перевод\n"
            "...\n"
            "Не добавляйте объяснений и ничего лишнего.\n"
            "Входные данные:\n{text}"
        ),
    },
    "sku_name": {
        "en": (
            "Translate each item from {source_lang} ({src_lang_code}) to a {target_lang} ({tgt_lang_code}) product title.\n"
            "Accurately and completely preserve the meaning of the original text, including key features and attributes.\n"
            "As a product title, keep the style concise, clear, professional, and natural in {target_lang}.\n"
            "Output exactly one line for each input item, in the same order, using this exact format:\n"
            "1. translation\n"
            "2. translation\n"
            "...\n"
            "Do not explain or output anything else.\n"
            "Input:\n{text}"
        ),
        "zh": (
            "将每一项从 {source_lang} ({src_lang_code}) 翻译为 {target_lang} ({tgt_lang_code}) 的商品标题。\n"
            "请准确完整地保留原文含义,包括关键特征和属性。\n"
            "作为商品标题,请保持简洁、清晰、专业,并符合 {target_lang} 的自然表达。\n"
            "请按输入顺序逐行输出,每个输入对应一行,格式必须如下:\n"
            "1. 翻译结果\n"
            "2. 翻译结果\n"
            "...\n"
            "不要解释或输出其他任何内容。\n"
            "输入:\n{text}"
        ),
        "ru": (
            "Переведите каждый элемент с {source_lang} ({src_lang_code}) на {target_lang} ({tgt_lang_code}) в виде названия товара.\n"
            "Точно и полностью сохраняйте смысл исходного текста, включая ключевые характеристики и свойства.\n"
            "Как название товара, текст должен быть кратким, ясным, профессиональным и естественным на {target_lang}.\n"
            "Выводите ровно по одной строке для каждого входного элемента в том же порядке, в следующем формате:\n"
            "1. перевод\n"
            "2. перевод\n"
            "...\n"
            "Не добавляйте объяснений и ничего лишнего.\n"
            "Входные данные:\n{text}"
        ),
    },
    "ecommerce_search_query": {
        "en": (
            "Translate each item from {source_lang} ({src_lang_code}) to a natural {target_lang} ({tgt_lang_code}) "
            "ecommerce search query.\n"
            "Accurately and completely preserve the meaning of the original text, including key features and attributes.\n"
            "Use concise search-style wording.\n"
            "Output exactly one line for each input item, in the same order, using this exact format:\n"
            "1. translation\n"
            "2. translation\n"
            "...\n"
            "Do not explain or output anything else.\n"
            "Input:\n{text}"
        ),
        "zh": (
            "将每一项从 {source_lang} ({src_lang_code}) 翻译为自然的 {target_lang} ({tgt_lang_code}) 电商搜索词。\n"
            "请准确完整地保留原文含义,包括关键特征和属性。\n"
            "使用简洁的搜索关键词风格表达。\n"
            "请按输入顺序逐行输出,每个输入对应一行,格式必须如下:\n"
            "1. 翻译结果\n"
            "2. 翻译结果\n"
            "...\n"
            "不要解释或输出其他任何内容。\n"
            "输入:\n{text}"
        ),
        "ru": (
            "Переведите каждый элемент с {source_lang} ({src_lang_code}) на естественный поисковый запрос для электронной коммерции на {target_lang} ({tgt_lang_code}).\n"
            "Точно и полностью сохраняйте смысл исходного текста, включая ключевые характеристики и свойства.\n"
            "Используйте краткую форму, характерную для поисковых запросов.\n"
            "Выводите ровно по одной строке для каждого входного элемента в том же порядке, в следующем формате:\n"
            "1. перевод\n"
            "2. перевод\n"
            "...\n"
            "Не добавляйте объяснений и ничего лишнего.\n"
            "Входные данные:\n{text}"
        ),
    },
}