Jak przetłumaczyć całą książkę za pomocą OpenAI API i ChatGPT
Ten artykuł jest skierowany do geeków.
Zawsze uważałem, że to niesprawiedliwe, że nie mamy dostępu do wszystkich książek na świecie tylko dlatego, że znikoma część jest przetłumaczona na jeden z języków, które znam. Odkryłem DeepL i Google Translate, gdzie można po prostu wgrać plik (docx lub pdf) i uzyskać natychmiastowe tłumaczenie.
Jednak wietnamski nie jest zbyt dobrze obsługiwany na tych dwóch platformach i od dawna szukałem alternatywy dla tych dwóch narzędzi.
Kilka dni temu zauważyłem, że tłumaczenie GPT4 jest niezwykle precyzyjne w porównaniu z wersją GPT3.5, DeepL i Google Translate.
Próbowałem wgrać plik PDF i uzyskać tłumaczenie jednym kliknięciem, ale ChatGPT obraża się na zbyt duże pliki i chce tłumaczyć tylko jedną lub dwie strony. Poprosiłem JB, czy mógłby napisać mi program do tłumaczenia moich chińskich książek, ale odpowiedział, że to w ogóle nie jest jego priorytet. Chciałem skorzystać z płatnej strony (używającej API OpenAI, ale chciał mi naliczyć 200$ za tłumaczenie książki). Więc wziąłem klawiaturę, komputer i sam zakodowałem.
W końcu zakodowałem „sam”, z pomocą ChatGPT. Pisałem prompty, aby opisać mu funkcje, które chcę. Ogólnie rzecz biorąc:
- Mały interfejs webowy do wgrywania pliku bazowego (.txt) i wyboru z określonej listy języka źródłowego i docelowego. Wybrałem .txt, ponieważ na razie nie czuję się jeszcze na siłach, aby zarządzać wierną kopią książki do tłumaczenia z obrazami (pdf, epub itp.). Plik tekstowy jest bardzo prosty, bardzo dobry.
- Tekst do tłumaczenia musi być podzielony na kilka akapitów. Maksymalnie xxx znaków. Cięcie na małe akapity pozwala ominąć limity wywołań i tokenów na minutę. Te dane (xxx znaków) wciąż testuję, aby znaleźć optymalne wartości, żeby było szybko, żeby płacić mniej, a jednocześnie respektować limity przetwarzania.
- Akapity są wysyłane w trybie wsadowym, aby przyspieszyć
- Tłumaczenie jest przechowywane w pliku .txt, aktualizowanym za każdym razem, gdy pojawi się nowe tłumaczenie. Dzięki temu, nawet jeśli program się zawiesi, odzyskamy już przetłumaczoną część i dowiemy się dzięki drugiemu plikowi .txt, gdzie tłumaczenie się zatrzymało.
ChatGPT wygenerował mi więc kilka fragmentów kodu, które poprawiłem, krytykując je lub doprecyzowując moje prośby. W końcu otrzymałem plik .html i plik .php

Ponieważ kilka dni temu musiałem przeinstalować Windows, nie mam już żadnego oprogramowania na komputerze. Po otrzymaniu dwóch kodów trzeba było:
- Zainstalować Sublime Text (do kodowania)
- Zainstalować Wampserver
- Zainstalować PHP
- Zainstalować Composer
- Zainstalować Guzzle HTTP Client
- Zainstalować CURL i zależności, uzyskać plik cacert.pem
Wszystko to było prowadzone przez ChatGPT, bo przy każdym komunikacie o błędzie wiemy, że trzeba coś zainstalować.
Następnie poszedłem do OpenAI, aby wygenerować klucz API. To bardzo, bardzo proste, szczerze mówiąc, miałem 100 razy więcej trudności z API Google i Bing, a tutaj jest nawet zbyt łatwo.
Musiałem zapłacić 10$ (+2$ podatku), aby uzyskać dostęp do API. 5$ wystarczy, ale cóż, wiem, że mam dużo do tłumaczenia…
Efekt
Kilka godzin później oto wynik: Interfejs (plik HTML) do wgrywania mojego pliku .txt

