Svenska
  • chatgpt
  • internationalization
  • productivity

Effektiv internationalisering med ChatGPT

Den här artikeln delar erfarenheten av att använda ChatGPT API för att effektivt stödja internationalisering (i18n) av produkter, ge tips om att integrera API:et, förbättra översättningsresultat och optimera instruktioner för bättre resultat.

Gao
Gao
Founder
Yijun
Yijun
Developer

I dagens globala marknad är det avgörande att internationalisera (i18n) produkter. Genom att stödja flera språk kan produkter attrahera och betjäna en global användarbas, förbättra användarupplevelsen, öka lojaliteten och vinna marknadsandelar. Men stöd för internationalisering kommer ofta med höga kostnader och komplex underhåll:

  • Att sätta upp språkstöd kräver professionella team och val av lämpliga partners, vilket tar både tid och ansträngning.
  • Traditionella översättningsprocesser är långsamma och kräver manuell intervention, vilket gör det utmanande att hålla jämna steg med produktens iterationer.

I den här artikeln kommer vi att dela Logto-teamets erfarenhet av att effektivt stödja internationalisering för våra produkter med hjälp av ChatGPT och dess API, samtidigt som vi minimerar kostnaderna.

Hur vi närmar oss internationalisering

Innan vi integrerade ChatGPT API använde vi en traditionell översättningsprocess för att stödja internationalisering av våra produkter. Processen var följande:

  1. För varje språk skapade vi en översättningsmapp innehållande flera TypeScript-filer. Varje fil bestod av ett TypeScript-objekt med nyckel-värde par som representerade frasnycklar och deras översättningar.
  2. För att lägga till en ny fras lade vi manuellt till ett nytt nyckel-värde par i översättningsfilen för varje språk.
  3. I roten av varje språks mapp skapade vi en index.ts-fil som exporterade alla översättningsfiler på det språket.

Här är ett exempel på index.ts-filen för språket zh-HK:

För att visa en fras i användargränssnittet använde vi en funktion som hämtade översättningen baserat på den nuvarande miljön. Vi kom åt inbäddade objekt eller nycklar med hjälp av punktnotation.

Till exempel, om användaren använde en engelsk webbläsare:

Utmaningar vi stötte på

Vi stötte på två stora utmaningar med detta tillvägagångssätt:

  1. När antalet språk och fraser ökade blev det utmanande att underhålla översättningsfilerna. Att lägga till nya fraser för varje språk manuellt var tidskrävande och benäget för fel.
  2. Översättningsprocessen var opålitlig. Utan ett dedikerat översättningsteam förlitade vi oss på användare i samhället för de flesta översättningarna. De gjorde ett fantastiskt arbete, men oundvikligen blev översättningarna ofullständiga och inkonsekventa över tid.

Introducera ChatGPT

När ChatGPT blev populärt upptäckte vi ett intressant användningsfall. Av misstag kopierade vi ett TypeScript frasobjekt till ChatGPT och fann att det kunde översätta kodsnutten samtidigt som det bevarade kodstrukturen. Denna upptäckt gjorde oss mycket exalterade.

Till exempel:

Och resultatet:

Detta var verkligen anmärkningsvärt. I verkliga fall hade vi också historiska filer som inkluderade några oöversatta fraser markerade med // UNTRANSLATED:

ChatGPT kunde till och med "delvis" översätta kodsnutten, vilket eliminerade det sista hindret. Det var dock fortfarande långt ifrån perfekt. Låt oss se vilka problem vi stötte på.

Prompt-tillverkning

Problemet med det slumpmässiga svaret

En välkänd fakta om ChatGPT är dess oförutsägbara natur. Ibland är resultaten korrekta, medan andra gånger kan de vara konstiga eller inte vad vi avsåg. Även om detta är acceptabelt i en chatbot-kontext, blir det problematiskt när man genererar översättningskodsnuttar.

Låt oss återgå till zh-HK-exemplet:

Den förväntade översättningen för Nice to meet you. i zh-HK är 很高興見到你。. Men det finns tillfällen när snutten översätts till zh-CN:

很高兴见到你。 skiljer sig från 很高興見到你。.

Ibland blir uppmaningen "Please translate the..." också översatt:

Ibland innehåller resultaten onödigt innehåll:

Den första raden "This is the translation:" är onödig för våra behov.

