TFMTA - wihajster do autonomicznego tłumaczenia fanmisji

Wejdź tutaj, jeśli utknąłeś w którejś fanmisji, potrzebujesz pomocy, chcesz wyrazić swoją opinię, podzielić się przemyśleniami na temat własnych lub cudzych FMs.

Moderator: Mixthoor

Awatar użytkownika
raven4444
Szaman
Posty: 1041
Rejestracja: 29 lipca 2007, 14:00
Lokalizacja: Poznań
Płeć:
Kontakt:

TFMTA - wihajster do autonomicznego tłumaczenia fanmisji

Post autor: raven4444 »

Nudziło mi się. Jednym z efektów takich nudnych eventów w moim życiu jest @FMBOT.
W tym przypadku dodatkowo chciałem liznąć nową technologię i wylosowało Rusta, aby dostał flashbacków z dzieciństwa, kiedy to w C pisałem jakieś głupie kalkulatory. A przecież nie będę pisać nic pajtonie czy innej dżawie w wersji skrypt :twisted: A nauka jakiegoś języka/frameworku bez machnięcia sensownej apki nie ma sensu i jest to strata czasu.

Wracając do tematu, machnąłem ustrojstwo, które korzystając z API od OpenAI przetłumaczy zawartość plików odpowiedzialnych za księgi, cele misji i przedmioty.
Wiem, że kiedyś wspominałem, że nawet po finetuningu obecne LLM-y tak średnio tłumaczą Thiefa na polski. Tak szczerze to wiedza sprzed ponad pół roku, jak i sprzed klepnięcia kilku szkoleń z prompt engineeringu itp. I kurcze powiem wam, że GPT-4o z porządnym promptem systemowym w technice few-shot daje naprawdę zadowalający wynik. Wiadomo są pewne nieścisłości, LLM jak to LLM jest niedeterministyczny więc ta sama fraza może zostać przetłumaczona na dziesiątki sposobów, ale nadal jest naprawdę git.

Na ten moment apka jest sterowana przez konsolę, tłumaczy teksty książek, cele misji i obiekty. Do działania potrzebuje klucza do API OpenAI i wpłaconych kilku dolarów. Co do kosztu to nie kalkulowałem, ale w panelu widzę, że przetłumaczenie Kingsbridge to 180k tokenów, z czego 168k siedzi w cache — czyli wychodzą grosze. Wiadomo im więcej tekstów tym więcej tokenów, ale rachunków za wysokich to nie wygeneruje, podejście pay-as-you-go eliminuje wydatki powyżej wpłaconego budżetu.

Aplikacja jest dostępna na GitHub, gdzie w zakładce releases jest dostępny skompilowany plik wykonywalny, jak i dostępny jest cały kod + prompty systemowe.

Wystarczy pobrać plik exe i uruchomić go. Apka najpierw zapyta o klucz do API i podaniu poprawnego zapisze go w bezpiecznej formie. Kolejnym krokiem jest podanie ścieżki do fan misji wypakowanej przez AngelLoader. I to tak naprawdę tyle. Instrukcja jest na GitHubie.

Ficzery&Bajery:
  • tłumaczenie ksiąg, obiektów, celów misji,
  • wznawianie tłumaczeń — apka buduje sobie cache, który zawiera tłumaczenia, w razie jakiejś awarii można wznowić przetwarzanie od tego momentu,
  • bezpieczne zapisywanie klucza do API, nie trzeba go podawać co uruchomienie aplikacji,
  • dynamicznie pobieranie promptów systemowych — te prompty to święta rzecz dla LLMa, każda zmiana nie będzie wymagać pobierania nowej wersji apki,
  • wsparcie dla preNewDark i postNewDark fanmisji — w przypadku tych pierwszy nadpisywane są pliki angielskie a przy tych drugich wystarczy wybrać język polski w AngelLoader, w zakładce Edit FM,
  • sprawdzenie czy jest nowa wersja apki.

