Internacionalização eficiente com o ChatGPT
Este artigo compartilha a experiência de usar a API do ChatGPT para suportar eficientemente a internacionalização (i18n) dos produtos, fornecendo dicas sobre a integração da API, melhorando os resultados de tradução e otimizando instruções para melhores resultados.
No mercado global de hoje, é essencial internacionalizar (i18n) produtos. Ao suportar vários idiomas, os produtos podem atrair e servir uma base de usuários global, melhorar a experiência do usuário, aumentar a lealdade e ganhar participação de mercado. No entanto, o suporte à internacionalização muitas vezes vem com altos custos e manutenção complexa:
- A configuração do suporte ao idioma requer equipes profissionais e a seleção de parceiros adequados, o que leva tempo e esforço.
- Os processos tradicionais de tradução são lentos e requerem intervenção manual, tornando-se um desafio acompanhar as iterações do produto.
Neste artigo, compartilharemos a experiência da equipe do Logto de suportar eficientemente a internacionalização de ossos produtos usando o ChatGPT e sua API, minimizando os custos.
Como abordamos a internacionalização
Antes de integrar a API do ChatGPT, seguimos o processo tradicional de tradução para suportar a internacionalização de ossos produtos. O processo foi o seguinte:
- Para cada idioma, criamos uma pasta de tradução contendo vários arquivos TypeScript. Cada arquivo consistia em um objeto TypeScript com pares chave-valor representando chaves de frases e suas traduções.
- Para adicionar uma ova frase, adicionamos manualmente um ovo par chave-valor ao arquivo de tradução de cada idioma.
- No diretório raiz de cada idioma, criamos um arquivo index.ts que exportava todos os arquivos de tradução aquele 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 recuperava a tradução com base o ambiente atual. Acessamos objetos ou chaves aninhados usando a otação de ponto.
Por exemplo, se o usuário estivesse usando um avegador em inglês:
Desafios enfrentados
Enfrentamos dois desafios principais 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 era pouco confiável. Sem uma equipe dedicada à tradução, dependíamos dos usuários da comunidade a maioria das traduções. Eles estavam fazendo ótimos trabalhos, mas inevitavelmente as traduções se tornaram incompletas e inconsistentes ao longo do tempo.
Apresentando ChatGPT
Enquanto o ChatGPT ganhava popularidade, descobrimos um caso de uso interessante. Acidentalmente, copiamos um objeto de frase TypeScript para o ChatGPT e descobrimos que poderia traduzir o snippet de código preservando a estrutura do código. Essa descoberta os emocionou.
Por exemplo:
E o resultado:
Isso foi realmente
otável. Em casos reais, também tínhamos arquivos históricos que incluíam algumas frases
ão traduzidas marcadas com // UNTRANSLATED
:
O ChatGPT conseguiu até mesmo "traduzir parcialmente" o snippet de código, eliminando o último obstáculo. No entanto, ainda estava longe de ser perfeito. Vamos ver os problemas que encontramos.
Engenharia de proposta
O problema de resposta aleatória
Um fato bem conhecido sobre o ChatGPT é a sua atureza imprevisível. Às vezes, os resultados são precisos, enquanto outras vezes, podem ser estranhos ou ão o que pretendíamos. Embora isso seja aceitável o contexto de um 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, existem casos em que o snippet é 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 falha em identificar com precisão qual conteúdo precisa ser traduzido.
- O formato de resposta ão corresponde às ossas expectativas.
Escreva propostas claras e específicas
Para resolver os problemas mencionados acima, refinamos ossa proposta:
Essa ova proposta se mostrou eficaz. Instruímos o ChatGPT a:
- Inferir o idioma regional com base o código do idioma fornecido.
- Traduzir o snippet de código delimitado por crases triplas.
- Certificar-se de que a saída mantém o formato original sem qualquer conteúdo adicional.
Dê tempo para o modelo pensar
Como mencionado anteriormente, para as frases existentes, precisávamos traduzir aquelas marcadas com // UNTRANSLATED. Isso introduziu outra camada de complexidade para o prompt. Por exemplo:
Um dos resultados que obtivemos:
Também traduziu (ou transformou) a frase success
e adicionou dois comentários // TRANSLATED
, ambos inesperados.
Embora a proposta anterior fosse clara e específica, era bastante longa e desafiadora de seguir, até mesmo para seres humanos. Para melhorar isso, demos mais tempo para o modelo pensar. Fornecemos um prompt passo a passo:
Os resultados melhoraram significativamente. No entanto, às vezes o ChatGPT mostrava o "processo de pensamento" uma vez que fornecemos explicitamente as etapas.
Papéis
as conversas
Embora ão haja uma interface de usuário direta, podemos enviar uma conversa interativa e dinâmica para o ChatGPT atribuindo diferentes "funções" a cada mensagem. O papel pode ser um dos seguintes:
- "system": Responsável por orientar o fluxo e o comportamento da conversa para garantir continuidade e orientação para objetivos.
- "assistant": Representa o próprio modelo do ChatGPT, fornecendo respostas e respostas.
- "user": Representa o usuário que faz perguntas e interage com o modelo.
Usando funções, podemos criar uma conversa mais envolvente com o ChatGPT. Cada mensagem desempenha um papel específico a orientação da conversa.
Aqui, podemos usar o papel de "system" para orientar o ChatGPT sobre como realizar ossa tarefa:
Use o papel de "user" para pedir ao ChatGPT para traduzir o snippet de código:
Use o papel de "assistant" para indicar a "resposta padrão":
Finalmente, combine as três mensagens acima com o snippet de código que queremos traduzir e envie uma única solicitação para a API de Conclusão de Chat. Aqui está um exemplo:
Substituímos languageCode
pelo código de destino e code
pelo snippet de código a ser traduzido, e vimos exatamente o resultado que esperávamos. Bravo!
Integrar com
osso CLI
Embora os resultados fossem corretos e estáveis, o processo de usar a API do ChatGPT ainda
ão era muito conveniente. Tivemos que copiar manualmente o snippet de código, colá-lo
a solicitação e substituir as variáveis languageCode
e code
. Considerando a
ecessidade de traduzir mais de 10 idiomas e 100 snippets de código, essa
ã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 ao osso CLI:
logto translate sync
: Este comando coleta snippets de código em todos os idiomas que contêm comentários// UNTRANSLATED
, traduz e substitui os snippets 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 snippets de código do idioma padrão (inglês) para o ovo idioma.
Embora a tradução possa ão ser perfeita, ainda é uma grande melhoria. Agora, poderíamos os concentrar em validar e melhorar os resultados da tradução, em vez de gastar tempo o processo de tradução real.
Conclusão
A integração da API do 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ê estiver desenvolvendo aplicações AI, a autenticação do usuário é essencial. Logto fornece uma maneira simples e segura de autenticar seus usuários e oferece um sistema unificado de identidade do usuário em todas as suas aplicações, e também oferece suporte imediato para plugins do ChatGPT. Para mais informações, confira osso post o blog:
Implemente autenticação de usuário de plugins do ChatGPT com Logto