zohar-translator

Ilgos formos LLM vertimo sistema: dešimtys tūkstančių pastraipų, prenumeratos limitų apėjimas, automatinis publikavimas. Diegimas vyksta per RUN_ME.md, kurį skaito operatoriaus LLM agentas.

Kas tai ir kam to reikia

Išversti 1700 puslapių komentarą „Perušas ha-Sulamas“ Zoharo knygai iš hebrajų ir aramėjų į rusų kalbą, remiantis tik nuosava Claude prenumerata (Opus 4.7 modeliu) — pasirodė įmanoma. zohar-translator yra būtent tos sistemos branduolys, kuris atlieka tokį vertimą ir kuris dabar veikia su bet kokiu ilgu korpusu ir bet kokia kalbų pora.

Įvestis — teksto katalogas (skyriai → straipsniai → pastraipos) ir Claude prenumerata. Išvestis — statinė svetainė su išverstu korpusu, ištisine pastraipų numeracija, skyriais ir išnašomis. Tarp jų sėdi orchestrator: jis pjausto straipsnius į skaidinius pagal simbolių biudžetą, lygiagrečiai vykdo translator agentus, apeina 5 valandų ir savaitės prenumeratos langus bei komituoja rezultatą į GitHub Pages, kai užbaigiamas kiekvienas skyrius.

Veikiantis pavyzdys — mūsų Zoharo knygos vertimas: imyavel.github.io/zohar-sulam (CC BY 4.0 licencija, nurodyta svetainėje). Po gaubtu — būtent ta sąranka, kurią galite įdiegti pas save.

Norėdamas pritaikyti sistemą savo korpusui, operatorius įdiegia Claude Code ir jam sako: „perskaityk RUN_ME.md ir vesk mane žingsnis po žingsnio“. Toliau LLM agentas perves per 8 pritaikymo etapus; techninės patirties nereikia.

Diegimo etapai

Kiekvienas etapas aprašytas atskirame faile stages/NN_*.md. Operatoriaus LLM agentas užkrauna juos vieną po kito, užduoda operatoriui klausimus formoje „(Q N iš NN: …)“ ir fiksuoja atsakymus progress.json faile — tai leidžia bet kuriuo metu nutraukti sesiją ir tęsti nuo tos pačios vietos naujoje.

  1. Environment Python priklausomybių diegimas ir patikrinimas, kad standartinis GUI sėkmingai paleidžiamas. Be to kiti etapai neturi prasmės. stages/01_setup.md →
  2. Source loader Iš kur kraunamas korpusas. Sefaria tekstams — paruoštas fast-path per reference/source_loader/download_sefaria.py. Savam šaltiniui operatorius parašo įkroviklį tuo pačiu formatu (JSON pastraipos sugrupuotos pagal skyrius). stages/02_source_loader.md →
  3. Text structure Skaidymo vienetai: kas tampa „straipsniu“ (vertimo vienetu) ir kaip pastraipos pjaustomos į skaidinius pagal simbolių biudžetą. Zoharui — skyriai → straipsniai → Sulamo pastraipos; kitam korpusui — analogiška trijų lygių hierarchija. stages/03_text_structure.md →
  4. Glossary Terminų žodynas. Galima paimti mūsų Zoharo žodyną kaip pradinį tašką (jei verčiate patį Zoharą), arba paimti tik failo struktūrą ir metodologiją (translator agentas dirba su žodynu per CLI įrankį, o ne užkraunamas su visu jo turiniu). stages/04_glossary.md →
  5. Prompt template Vertimo stilius (pažodinis / literatūrinis / mišrus), formatavimo taisyklės, kaip žymėti „kūrybines“ vietas vertėjo išnašomis. Šabloną templates/translation_prompt.md LLM agentas pritaiko pagal operatoriaus pasirinkimus. stages/05_prompt.md →
  6. Publish target Kur publikuojamas rezultatas: GitHub Pages pagal mūsų šabloną (automatinis diegimas per src/gh_deploy.py), nuosavas kanalas (S3 / GitLab / savas serveris) arba tik lokaliai, be publikavimo. stages/06_publish.md →
  7. Smoke run Trumpas end-to-end paleidimas su sintetiniu mini-korpusu: patikrina, ar visas pipeline (chunking → translator → resume → commit) per kelias minutes veikia pritaikytoje sistemoje, neeikvojant realios prenumeratos pilnam korpusui. stages/07_smoke.md →
  8. Hand-off Operatorius paleidžia GUI pilnam korpusui ir stebi jį per Telegram botą. Nuo šios akimirkos diegimo LLM agentas pasišalina, toliau sistema veikia pati. stages/08_handoff.md →

Vertėjo architektūra (GUI + Telegram)

Detalus aprašymas — ARCHITECTURE.md faile (9 skyriai: orkestratoriaus FSM, lygiagretumas, limitų apėjimas, chunking+resume, gh_deploy, plėtimo taškai, recovery skriptai). Čia — svarbiausia.

  • GUI (src/gui.pyw) — pagrindinis langas su batch'ų eile, straipsnių būsenomis, chunking biudžetu ir start/stop mygtukais. Tai operatoriaus įėjimo taškas.
  • Telegram botas (src/bot.py) — pranešimai apie skyrių užbaigimą, hit-limit (5h), weekly-limit ir klaidas. Komandos tęsimui ir būsenos patikrinimui. Pasirenkamas (paleidimas su --no-bot).
  • Orchestrator (src/orchestrator.py) — FSM su būsenomis PREPARING → RUNNING → COMPLETED / HIT_LIMIT / WEEKLY_LIMIT / FAILED. Tvarko pakartojimus, atstato būseną po lūžių, valdo translator agentų lygiagretumą.
  • Chunking — pastraipos grupuojamos į skaidinius pagal šaltinio teksto simbolių biudžetą (pagal nutylėjimą ~7500). Pastraipa niekada nepjaunama viduryje; didelė pastraipa tampa atskiru skaidiniu kaip visuma.
  • Resume — jei translator nutrūko straipsnio viduryje (hit-limit, network, OOM), pakartotinis paleidimas perskaito jau išverstą dalį, suranda paskutinę pilnai įrašytą pastraipą ir tęsia nuo kitos. Dublikatai neįrašomi, numeracija lieka ištisinė.
  • Limitų apėjimas — atsidūrus 5 valandų prenumeratos lange, orchestrator perveda batch'ą į WAITING, miega iki lango atstatymo ir tęsia. Savaitės limitui — pauzė iki atstatymo su TG pranešimu. Jokio rankinio operatoriaus darbo tarp langų nereikia.
  • gh_deploy (src/gh_deploy.py) — po kiekvieno užbaigto skyriaus atlieka commit + push į main; GitHub Pages tai pasiima ir atnaujina viešąją svetainę. Užbaigti skyriai pasirodo svetainėje vertimo eigoje, nereikia laukti viso korpuso pabaigos.

Atsiliepimai

Kadangi pats šis diegimo mechanizmas dar neišbandytas svetimose mašinose ir svetimose rankose, pirmiesiems savanoriams, nutarusiems juo pasinaudoti ir savarankiškai pereiti diegimo bei pritaikymo savo korpusui procesą, būsiu dėkingas už atsiliepimus apie pastebėtus šiurkštumus, nutylėjimus ar tiesiogines instrukcijos klaidas — rašykite man imyavel@gmail.com.

Šaltinio kodas, RUN_ME ir issues — github.com/imyavel/zohar-translator. Licencija — MIT kodui ir dokumentacijai; Zoharo vertimas-pavyzdys — CC BY 4.0.