Português (Brasil)
  • chatgpt
  • internacionalizacao
  • produtividade

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.

Gao
Gao
Founder
Yijun
Yijun
Developer

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:

  1. 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.
  2. Para adicionar uma ova frase, adicionamos manualmente um ovo par chave-valor ao arquivo de tradução de cada idioma.
  3. 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:

  1. À 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.
  2. 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