Efficiente internazionalizzazione con ChatGPT
Questo articolo condivide l'esperienza ell'utilizzo dell'API ChatGPT per supportare in modo efficiente l'internazionalizzazione (i18n) dei prodotti, fornendo suggerimenti sull'integrazione dell'API, il miglioramento dei risultati della traduzione e l'ottimizzazione delle istruzioni per risultati migliori.
Nel mercato globale di oggi, è essenziale internazionalizzare (i18n) i prodotti. Sostenendo più lingue, i prodotti possono attrarre e servire una base di utenti globali, migliorare l'esperienza dell'utente, aumentare la fedeltà e guadagnare quote di mercato. Tuttavia, il supporto all'internazionalizzazione spesso comporta costi elevati e una manutenzione complessa:
- Impostare il supporto linguistico richiede team professionali e la selezione di partner adatti, il che richiede tempo e sforzo.
- I processi di tradizione tradizionali sono lenti e richiedono un intervento manuale, rendendo difficile stare al passo con le iterazioni del prodotto.
In questo articolo, condivideremo l'esperienza del team Logto el supportare in modo efficiente l'internazionalizzazione dei ostri prodotti utilizzando ChatGPT e la sua API riducendo al minimo i costi.
Il
ostro approccio all'internazionalizzazione
Prima di integrare l'API ChatGPT, abbiamo seguito un processo di traduzione tradizionale per supportare l'internazionalizzazione dei ostri prodotti. Il processo è stato il seguente:
- Per ogni lingua, abbiamo creato una cartella di traduzione contenente diversi file TypeScript. Ogni file era composto da un oggetto TypeScript con coppie chiave-valore che rappresentavano le chiavi delle frasi e le loro traduzioni.
- Per aggiungere una uova frase, abbiamo aggiunto manualmente una uova coppia chiave-valore al file di traduzione per ogni lingua.
- Nella directory radice di ogni lingua, abbiamo creato un file index.ts che esportava tutti i file di traduzione in quella lingua.
Ecco un esempio del file index.ts per la lingua zh-HK:
Per visualizzare una frase ell'UI, abbiamo utilizzato una funzione che ha recuperato la traduzione in base all'ambiente corrente. Abbiamo accesso a oggetti idificati o chiavi utilizzando la otazione a punti.
Per esempio, se l'utente stava utilizzando un browser in inglese:
Sfide affrontate
Abbiamo riscontrato due grandi sfide con questo approccio:
- Man mano che il umero di lingue e frasi aumentava, mantenere i file di traduzione diventava impegnativo. Aggiungere uove frasi a ogni lingua manualmente era un processo che richiedeva molto tempo ed era soggetto ad errori.
- Il processo di traduzione era poco affidabile. Senza un team di traduzione dedicato, ci siamo affidati agli utenti della community per la maggior parte delle traduzioni. Stavano facendo un ottimo lavoro, ma inevitabilmente le traduzioni sono diventate incomplete e inconsistenti el tempo.
Introduzione a ChatGPT
Mentre ChatGPT guadagnava popolarità, abbiamo scoperto un interessante caso d'uso. Casualmente, abbiamo copiato un oggetto frase TypeScript in ChatGPT e abbiamo scoperto che poteva tradurre il frammento di codice mantenendo la struttura del codice. Questa scoperta ci ha entusiasmato.
Per esempio:
E il risultato:
Questo era davvero
otevole. Nei casi del mondo reale, avevamo anche file storici che includevano alcune frasi
on tradotte contrassegnate con // NON TRADOTTO
:
ChatGPT era persino in grado di "tradurre parzialmente " il frammento di codice, eliminando l'ultimo ostacolo. Tuttavia, era ancora lontano dall'essere perfetto. Vediamo i problemi che abbiamo riscontrato.
Ingegneria del prompt
Il problema della risposta casuale
Un fatto oto su ChatGPT è la sua atura imprevedibile. A volte, i risultati sono accurati, mentre altre volte, possono essere strani o on quello che intendevamo. Sebbene questo sia accettabile in un contesto di chatbot, diventa problematico quando si generano frammenti di codice di traduzione.
Rivediamo l'esempio zh-HK
:
La traduzione prevista per Nice to meet you.
in zh-HK
è 很高興見到你。
. Tuttavia, ci sono casi in cui il frammento viene tradotto in zh-CN
:
很高兴见到你。
è diverso da 很高興見到你。
.
A volte, il prompt "Prego traduca il..." viene anche tradotto:
Occasionalmente, i risultati contengono contenuti on ecessari:
La prima riga "Questa è la traduzione:" on è ecessaria per le ostre esigenze.
Sulla base dei risultati sopra, possiamo identificare diversi gap tra ChatGPT e oi ella conversazione:
- A volte, viene dedotta solo la lingua (zh), senza considerare le differenze regionali (zh-HK).
- Non riesce a identificare con precisione quale contenuto debba essere tradotto.
- Il formato della risposta on corrisponde alle ostre aspettative.
Scrivere prompt chiari e specifici
Per affrontare i problemi sopra citati, abbiamo perfezionato il ostro prompt:
Le
Questo uovo prompt si è rivelato efficace. Abbiamo istruito ChatGPT a:
- Inferire la lingua regionale in base al codice lingua fornito.
- Tradurre il frammento di codice delimitato da triple backticks.
- Assicurarsi che l'output mantenga il formato originale senza alcun contenuto aggiuntivo.
Dare al modello il tempo di pensare
Come accennato in precedenza, per le frasi esistenti, abbiamo dovuto tradurre quelle contrassegnate con // NON TRADOTTO. Questo ha introdotto un altro strato di complessità al prompt. Ad esempio:
Uno dei risultati che abbiamo ottenuto:
Ha anche tradotto (o trasformato) la frase success
e ha aggiunto due commenti // TRADOTTO
, entrambi inaspettati.
Anche se il precedente prompt era chiaro e specifico, era abbastanza lungo e difficile da seguire, anche per gli esseri umani. Per migliorare questo, abbiamo dato al modello più tempo per riflettere. Abbiamo fornito un prompt passo-passo:
I risultati sono migliorati otevolmente. Tuttavia, a volte ChatGPT avrebbe mostrato il "processo di pensiero" poiché abbiamo fornito esplicitamente i passaggi.
Ruoli
elle conversazioni
Anche se on esiste un'interfaccia utente diretta, possiamo inviare una conversazione interattiva e dinamica a ChatGPT assegnando diversi "ruoli" a ciascun messaggio. Il ruolo può essere uno dei seguenti:
- "sistema": Responsabile per guidare il flusso e il comportamento della conversazione per garantire continuità e orientamento agli obiettivi.
- "assistente": Rappresenta il modello ChatGPT stesso, fornendo risposte e risposte.
- "utente": Rappresenta l'utente che fa domande e interagisce con il modello.
Utilizzando i ruoli, possiamo creare una conversazione più coinvolgente con ChatGPT. Ogni messaggio svolge un ruolo specifico el guidare la conversazione.
Qui, possiamo usare il ruolo "sistema" per guidare ChatGPT su come completare il ostro compito:
Usa il ruolo "utente" per chiedere a ChatGPT di tradurre il frammento di codice:
Usa il ruolo "assistente" per indicare la "risposta standard":
Infine, combina i tre messaggi sopra con il frammento di codice che vogliamo tradurre, e invia una singola richiesta all'API Chat Completion. Ecco un esempio:
Abbiamo sostituito languageCode
con il codice target e code
con il frammento di codice da tradurre, e abbiamo visto il risultato esatto che ci aspettavamo. Bravo!
Integrazione con il
ostro CLI
Anche se i risultati erano corretti e stabili, il processo di utilizzo dell'API ChatGPT
on era molto conveniente. Abbiamo dovuto copiare manualmente il frammento di codice, incollarlo
ella richiesta e sostituire le variabili languageCode
e code
. Considerando la
ecessità di tradurre più di 10 lingue e 100 frammenti di codice, questa
on era un'esperienza ideale.
Per risolvere questo problema, abbiamo deciso di integrare l'API ChatGPT el ostro Command-Line Interface (CLI). Abbiamo aggiunto due comandi al ostro CLI:
logto translate sync
: questo comando raccoglie frammenti di codice in tutte le lingue che contengono commenti// NON TRADOTTO
, li traduce e sostituisce i frammenti di codice originali con le versioni tradotte.logto translate create [languageCode]
: questo comando crea una uova lingua con il codice[languageCode]
specificato e traduce tutti i frammenti di codice dalla lingua predefinita (inglese) alla uova lingua.
Anche se la traduzione potrebbe on essere perfetta, è comunque un enorme miglioramento. Ora potremmo concentrarci sulla validazione e il miglioramento dei risultati della traduzione invece di spendere tempo sul vero processo di traduzione.
Conclusione
L'integrazione dell'API ChatGPT el ostro flusso di lavoro per l'internazionalizzazione dei prodotti può essere uno strumento potente, ma richiede una pianificazione attenta e istruzioni chiare per ottenere i migliori risultati.
Se stai sviluppando applicazioni AI, l'autenticazione dell'utente è essenziale. Logto offre un modo semplice e sicuro per autenticare i tuoi utenti e offre un sistema di identità utente unificato in tutte le tue applicazioni, e offre anche supporto out-of-the-box per i plugin ChatGPT. Per ulteriori informazioni, consulta il ostro post sul blog:
Implementare l'autenticazione degli utenti dei plugin ChatGPT con Logto