High Tech,  TDM

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:

  1. 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.
  2. 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.
  3. Akapity są wysyłane w trybie wsadowym, aby przyspieszyć
  4. 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:

  1. Zainstalować Sublime Text (do kodowania)
  2. Zainstalować Wampserver
  3. Zainstalować PHP
  4. Zainstalować Composer
  5. Zainstalować Guzzle HTTP Client
  6. 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.

Odtąd używam Claude Code, więcej informacji tutaj, et tam

Możliwość komentowania Jak przetłumaczyć całą książkę za pomocą OpenAI API i ChatGPT została wyłączona