日本語
  • chatgpt
  • 国際化
  • 生産性

ChatGPTを使った効率的な国際化

この記事では、製品の国際化(i18n)を効率的にサポートするためにChatGPT APIを使用する経験を共有し、APIの統合、翻訳結果の改善、より良い結果を得るための指示の最適化についてのヒントを提供します。

Gao
Gao
Founder
Yijun
Yijun
Developer

今日のグローバル市場では、製品を国際化( i18n )することが重要です。複数の言語をサポートすることで、製品はグローバルなユーザーベースを引き付け、サービスを提供し、ユーザー体験を向上させ、ロイヤリティを増加させ、市場シェアを獲得することができます。しかし、国際化サポートはしばしば高いコストと複雑なメンテナンスを伴います:

  • 言語サポートの設定には専門チームが必要で、適切なパートナーを選択するのに時間と労力がかかります。
  • 伝統的な翻訳プロセスは遅く、手作業での介入が必要なため、製品のイテレーションに追いつくのが困難です。

この記事では、ChatGPTとそのAPIを使用して、コストを最小限に抑えながら製品の国際化を効率的にサポートするためのLogtoチームの経験を共有します。

私たちがどのように国際化に取り組んだか

ChatGPT APIを統合する前、私たちは伝統的な翻訳プロセスを遵守して、製品の国際化をサポートしました。 プロセスは以下のように行われました:

  1. 各言語について、いくつかのTypeScriptファイルが含まれる翻訳フォルダーを作成しました。各ファイルは、フレーズのキーとその翻訳を表すキー・バリューの組みを持つTypeScriptオブジェクトで構成されていました。
  2. 新しいフレーズを追加するために、手動で各言語の翻訳ファイルに新しいキー・バリューの組みを追加しました。
  3. 各言語のルートディレクトリに、その言語のすべての翻訳ファイルをエクスポートするindex.tsファイルを作成しました。

以下に、zh-HK言語のindex.tsファイルの例を示します:

UIでフレーズを表示するために、現在の環境に基づいて翻訳を取得する関数を使用しました。私たちは、ドット記法を使用してネストしたオブジェクトやキーにアクセスしました。

例えば、ユーザーが英語のブラウザを使用している場合:

遭遇した課題

このアプローチで2つの大きな課題に直面しました:

  1. 言語とフレーズの数が増えるにつれて、翻訳ファイルの維持が難しくなりました。各言語に新しいフレーズを手動で追加することは、時間がかかり、エラーが発生しやすいです。
  2. 翻訳プロセスは信頼できませんでした。専門の翻訳チームがないため、私たちはほとんどの翻訳についてコミュニティのユーザーに頼っていました。彼らは素晴らしい仕事をしていましたが、翻訳は時間とともに不完全で一貫性がなくなることは避けられませんでした。

ChatGPTの導入

ChatGPTが人気を博する中で、私たちは興味深いユースケースを見つけました。偶然に、TypeScriptのフレーズオブジェクトをChatGPTにコピーしてみると、コード構造を保持しながらコードスニペットを翻訳できることがわかりました。この発見に私たちは興奮しました。

例えば:

そして結果は:

これは本当に素晴らしいことでした。実際のケースでは、いくつかの未翻訳のフレーズが // UNTRANSLATED とマークされている過去のファイルもありました:

ChatGPTは、コードスニペットを「一部」翻訳することさえでき、最後の障害を取り除きました。しかし、まだ完全ではありません。私たちが遭遇した問題を見てみましょう。

プロンプトエンジニアリング

ランダムレスポンス問題

ChatGPTのよく知られた事実の一つは、その予測不能な性質です。時々、結果は正確でありながら、他の時には奇妙であったり、意図したものでないことがあります。これはチャットボットのコンテキストでは許容されますが、翻訳コードスニペットを生成する際には問題となります。

zh-HKの例を再訪してみましょう:

Nice to meet you.zh-HKでの期待される翻訳は很高興見到你。です。しかし、スニペットがzh-CNに翻訳される場合もあります:

很高兴见到你。很高興見到你。とは異なります。

時折、プロンプト "Please translate the..." も翻訳されます:

結果には不要なコンテンツが含まれることもあります:

最初の行 "This is the translation:" は私たちのニーズには不必要です。

