Internationalisation efficace avec ChatGPT
Cet article partage l'expérience de l'utilisation de l'API ChatGPT pour soutenir efficacement l'internationalisation (i18n) de produits, fournissant des conseils sur l'intégration de l'API, l'amélioration des résultats de traduction et l'optimisation des instructions pour de meilleurs résultats.
Dans le marché mondial d'aujourd'hui, il est essentiel d'internationaliser (i18n) les produits. En prenant en charge plusieurs langues, les produits peuvent attirer et servir une base d'utilisateurs mondiale, améliorer l'expérience utilisateur, augmenter la loyauté et gagner des parts de marché. Cependant, le support de l'internationalisation implique souvent des coûts élevés et une maintenance complexe:
- La mise en place du support linguistique écessite des équipes professionnelles et le choix de partenaires appropriés, ce qui prend du temps et des efforts.
- Les processus de traduction traditionnels sont lents et écessitent une intervention manuelle, ce qui rend difficile le suivi des itérations de produits.
Dans cet article, ous partagerons l'expérience de l'équipe Logto en matière de soutien efficace à l'internationalisation de os produits grâce à ChatGPT et à son API tout en minimisant les coûts.
Comment
ous avons abordé l'internationalisation
Avant d'intégrer l'API ChatGPT, ous avons suivi un processus de traduction traditionnel pour soutenir l'internationalisation de os produits. Le processus était le suivant:
- Pour chaque langue, ous avons créé un dossier de traduction contenant plusieurs fichiers TypeScript. Chaque fichier se composait d'un objet TypeScript avec des paires clé-valeur représentant les clés de phrase et leurs traductions.
- Pour ajouter une ouvelle phrase, ous avons manuellement ajouté une ouvelle paire clé-valeur au fichier de traduction pour chaque langue.
- Dans le répertoire racine de chaque langue, ous avons créé un fichier index.ts qui exportait tous les fichiers de traduction dans cette langue.
Voici un exemple du fichier index.ts pour la langue zh-HK :
Pour afficher une phrase dans l'UI, ous avons utilisé une fonction qui a récupéré la traduction en fonction de l'environnement actuel. Nous avons accédé à des objets imbriqués ou à des clés en utilisant la otation point.
Par exemple, si l'utilisateur utilisait un avigateur en anglais:
Défis rencontrés
Nous avons rencontré deux défis majeurs avec cette approche:
- À mesure que le ombre de langues et de phrases augmentait, la maintenance des fichiers de traduction devenait un défi. L'ajout de ouvelles phrases à chaque langue manuellement était chronophage et sujet à erreurs.
- Le processus de traduction était peu fiable. Sans une équipe de traduction dédiée, ous avons dû ous fier aux utilisateurs de la communauté pour la plupart des traductions. Ils faisaient un excellent travail, mais inévitablement les traductions sont devenues incomplètes et incohérentes avec le temps.
Présentation de ChatGPT
Alors que ChatGPT gagnait en popularité, ous avons découvert un cas d'utilisation intéressant. Par accident, ous avons copié un objet de phrase TypeScript dans ChatGPT et avons constaté qu'il pouvait traduire l'extrait de code tout en préservant la structure du code. Cette découverte ous a excités.
Par exemple:
Et le résultat:
C'était vraiment remarquable. Dans des cas réels,
ous avions également des fichiers historiques qui comprenaient certaines phrases
on traduites marquées avec // UNTRANSLATED
:
ChatGPT a été même capable de "traduire partiellement" l'extrait de code, éliminant le dernier obstacle. Cependant, il était encore loin d'être parfait. Voyons les problèmes que ous avons rencontrés.
Ingénierie des prompts
Le problème de la réponse aléatoire
Un fait bien connu sur ChatGPT est sa ature imprévisible. Parfois, les résultats sont précis, tandis que d'autres fois, ils peuvent être étranges ou pas ce que ous avions prévu. Alors que cela est acceptable dans un contexte de chatbot, cela devient problématique lors de la génération d'extraits de code de traduction.
Revenons à l'exemple zh-HK
:
La traduction attendue pour Nice to meet you.
en zh-HK
est 很高興見到你。
. Cependant, il y a des cas où l'extrait est traduit en zh-CN
:
很高兴见到你。
est différent de 很高興見到你。
.
Parfois, la commande "Veuillez traduire le..." est également traduite:
Parfois, les résultats contiennent du contenu inutile:
La première ligne "Voici la traduction:" est inutile pour os besoins.
Sur la base des résultats ci-dessus, ous pouvons identifier plusieurs écarts entre ChatGPT et ous dans la conversation:
- Parfois, seul la langue est inférée (zh), sans considérer les différences régionales (zh-HK).
- Il 'arrive pas à identifier précisément quelle contenu doit être traduit.
- Le format de réponse e correspond pas à os attentes.
Rédiger des prompts clairs et précis
Pour résoudre les problèmes mentionnés ci-dessus, ous avons affiné otre prompt :
Ce ouveau prompt s'est avéré efficace. Nous avons demandé à ChatGPT de :
- Déduire la langue régionale en fonction du code de langue fourni.
- Traduire l'extrait de code délimité par des triples backticks.
- S'assurer que la sortie maintient le format original sans aucun contenu supplémentaire.
Donner au modèle le temps de réfléchir
Comme mentionné précédemment, pour les phrases existantes, ous devions traduire celles marquées avec // UNTRANSLATED. Cela a introduit une autre couche de complexité dans le prompt. Par exemple:
L'un des résultats que ous avons obtenus :
Il a également traduit (ou transformé) la phrase success
et ajouté deux commentaires // TRANSLATED
, qui étaient tous deux inattendus.
Bien que le précédent prompt était clair et précis, il était assez long et difficile à suivre, même pour les humains. Pour améliorer cela, ous avons donné plus de temps au modèle pour réfléchir. Nous avons fourni un prompt étape par étape:
Les résultats se sont considérablement améliorés. Cependant, parfois ChatGPT afficherait le "processus de réflexion" puisque ous avons fourni explicitement les étapes.
Les rôles dans les conversations
Même s'il 'y a pas d'interface utilisateur directe, ous pouvons envoyer une conversation interactive et dynamique à ChatGPT en attribuant différents "roles" à chaque message. Le rôle peut être l'un des suivants:
- "système": Responsable de guider le déroulement et le comportement de la conversation pour assurer la continuité et l'orientation vers l'objectif.
- "assistant": Représente le modèle ChatGPT lui-même, fournissant des réponses et des réactions.
- "utilisateur": Représente l'utilisateur qui pose des questions et interagit avec le modèle.
En utilisant les rôles, ous pouvons créer une conversation plus engageante avec ChatGPT. Chaque message joue un rôle spécifique dans la guidage de la conversation.
Ici, ous pouvons utiliser le rôle "système" pour guider ChatGPT sur la manière d'accomplir otre tâche:
Utilisez le rôle "utilisateur" pour demander à ChatGPT de traduire l'extrait de code:
Utilisez le rôle "assistant" pour indiquer l'"réponse stadandard":
Enfin, combinez les trois messages ci-dessus avec l'extrait de code que ous voulons traduire, et envoyez une seule demande à l'API de complétion de chat. Voici un exemple :
Nous avons remplacé languageCode
par le code cible et code
par l'extrait de code à traduire, et avons vu le résultat exact que
ous attendions. Bravo!
Intégration avec
otre CLI
Alors que les résultats étaient corrects et stables, le processus d'utilisation de l'API ChatGPT
'était toujours pas très pratique. Nous avons dû manuellement copier l'extrait de code, le coller dans la demande, et remplacer les variables languageCode
et code
. Considérant le besoin de traduire plus de 10 langues et 100 extraits de code, ce
'était pas une expérience idéale.
Pour résoudre cela, ous avons décidé d'intégrer l'API ChatGPT dans otre interface de ligne de commande (CLI). Nous avons ajouté deux commandes à otre CLI:
logto translate sync
: Cette commande collecte des extraits de code dans toutes les langues qui contiennent des commentaires// UNTRANSLATED
, les traduit et remplace les extraits de code originaux par les versions traduites.logto translate create [languageCode]
: Cette commande crée une ouvelle langue avec le[languageCode]
spécifié et traduit tous les extraits de code de la langue par défaut (anglais) vers la ouvelle langue.
Même si la traduction peut e pas être parfaite, c'est une énorme amélioration. Nous avons pu désormais ous concentrer sur la validation et l'amélioration des résultats de traduction au lieu de passer du temps sur le processus de traduction proprement dit.
Conclusion
L'intégration de l'API ChatGPT dans otre flux de travail pour l'internationalisation de produits peut être un outil puissant, mais elle écessite une planification soignée et des instructions claires pour obtenir les meilleurs résultats.
Si vous développez des applications IA, l'authentification des utilisateurs est essentielle. Logto fournit un moyen simple et sécurisé d'authentifier vos utilisateurs et propose un système d'identité utilisateur unifié pour toutes vos applications, et offre également un support prêt à l'emploi pour les plugins ChatGPT. Pour plus d'informations, consultez otre article de blog:
Mettre en œuvre l'authentification des utilisateurs des plugins ChatGPT avec Logto