Ten artykuł dzieli się doświadczeniem z wykorzystania API ChatGPT do efektywnego wsparcia internacjonalizacji (i18n) produktów, dostarczając wskazówki dotyczące integracji z API, poprawy wyników tłumaczenia i optymalizacji instrukcji dla lepszych rezultatów.
GaoFounder
YijunDeveloper
Przestań tracić tygodnie na uwierzytelnianie użytkowników
Uruchamiaj bezpieczne aplikacje szybciej z Logto. Zintegruj uwierzytelnianie użytkowników w kilka minut i skup się na swoim głównym produkcie.
Na dzisiejszym światowym rynku kluczowe jest internacjonalizowanie (i18n) produktów. Obsługa wielu języków pozwala przyciągnąć i obsługiwać globalną bazę użytkowników, zwiększyć doświadczenie użytkownika, lojalność i zdobyć udział w rynku. Jednak wsparcie dla internacjonalizacji często wiąże się z wysokimi kosztami i skomplikowaną konserwacją:
Ustawienie obsługi języka wymaga profesjonalnych zespołów i wybór odpowiednich partnerów, co wymaga czasu i wysiłku.
Tradycyjne procesy tłumaczenia są powolne i wymagają ręcznej interwencji, co utrudnia
adążanie za iteracjami produktu.
W tym artykule podzielimy się doświadczeniem zespołu Logto w efektywnym wsparciu internacjonalizacji
aszych produktów za pomocą ChatGPT i jego API, minimalizując koszty.
Przed zintegrowaniem API ChatGPT, stosowaliśmy tradycyjny proces tłumaczenia do obsługi internacjonalizacji
aszych produktów. Proces ten wyglądał
astępująco:
Dla każdego języka tworzyliśmy folder tłumaczeń zawierający kilka plików TypeScript. Każdy plik składał się z obiektu TypeScript z parami klucz-wartość reprezentującymi klucze fraz i ich tłumaczenia.
Aby dodać
ową frazę, ręcznie dodawaliśmy
ową parę klucz-wartość do pliku tłumaczenia dla każdego języka.
W katalogu głównym każdego języka tworzyliśmy plik index.ts, który eksportował wszystkie pliki tłumaczeń w tym języku.
Oto przykład pliku index.ts dla języka zh-HK:
Aby wyświetlić frazę w interfejsie użytkownika, używaliśmy funkcji, która pobierała tłumaczenie
a podstawie bieżącego środowiska. Dostęp do zagnieżdżonych obiektów lub kluczy uzyskiwaliśmy za pomocą
otacji kropkowej.
Na przykład, jeśli użytkownik korzystał z przeglądarki w języku angielskim:
Napotkaliśmy dwa główne wyzwania z tym podejściem:
Wraz ze wzrostem liczby języków i fraz, utrzymanie plików tłumaczeń stawało się problematyczne. Dodawanie
owych fraz do każdego języka ręcznie było czasochłonne i podatne
a błędy.
Proces tłumaczenia był
iewiarygodny. Bez dedykowanego zespołu tłumaczeń polegaliśmy
a użytkownikach społeczności do większości tłumaczeń. Robili świetną robotę, ale
ieuchronnie tłumaczenia stawały się
iekompletne i
iekonsekwentne z czasem.
Gdy ChatGPT zdobywał popularność, odkryliśmy ciekawe zastosowanie. Przypadkiem skopiowaliśmy obiekt frazy TypeScript do ChatGPT i okazało się, że może tłumaczyć fragment kodu, zachowując strukturę kodu. Odkrycie to
as ucieszyło.
Na przykład:
I wynik:
To było
aprawdę
iezwykłe. W przypadkach rzeczywistych mieliśmy również historyczne pliki, które zawierały
iektóre
ieprzetłumaczone frazy oznaczone // UNTRANSLATED:
ChatGPT był
awet w stanie "częściowo" przetłumaczyć fragment kodu, eliminując ostatnią przeszkodę. Jednak
ie było to jeszcze doskonałe. Przyjrzyjmy się problemom,
a które
atrafiliśmy.
Jednym z dobrze znanych faktów o ChatGPT jest jego
ieprzewidywalna
atura. Czasami wyniki są dokładne, a innym razem mogą być dziwne lub
ie takie, jak zamierzaliśmy. Podczas gdy jest to akceptowalne w kontekście czatbota, staje się problematyczne podczas generowania fragmentów kodu do tłumaczenia.
Wróćmy do przykładu zh-HK:
Oczekiwane tłumaczenie Nice to meet you.
a zh-HK to 很高興見到你。. Jednak istnieją przypadki, w których fragment jest tłumaczony
a zh-CN:
很高兴见到你。 różni się od 很高興見到你。.
Czasami, polecenie "Please translate the..." jest również tłumaczone:
Czasami wyniki zawierają
iepotrzebną treść:
Pierwsza linia "To jest tłumaczenie:" jest
iepotrzebna dla
aszych potrzeb.
Na podstawie powyższych wyników możemy zidentyfikować kilka różnic między ChatGPT a
ami w rozmowie:
Czasami rozpoznawany jest tylko język (zh), bez uwzględnienia różnic regionalnych (zh-HK).
Nie jest w stanie dokładnie zidentyfikować, które treści muszą być tłumaczone.
Jak wcześniej wspomniano, dla istniejących fraz musieliśmy przetłumaczyć te oznaczone // UNTRANSLATED. Wprowadziło to kolejną warstwę złożoności do prompta. Na przykład:
Jeden z wyników, które otrzymaliśmy:
Tłumacząc (lub przekształcając) frazę success i dodali dwa komentarze / / TRANSLATED, które obie były
ieoczekiwane.
Mimo, że poprzednia wskazówka była jasna i konkretna, była dość długa i trudna do zrozumienia,
awet dla ludzi. Aby to poprawić, daliśmy modelowi więcej czasu
a myślenie. Zapewniliśmy krok po kroku wskazówka:
Wyniki znacznie się poprawiły. Jednak czasami ChatGPT wyświetlał "proces myślenia", ponieważ wyraźnie dostarczyliśmy kroków.
Mimo że
ie ma bezpośredniego interfejsu użytkownika, możemy wysłać interaktywną i dynamiczną rozmowę do ChatGPT, przypisując różne "role" do każdej wiadomości. Rola może być jedna z
astępujących:
"system": Odpowiedzialny za kierowanie przepływem i zachowaniem rozmowy, aby zapewnić ciągłość i orientację
a cel.
"assistant": Reprezentuje model ChatGPT, dostarczając odpowiedzi i odpowiedzi.
"user": Reprezentuje użytkownika zadającego pytania i interakcję z modelem.
Za pomocą ról możemy stworzyć bardziej zaangażowaną rozmowę z ChatGPT. Każda wiadomość gra określoną rolę w prowadzeniu rozmowy.
Tutaj możemy użyć roli "system", aby prowadzić ChatGPT, jak wykonać
asze zadanie:
Użyj roli "user", aby poprosić ChatGPT o przetłumaczenie fragmentu kodu:
Użyj roli "assistant", aby wskazać "standand answer":
Na koniec połącz trzy wiadomości powyżej z fragmentem kodu, który chcemy przetłumaczyć, i wyślij pojedyncze żądanie do Chat Completion API. Oto przykład:
Zamieniliśmy languageCode
a docelowy kod, a code
a fragment kodu do tłumaczenia, i zobaczyliśmy dokładnie taki wynik, jakiego oczekiwaliśmy. Bravo!
Choć wyniki były poprawne i stałe, proces korzystania z API ChatGPT był
adal
iezbyt wygodny. Musieliśmy ręcznie kopiować fragment kodu, wkleić go do żądania i zamienić zmienne languageCode i code. Biorąc pod uwagę potrzebę przetłumaczenia ponad 10 języków i 100 fragmentów kodu, to
ie był idealny doświadczenie.
Aby to rozwiązać, postanowiliśmy zintegrować API ChatGPT z
aszym interfejsem wiersza poleceń (CLI). Dodaliśmy dwa polecenia do
aszego CLI:
logto translate sync: To polecenie zbiera fragmenty kodu we wszystkich językach, które zawierają komentarze // UNTRANSLATED, tłumaczy je i zastępuje oryginalne fragmenty kodu przetłumaczonymi wersjami.
logto translate create [languageCode]: To polecenie tworzy
owy język o określonym [languageCode] i przekłada wszystkie fragmenty kodu z domyślnego języka (angielskiego)
a
owy język.
Choć tłumaczenie może
ie być idealne, to jest to ogromna poprawa. Mogliśmy teraz skupić się
a sprawdzaniu i poprawianiu wyników tłumaczenia, zamiast tracić czas
a sam proces tłumaczenia.
Integracja API ChatGPT do
aszego przepływu pracy dla internacjonalizacji produktów może być potężnym
arzędziem, ale wymaga starannego planowania i jasnych instrukcji, aby uzyskać
ajlepsze wyniki.
Jeśli tworzysz aplikacje AI, uwierzytelnianie użytkowników jest
iezbędne. Logto zapewnia prosty i bezpieczny sposób
a uwierzytelnianie użytkowników i oferuje zjednoczony system tożsamości użytkowników we wszystkich twoich aplikacjach, a także oferuje wsparcie out-of-the-box dla wtyczek ChatGPT. Więcej informacji znajdziesz w
aszym wpisie
a blogu: