Opakované odstavce mohou znovu použít překlad, ale klíč mezipaměti nemůže obsahovat pouze původní text.
"Uložit" vypadá v obou projektech stejně, ale překlad, velikost písmen a kontext se mohou lišit. Použitím původního textového hashe jako jedinečného klíče mezipaměti je snadné znovu použít překlady z jednoho projektu do druhého nebo je dokonce míchat mezi tenanty. Ukládání do mezipaměti není jen o míře návštěvnosti. Před povolením opětovného použití musíte nejprve definovat, které podmínky jsou stejné.
Klíčem k ukládání do mezipaměti překladu je definovat, které podmínky jsou stejné, aby bylo možné znovu použít. Stejná věta „uložit"může mít v různých projektech různé překlady, velká písmena a kontext. Pokud se jako klíče mezipaměti používají pouze hash zdrojového textu, překlady z jednoho projektu mohou být zneužity pro jiný projekt nebo dokonce smíšené napříč tenanty.
Tento článek je napsán pro vývojáře a dokumentační týmy, kteří potřebují navrhnout překladové mezipaměti. Po přečtení tohoto článku budete vědět, jaké podmínky by měl klíč mezipaměti obsahovat, jak používat strukturovanou serializaci, abyste se vyhnuli spojování dvojznačností, a co ještě zkontrolovat po zásahu do mezipaměti.
Jak navrhnout klíč mezipaměti překladu? Závěr jednou větou
Klíč mezipaměti by měl představovat rozhodnutí o překladu a opětovné použití existujících výsledků je povoleno pouze v případě, že zdrojový jazyk, cílový jazyk, verze terminologie, verze zásad a rozsah použití jsou stejné.
| vaší situaci | Doporučené postupy | důvod |
|---|---|---|
| Stejná věta může být v různých projektech přeložena různě | Zahrnout rozsah použití do klíče mezipaměti | Vyhněte se opakovanému použití překladů z jednoho projektu do druhého |
| Více tenantů sdílí stejnou mezipaměť | Tenant ID zadá klíč a během dotazu provede kontrolu oprávnění | Tenant ID může pouze izolovat pojmenování a nemůže nahradit kontrolu oprávnění |
| Glosář byl revidován | Nové klíče se generují, když se verze termínů liší | Terminologické rozhodnutí se změnilo, stará cache se používá pouze pro retroaktivní účely |
| Potřeba stabilně reprodukovat výsledky | Uložte si vlastní verzi strategie a aktuální informace o úkolu | Stejný název modelu neznamená, že se chování serveru nikdy nezmění. |
| Klepněte na existující mezipaměť | Zkontrolujte stav, zdrojové úlohy a značky kvality | Stisk klávesy neznamená, že výsledek může být doručen přímo |
Klíč mezipaměti by měl představovat rozhodnutí o překladu
Je třeba vzít v úvahu alespoň následující podmínky:
- zdrojový jazyk a cílový jazyk
- Terminální verze
- Verze modelu nebo strategie překladu
- Rozsah použití
Když kontext ovlivňuje překlad, měl by být v klíči mezipaměti zahrnut také identifikátor kontextu.
Stejný název modelu nezaručuje, že se server nikdy nezmění. Pokud potřebujete reprodukovatelně reprodukovatelné výsledky, měli byste uložit svou vlastní verzi strategie se skutečnými informacemi o úloze, spíše než předpokládat, že jeden název modelu uzamkne veškeré chování.
Níže je uveden syntetický příklad místního klíče mezipaměti. Nevolá žádné překladové rozhraní ani nespecifikuje implementaci interní mezipaměti OmniDoc (produktový záznam).
Příklady používají syntetické vzorky k demonstraci metod zpracování a kód byl zkontrolován v izolovaném prostředí, ale to nepředstavuje záruku všech skutečných souborů nebo efektů produktu. Před zpracováním důležitých dokumentů si prosím uschovejte originály a zkontrolujte je podle níže uvedených hranic a položek přijetí.
Použijte strukturovanou serializaci, abyste se vyhnuli nejednoznačnosti sestřihu
import hashlib
import json
def cache_key(tenant, text, source_lang, target_lang, glossary, policy):
record = {"tenant": tenant, "text": text, "source": source_lang,
"target": target_lang, "glossary": glossary, "policy": policy}
raw = json.dumps(record, ensure_ascii=False, sort_keys=True,
separators=(",", ":")).encode("utf-8")
return hashlib.sha256(raw).hexdigest()
args = ("demo-a", "保存", "zh", "en", "terms-v1", "ui-v1")
first = cache_key(*args)
assert first == cache_key(*args)
assert first != cache_key("demo-b", *args[1:])
assert first != cache_key("demo-a", "保存", "zh", "ja", "terms-v1", "ui-v1")
assert first != cache_key("demo-a", "保存", "zh", "en", "terms-v2", "ui-v1")
assert len(first) == 64
Při jednoduchém použití text + language + version ke spojování jsou hranice pole nejasné a snadno dochází k nejednoznačnosti. Strukturovaná serializace vyjasňuje názvy polí a hranice hodnot; po opravení pořadí klíčů a oddělovače získá stejný záznam stabilní bajty.
Tato sada protokolů je pevná. Při budoucí úpravě pravidel serializace by měl být současně upgradován jmenný prostor mezipaměti.
Po stisknutí stále zkontrolujte dostupný stav
Záznamy mezipaměti mohou pocházet z neúspěšných, zrušených nebo nezkontrolovaných úkolů a stisknutí klávesy neznamená, že výsledky mohou být doručeny přímo.
Každý uložený záznam by měl také zaznamenat následující informace:
- Status
- Čas vytvoření
- Zdrojové mise
- Hodnocení kvality podle potřeby
Po revizi terminologie lze staré cache zachovat pro zpětné účely, ale nová strategie by je již neměla považovat za aktuální výsledky.
| Změna | V tomto příkladu, generujete různé klíče? | Důvod |
|---|---|---|
| Nájemníci jsou různí | Ano | Vyhněte se zmatku ohledně rozsahu opětovného použití |
| Různé cílové jazyky | Ano | Cíle překladu se změnily |
| Terminologie se liší verzí | Ano | Terminologie se změnila |
| Vstup a strategie jsou stejné | Ne | Umožňuje dotazům mít existující výsledky |
Hašování není totéž co šifrování nebo řízení přístupu
Nemůžete předpokládat, že hlavní text je desenzibilizovaný jen proto, že klíč cache je SHA-256. Běžné krátké věty mohou být vyjmenovány a ukládání obsahu do cache stále vyžaduje přístupová oprávnění a zásady uchovávání.
Klíč pro zadání ID tenanta může izolovat pouze pojmenování a nemůže nahradit kontroly oprávnění během dotazů.
Jednotné odstranění mezer, interpunkce nebo čísel pro zvýšení úspěšnosti může sloučit různé texty. Normalizační pravidla by měla být explicitně definována a testována s proti-příklady, které mění sémantiku; nemůžete se jen dívat na to, kolik volání se uloží.
Pro související implementace viz Python hashlib.
Opětovné použití služby pro doručení
Pokud je OmniDoc použit jako vstupní bod pro překlad dokumentů, může orchestrace externích úloh také uchovávat vstupní verze a záznamy o přijímání.
Zda znovu použít stávající výsledky, by mělo rozhodnout vaše smlouva o zadaní. Tento článek nenaznačuje, zda platforma používá stejnou strategii cache, ani nezaručuje, že opakované zasílání nepřinese nové úkoly nebo poplatky.
📊 Srovnání jádra
| Metoda | Klíčová rizika nebo odměny | Návrh |
|---|---|---|
Jednoduché šití text + language + version | Nejasné hranice polí snadno vedou k nejednoznačnosti | Přechod na strukturovanou serializaci |
| Strukturovaná serializace | Názvy polí a hranice hodnot jsou jasné a pevný řád klíčů a výstup oddělovače jsou stabilní | Při úpravě pravidel se současně aktualizuje jmenný prostor cache |
| Jako klíč se používá pouze hash zdrojového textu | K nesprávnému použití může dojít napříč projekty nebo nájemci | Začlenit jazyk, terminologii, strategii a rozsah použití |
| Rovnoměrně vymazávejte mezery, interpunkci nebo čísla pro zvýšení úspěšnosti zásahů | Texty s různými významy lze sloučit | Definujte pravidla explicitně a testujte je pomocí protipříkladů |
🎯 Která metoda ti vyhovuje?
Pokud ......
- Potřeba znovu použít překlady napříč více projekty: zahrnout rozsah použití do klíčů cache.
- Pro více nájemců: Zadejte ID nájemce do klíče a provádějte kontroly oprávnění během dotazů.
- Naděje, že výsledky později sledujete nebo reprodukujete: Uložite verzi politiky a skutečné informace o úkolech.
- Pro zlepšení úspěšnosti: nejprve definujte normalizační pravidla a použijte protipříklady, které mění sémantiku.
- Zkontrolovat stávající cache: nejprve zkontrolovat stav, čas vytvoření a zdroj úkolu.
❓ Často kladené otázky (FAQ)
1. Je v pořádku používat pouze hash zdrojového textu pro klíče cache?
Nestačí. Stejná věta může být přeložena různě, v každém případě, nebo v kontextu napříč různými projekty; použití pouze hash může vést k nesprávnému použití překladu do jiných projektů nebo dokonce k mixování mezi nájemci.
2. Pokud klíč cache používá SHA-256, může být obsah v cache zveřejněn?
Ne, nemůžeš. Hašování neznamená šifrování nebo desenzibilizaci; běžné krátké fráze mohou být vyjmenovány a obsah v cache stále vyžaduje přístupová oprávnění a zásady uchovávání.
3. Znamená mít stejný název modelu, že výsledek je vždy stejný?
Žádné záruky. Stejný název modelu neznamená, že server zůstává beze změny. Pokud je potřeba stabilní reprodukce, měla by být uložena verze politiky a skutečné informace o úkolu.
4. Po přepracování terminologie by měla být stará cache okamžitě smazána?
Nemusí to tak být. Staré cache lze uchovávat pro retrospektivní účely, ale nové strategie by je neměly považovat za aktuální výsledky.
📝 Shrnutí
Úspěšnost překladové cache je důležitá, ale nejprve musíte definovat, které podmínky jsou stejné, než bude možné znovu použít. Začleněním jazyka, terminologie, politik, rozsahu a kontextu do klíčů cache, v kombinaci s kontrolami oprávnění a stavovými kontrolami, může být opětovné použití efektivní a spolehlivé.
Zkušenost nyní: Nahrajte svůj dokument a začněte s překladem, přičemž zachováte původní formátování


