Português (Portugal)
  • chatgpt
  • internationalizacao
  • produtividade

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.

Gao
Gao
Founder
Yijun
Yijun
Developer

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:

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

  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 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