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

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:

Tu się wybiera język (dotyczy misji wielojęzykowych)

Kesz zapisuje sobie w
Kod: Zaznacz cały
%localAppData%\ThiefFMTranslationAgent