Tłumaczenie wygenerowane w interfejsie. Ale mam też przetłumaczony plik .txt lokalnie.

Widać, że wszystko jest lokalnie, bo to skrypt napisany dla mnie, nie zamierzam go wrzucać do sieci.
Cennik
Na początku testowałem z modelem gpt-3.5-turbo , aby płacić mniej i mimo wszystkich testów zapłaciłem tylko 1 centa. Natomiast mini testy z modelem gpt-4 kosztują znacznie więcej, widzi się, jak centy uciekają. Jednak tłumaczenie jest naprawdę lepsze, to przyjemność je czytać.
Według moich szacunków, kosztowało mnie to około 2$ za przetłumaczenie 4000 chińskich znaków, czyli 28 stron z modelem gpt-4. To związane z tym, że na początku zbyt mocno segmentowałam. A prompt również zużywa tokeny. Im bardziej segmentuję, tym częściej powtarzam prompt i to kosztuje.
Następnie zobaczyłam, że gpt-4-1106-preview oferował tę samą jakość tłumaczenia, a kosztował 3 razy mniej. Jedyną wadą w momencie mojego testu był absurdalny limit odpowiedzi (trochę ponad 4000 tokenów), więc musiałam odpowiednio segmentować tekst. Uwaga: ten limit został od tego czasu znacznie zwiększony.
Po lepszym segmentowaniu tekstu (500 chińskich znaków na żądanie i 4040 tokenów łącznie na żądanie) i przejściu na gpt-4-1106-preview (3 razy taniej) płacę około 12$ za książkę (134 000 chińskich znaków średnio na książkę, każdy chiński znak tłumaczy się następnie na średnio 4 łacińskie znaki).
To nadal OK, biorąc pod uwagę, że DeepL naliczyłby 8$ za tłumaczenie na francuski, a Google Translation 0$. Ale to książka, na której mi zależy i nie do końca zrozumiałam tłumaczenie Google, więc jestem gotowa zapłacić trochę więcej, aby mieć dostęp do wiedzy.
Zajęło mi trochę czasu znalezienie adresu URL API OpenAI i modeli, ponieważ ChatGPT nie podawał mi właściwego. Podaję je tutaj:
$url = 'https://api.openai.com/v1/chat/completions'; // Adres URL dla API OpenAI
$data = [
'model' => 'gpt-4-1106-preview', // Określenie modelu
'messages' => $messages,
'max_tokens' => 4040 // Dostosuj do swoich potrzeb
];
Kod do wysyłki wsadowej nie działał zbyt dobrze, przyjrzę się później, jak to ulepszyć. Bez wysyłki wsadowej tłumaczenie jest niestety dość wolne: 1 minuta na stronę, czyli 133 słowa na minutę.
gpt-4-1106-preview jest tańszy niż gpt-4, ale w momencie, gdy go używałam, limity były szybko osiągane. Nie mogę przetłumaczyć więcej niż jedną książkę dziennie (uwaga: limity zostały od tego czasu zwiększone). Tak więc zajęło mi tydzień przetłumaczenie wszystkich 6 książek. Modele ciągle się zmieniają, nie wahaj się testować, zwiększać tokeny na żądanie, porównywać ceny i wybrać model najlepiej dopasowany do Twoich potrzeb.
Nie jestem z wykształcenia programistką, ale rozumiem HTML, PHP i JavaScript. To, że ChatGPT podaje mi gotowe kody na tacy, a ja muszę je tylko poprawić, zaoszczędziło mi dużo czasu. Przykłady kodów na OpenAI są głównie w Pythonie, a ja koduję w PHP, zajęłoby mi dużo czasu tłumaczenie tych przykładów z Pythona na PHP bez ChatGPT. Krótko mówiąc, gorąco polecam korzystanie z ChatGPT do małych skryptów, czy to z API OpenAI, czy nie.