Czego nie ma a może będzie:
  • tłumaczenie innych rzeczy — może się zdarzyć, że np. menu główne jest po angielsku, na ten moment ma to bardzo niski priorytet,
  • cofanie tłumaczenia — dotyczy tylko preNewDark, rollback do oryginalnych plików,
  • GUI — ciekawi mnie jak się buduje GUI w Rust,
  • tłumaczenie spakowanych misji — wrzucasz zipa i dostajesz przetłumaczonego zipa,
  • Multilang — wsparcie dla wielu języków. Myślałem, czy taka apka nie będzie bazą dla twórców tak, aby mogli wypuszczać wielojęzyczne fanmisje. Tak naprawdę po maszynowym przetłumaczeniu wystarczy wprowadzić korektę i testy.

Czego nie ma i raczej nie będzie:
  • Tłumaczenie plików graficznych i map — nie jest to nie możliwe, ale wymaga ogromu pracy i wydajnego komputera. Trzeba uruchomić kilka modeli lokalnie które będą za zadanie mieć wyciągnąć teksty, określić pozycję i rozmiar, pozbyć się oryginału a po tłumaczeniu wkleić do grafiki.

I to chyba tyle, apka podczas działania wygląda tak:
Obrazek
Tu się wybiera język (dotyczy misji wielojęzykowych)
Obrazek

Kesz zapisuje sobie w

Kod: Zaznacz cały

%localAppData%\ThiefFMTranslationAgent
W razie problemów bądź pytań, walcie tutaj albo na githubie.
Awatar użytkownika
SPIDIvonMARDER
Garrett
Posty: 5223
Rejestracja: 29 stycznia 2008, 21:32
Lokalizacja: Świątynia Nieba z Zaginionego Miasta
Płeć:
Kontakt:

Re: TFMTA - wihajster do autonomicznego tłumaczenia fanmisji

Post autor: SPIDIvonMARDER »

Widzę, że post wisi już kilka dni i jeszcze nikt nie skomentował. Chciałem zatem pogratulować włożonej pracy i zaangażowanie w pomoc łacherom ^^

Od razu zapytam: a jak to sobie radzi ze slangiem Pogan i Hemmerytów?
Obrazek
Awatar użytkownika
Juliusz
Złodziej
Posty: 2781
Rejestracja: 04 stycznia 2004, 11:28
Lokalizacja: Dublin
Kontakt:

Re: TFMTA - wihajster do autonomicznego tłumaczenia fanmisji

Post autor: Juliusz »

Ja mogę pogratulować projektu jako całości - w sensie uczenia się nowego języka/frameworka i zrobienia zarazem czegoś konkretniejszego niż kalkulator czy hello world.
Doceniłbym pewnie bardziej gdyby nie to, że gadam i gram po angielsku, więc raczej nie bedę end userem tego. A poza tym to nie lubię AI, jako tako... Ale to odrębny temat.
Awatar użytkownika
raven4444
Szaman
Posty: 1041
Rejestracja: 29 lipca 2007, 14:00
Lokalizacja: Poznań
Płeć:
Kontakt:

Re: TFMTA - wihajster do autonomicznego tłumaczenia fanmisji

Post autor: raven4444 »

SPIDIvonMARDER pisze: 26 stycznia 2025, 13:30 a jak to sobie radzi ze slangiem Pogan i Hemmerytów?
It depends :D Obecnie prompt systemowy dla książek naprowadza model do takich tłumaczeń:
Obrazek

Korzystam z zasady few-shot prompting więc tak naprawdę pokazuję modelowi przykłady tłumaczeń. Wystarczy dodać więcej przykładów w oczekiwanym dialekcie i zacznie korzystać ze slangu. W ogóle możesz sobie przejrzeć te prompty - https://github.com/raven4444/ThiefFMTra ... ts/prompts
Juliusz pisze: 26 stycznia 2025, 22:27 Doceniłbym pewnie bardziej gdyby nie to, że gadam i gram po angielsku, więc raczej nie bedę end userem tego.
Wiesz, jak jedna osoba tego użyje to będzie jakiś tam sukces, ale nie o to chodziło. Jak sam napisałeś, lepiej naskrobać coś, co może użyje choć jedna osoba niż kolejną ewolucję wokół kalkulatora.
ODPOWIEDZ