上記の結果に基づいて、ChatGPTと私たちの間の会話にいくつかのギャップを特定することができます:

  • ときどき、言語のみが推測されます(zh)、地域差を考慮せずに(zh-HK)。
  • どのコンテンツを翻訳する必要があるかを正確に特定できません。
  • 応答の形式が私たちの期待に合致していません。

クリアで具体的なプロンプトを書く

上記に述べた課題を解決するために、私たちはプロンプトを改良しました:

この新しいプロンプトは効果的でした。私たちはChatGPTに指示しました:

  • 提供された言語コードに基づいて地域言語を推測します。
  • 三つのバッククォートで区切られたコードスニペットを翻訳します。
  • 出力は追加のコンテンツなしに元の形式を維持します。

モデルに時間を与えて考える

前述のように、既存のフレーズについては、// UNTRANSLATEDとマークされているものを翻訳する必要がありました。これはプロンプトに別の層の複雑さを導入しました。例えば:

得た結果の一つ:

フレーズ success も翻訳(または変換)し、2つの // TRANSLATEDのコメントを追加しました。いずれも予期していませんでした。

前のプロンプトはクリアで具体的でしたが、長くて複雑で、人間にとってさえも追って行くのは難しかったです。これを改善するために、私たちはモデルにもっと考える時間を与えました。ステップ・バイ・ステップのプロンプトを提供しました:

結果が大幅に改善されました。しかし、時々ChatGPTは「考えるプロセス」を表示します。なぜなら、私たちは明示的にステップを提供したからです。

会話における役割

直接的なユーザーインターフェースがないにもかかわらず、それぞれのメッセージに異なる "役割" を割り当てることで、ChatGPTとの対話的でダイナミックな会話を送ることができます。役割は以下のいずれか一つになります:

  • "system":会話の流れと行動をガイドし、継続性と目標指向を確保するのが責任です。
  • "assistant":ChatGPTモデル自身を表し、回答とレスポンスを提供します。
  • "user":モデルとの対話や質問を行うユーザーを表します。

役割を使用することで、ChatGPTとのよりエンゲージングな会話を作り出すことが可能です。それぞれのメッセージが会話のガイドに特定の役割を果たすことになります。

ここでは、私たちのタスクを達成する方法をChatGPTにガイドするために"system"の役割を使うことができます:

ChatGPTにコードスニペットの翻訳を依頼するために"user"の役割を使います:

"アシスタント"の役割を使うと、"標準的な答え"を示すことができます:

最後に、翻訳したいコードスニペットと上記の三つのメッセージを組み合わせ、Chat Completion APIに一つのリクエストを送ります。以下に例を示します:

私たちは languageCode を目標コードで置き換え、code を翻訳するコードスニペットで置き換え、期待した結果を正確に見ることができました。ブラボー!

CLIとの統合

結果は正確で安定していましたが、ChatGPT APIの使用プロセスはまだ便利とは言えませんでした。私たちは手動でコードスニペットをコピーし、リクエストに貼り付け、languageCodecode変数を置き換える必要がありました。10以上の言語と100以上のコードスニペットを翻訳する必要があることを考えると、これは理想的な体験ではありませんでした。

これに対処するために、私たちはChatGPT APIをCommand-Line Interface(CLI)に統合することにしました。私たちはCLIに2つのコマンドを追加しました:

  • 'logto translate sync':このコマンドは// UNTRANSLATEDのコメントが含まれるすべての言語のコードスニペットを収集し、それを翻訳し、翻訳されたバージョンに元のコードスニペットを置き換えます。
  • logto translate create [languageCode]:このコマンドは、指定された[languageCode]で新しい言語を作成し、デフォルトの言語(英語)からすべてのコードスニペットを新しい言語に翻訳します。

翻訳が完全ではない場合でも、それは大きな進歩です。今は、実際の翻訳プロセスに時間を費やす代わりに、翻訳結果の検証と改善に焦点を当てることができます。

結論

製品の国際化のワークフローにChatGPT APIを統合することは強力なツールになる可能性がありますが、最適な結果を得るためには慎重な計画と明確な指示が必要です。

AIアプリケーションを開発しているなら、ユーザー認証は不可欠です。Logtoは、ユーザーを認証するためのシンプルでセキュアな方法を提供し、すべてのアプリケーションに統一されたユーザーIDシステムを提供します。また、既存のChatGPTプラグインにも対応しています。詳細については、私たちのブログ記事をチェックしてください:

ChatGPTプラグインユーザー認証をLogtoで実装する