Baserat på resultaten ovan kan vi identifiera flera luckor mellan ChatGPT och oss i konversationen:

  • Ibland blir endast språket härlett (zh), utan att beakta regionala skillnader (zh-HK).
  • Det misslyckas med att exakt identifiera vilket innehåll som behöver översättas.
  • Responsformatet matchar inte våra förväntningar.

Skriv tydliga och specifika uppmaningar

För att åtgärda de problem som nämns ovan förfinade vi vår uppmaning:

Denna nya uppmaning visade sig vara effektiv. Vi instruerade ChatGPT att:

  • Härleda det regionala språket baserat på den angivna språkoden.
  • Översätta kodsnutten avgränsad med trippelbackticks.
  • Säkerställ att outputen behåller originalformatet utan något ytterligare innehåll.

Ge modellen tid att tänka

Som nämnts tidigare, för befintliga fraser, behövde vi översätta de som markerats med // UNTRANSLATED. Detta introducerade ett annat lager av komplexitet till uppmaningen. Till exempel:

Ett av resultaten vi erhöll:

Den översatte (eller transformerade) också frasen success och lade till två // TRANSLATED kommentarer, vilket var båda oväntade.

Även om den tidigare uppmaningen var tydlig och specifik, var den ganska lång och utmanande att följa, även för människor. För att förbättra detta gav vi modellen mer tid att tänka. Vi gav en steg-för-steg uppmaning:

Resultaten förbättrades avsevärt. Ibland skulle dock ChatGPT visa "tankeprocessen" eftersom vi uttryckligen angav stegen.

Roller i konversationer

Även om det inte finns något direkt användargränssnitt, kan vi skicka en interaktiv och dynamisk konversation till ChatGPT genom att tilldela olika "roller" till varje meddelande. Rollen kan vara en av följande:

  • "system": Ansvarig för att vägleda flödet och beteendet i konversationen för att säkerställa kontinuitet och målorientering.
  • "assistant": Representerar ChatGPT-modellen själv, och ger svar och responser.
  • "user": Representerar användaren som ställer frågor och interagerar med modellen.

Genom att använda roller kan vi skapa en mer engagerande konversation med ChatGPT. Varje meddelande spelar en specifik roll i att vägleda konversationen.

Här kan vi använda "system" rollen för att vägleda ChatGPT i hur man utför vår uppgift:

Använd rollen "user" för att be ChatGPT att översätta kodsnutten:

Använd "assistant" rollen för att indikera "standard svaret":

Slutligen, kombinera de tre meddelandena ovan med kodsnutten vi vill översätta, och skicka en enda förfrågan till Chat Completion API. Här är ett exempel:

Vi ersatte languageCode med koden för målet och code med kodsnutten att översätta, och såg det exakta resultatet vi förväntade oss. Bravo!

Integrera med vårt CLI

Även om resultaten var korrekta och stabila, var processen att använda ChatGPT API fortfarande inte särskilt bekväm. Vi var tvungna att manuellt kopiera kodsnutten, klistra in den i förfrågan, och ersätta variablerna languageCode och code. Med tanke på behovet av att översätta mer än 10 språk och 100 kodsnuttar var detta inte en idealisk upplevelse.

För att åtgärda detta beslutade vi att integrera ChatGPT API in i vårt Kommandoradsgränssnitt (CLI). Vi lade till två kommandon till vårt CLI:

  • logto translate sync: Detta kommando samlar kodsnuttar över alla språk som innehåller // UNTRANSLATED kommentarer, översätter dem, och ersätter de ursprungliga kodsnuttarna med de översatta versionerna.
  • logto translate create [languageCode]: Detta kommando skapar ett nytt språk med det angivna [languageCode] och översätter alla kodsnuttar från det standardspåk (engelska) till det nya språket.

Även om översättningen kanske inte är perfekt, är det fortfarande en stor förbättring. Vi kunde nu fokusera på att validera och förbättra översättningsresultaten istället för att spendera tid på själva översättningsprocessen.

Slutsats

Att integrera ChatGPT API in i vår arbetsflöde för produktinternationalisering kan vara ett kraftfullt verktyg, men det kräver noggrann planering och tydliga instruktioner för att få de bästa resultaten.

Om du utvecklar AI-applikationer är användarauktorisering avgörande. Logto tillhandahåller ett enkelt och säkert sätt att autentisera dina användare och erbjuder ett enhetligt användaridentiätssystem över alla dina applikationer, och erbjuder också ut-of-the-box stöd för ChatGPT-plugins. För mer information, kolla in vårt blogginlägg:

Genomför ChatGPT-plugins användarauktorisering med Logto