Internacionalização eficiente com ChatGPT
Este artigo compartilha a experiência de utilizar a API ChatGPT para apoiar eficientemente a internacionalização (i18n) de produtos, fornecendo dicas sobre a integração da API, melhorando os resultados da tradução e otimizando as instruções para melhores resultados.
No mercado global atual, é essencial internacionalizar (i18n) os produtos. Ao suportar vários idiomas, os produtos podem atrair e atender a um público global, melhorar a experiência do usuário, aumentar a fidelidade e ganhar quota de mercado. No entanto, geralmente o suporte à internacionalização traz custos elevados e uma manutenção complexa:
- Definir o suporte de idioma requer equipes profissionais e a seleção de parceiros adequados, o que leva tempo e esforço.
- Os processos de tradução tradicionais são lentos e requerem intervenção manual, o que torna difícil acompanhar as iterações do produto.
Neste artigo, vamos compartilhar a experiência da equipe Logto de suporte eficiente à internacionalização de ossos produtos por meio do ChatGPT e sua API, minimizando os custos.
Como abordamos a internacionalização
Antes de integrar a API ChatGPT, seguimos um processo de tradução tradicional para suportar a internacionalização de ossos produtos. O processo era o seguinte:
- Para cada idioma, criamos uma pasta de tradução contendo vários arquivos TypeScript. Cada arquivo era composto por um objeto TypeScript com pares de chaves e valores representando chaves de frase e suas traduções.
- Para adicionar uma ova frase, adicionamos manualmente um ovo par de chaves e valores ao arquivo de tradução para cada idioma.
- No diretório raiz de cada idioma, criamos um ficheiro index.ts que exportava todos os ficheiros de tradução esse idioma.
Aqui está um exemplo do arquivo index.ts para o idioma zh-HK:
Para exibir uma frase a IU, usamos uma função que recuperou a tradução com base o ambiente atual. Acessamos objetos aninhados ou chaves usando a otação de ponto.
Por exemplo, se o usuário estava usando um avegador em inglês:
Desafios enfrentados
Encontramos dois grandes desafios com essa abordagem:
- À medida que o úmero de idiomas e frases aumentava, a manutenção dos arquivos de tradução se tornava desafiadora. Adicionar ovas frases a cada idioma manualmente era demorado e sujeito a erros.
- O processo de tradução foi impreciso. Sem uma equipe de tradução dedicada, dependíamos dos usuários da comunidade para a maioria das traduções. Eles faziam um ótimo trabalho, mas inevitavelmente as traduções se tornavam incompletas e inconsistentes ao longo do tempo.
Apresentando o ChatGPT
Enquanto o ChatGPT ganhava popularidade, descobrimos um caso de uso interessante. Acidentalmente, copiamos um objeto de frase TypeScript o ChatGPT e descobrimos que ele poderia traduzir o trecho de código mantendo a estrutura do código. Esta descoberta os animou.
Por exemplo:
E o resultado:
Isso foi realmente
otável. Em casos do mundo real, também tínhamos arquivos históricos que incluíam algumas frases
ão traduzidas marcadas com // UNTRANSLATED
:
ChatGPT também conseguiu "traduzir parcialmente" o trecho do código, eliminando o último obstáculo. No entanto, ainda estava longe de ser perfeito. Vamos ver os problemas que encontramos.
Engenharia de prompts
O problema da resposta aleatória
Um fato bem conhecido sobre o ChatGPT é sua atureza imprevisível. Às vezes, os resultados são precisos e, outras vezes, podem ser estranhos ou ão o que pretendemos. Embora isso seja aceitável em um contexto de chatbot, torna-se problemático ao gerar snippets de código de tradução.
Vamos revisitar o exemplo zh-HK
:
A tradução esperada para Nice to meet you.
em zh-HK
é 很高興見到你。
. No entanto, há casos em que o trecho é traduzido para zh-CN
:
很高兴见到你。
é diferente de 很高興見到你。
.
Às vezes, o prompt "Por favor, traduza o..." também é traduzido:
Ocasionalmente, os resultados contêm conteúdo desnecessário:
A primeira linha "Esta é a tradução:" é desnecessária para ossas ecessidades.
Com base os resultados acima, podemos identificar várias lacunas entre o ChatGPT e ós a conversa:
- Às vezes, apenas o idioma é inferido (zh), sem considerar as diferenças regionais (zh-HK).
- Ele ão consegue identificar com precisão qual conteúdo precisa ser traduzido.
- O formato da resposta ão corresponde às ossas expectativas.
Escreva prompts claros e específicos
Para resolver os problemas mencionados acima, refinamos osso prompt:
Este ovo prompt provou ser eficaz. Instruímos ChatGPT para:
- Inferir a língua regional com base o código da língua fornecido.
- Traduzir o trecho do código delimitado por três crases.
- Certificar-se de que a saída mantém o formato original sem enhum conteúdo adicional.
Dê ao modelo tempo para pensar
Como mencionado anteriormente, para frases existentes, precisávamos traduzir aquelas marcadas com // UNTRANSLATED. Isso introduziu outra camada de complexidade à prompt. Por exemplo:
Um dos resultados que obtivemos:
Ele também traduziu (ou transformou) a frase success
e adicionou dois comentários // TRANSLATED
, ambos inesperados.
Embora a prompt anterior fosse clara e específica, era bastante extensa e desafiadora para seguir, mesmo para seres humanos. Para melhorar isso, demos ao modelo mais tempo para pensar. Fornecemos um prompt passo a passo:
Os resultados melhoraram significativamente. No entanto, às vezes o ChatGPT exibiria o "processo de pensamento" uma vez que fornecemos explicitamente os passos.
Roles
as conversas
Embora ão haja uma interface de usuário direta, podemos enviar uma conversa interativa e dinâmica para o ChatGPT atribuindo diferentes "roles" a cada mensagem. O role pode ser um dos seguintes:
- "system": Responsável por orientar o fluxo e comportamento da conversa para garantir continuidade e orientação de objetivo.
- "assistant": Representa o próprio modelo ChatGPT, fornecendo respostas e respostas.
- "user": Representa o usuário fazendo perguntas e interagindo com o modelo.
Ao utilizar roles, podemos criar uma conversa mais envolvente com ChatGPT. Cada mensagem desempenha um papel específico a orientação da conversa.
Aqui, podemos usar o role "system" para guiar o ChatGPT sobre como realizar ossa tarefa:
Use o role "user" para pedir ao ChatGPT para traduzir o trecho do código:
Use o role "assistant" para indicar a "resposta padrão":
Por fim, combine as três mensagens acima com o trecho de código que quer traduzir e envie uma única requisição para a Chat Completion API. Aqui está um exemplo:
Substituímos languageCode
pelo código alvo e code
pelo trecho de código a traduzir e vimos o resultado exato que esperávamos. Bravo!
Integrar com
osso CLI
Embora os resultados estivessem corretos e estáveis, o processo de usar a API ChatGPT ainda
ão era muito conveniente. Tínhamos que copiar manualmente o trecho de código, colá-lo
a requisição e substituir as variáveis languageCode
e code
. Considerando a
ecessidade de traduzir mais de 10 idiomas e 100 trechos de código, isso
ão era uma experiência ideal.
Para resolver isso, decidimos integrar a API ChatGPT em ossa Interface de Linha de Comando (CLI). Adicionamos dois comandos à ossa CLI:
logto translate sync
: Este comando coleta trechos de código em todos os idiomas que contêm comentários// UNTRANSLATED
, traduz-os e substitui os trechos de código originais pelas versões traduzidas.logto translate create [languageCode]
: Este comando cria um ovo idioma com o[languageCode]
especificado e traduz todos os trechos de código do idioma padrão (inglês) para o ovo idioma.
Embora a tradução possa ão ser perfeita, ainda é uma melhoria enorme. Agora, poderíamos os concentrar em validar e melhorar os resultados da tradução em vez de gastar tempo o processo de tradução propriamente dito.
Conclusão
Integrar a API ChatGPT em osso fluxo de trabalho para a internacionalização do produto pode ser uma ferramenta poderosa, mas requer um planejamento cuidadoso e instruções claras para obter os melhores resultados.
Se você está desenvolvendo aplicações de IA, a autenticação de usuários é essencial. Logto oferece uma maneira simples e segura de autenticar seus usuários e oferece um sistema de identidade de usuário unificado em todas as suas aplicações, além de oferecer suporte prontamente disponível para plugins ChatGPT. Para mais informações, confira ossa postagem o blog:
Implementar autenticação de usuário para plugins ChatGPT com Logto