Deutsch
  • chatgpt
  • internationalisierung
  • produktivität

Effiziente Internationalisierung mit ChatGPT

Dieser Artikel teilt die Erfahrung der Nutzung der ChatGPT-API zur effizienten Unterstützung der Internationalisierung (i18n) von Produkten und gibt Tipps zur Integration der API, zur Verbesserung der Übersetzungsergebnisse und zur Optimierung der Anweisungen für bessere Ergebnisse.

Gao
Gao
Founder
Yijun
Yijun
Developer

Auf dem heutigen globalen Markt ist es unerlässlich, Produkte zu internationalisieren (i18n). Durch die Unterstützung mehrerer Sprachen können Produkte eine globale Benutzerbasis anziehen und bedienen, das Benutzererlebnis verbessern, die Loyalität steigern und Marktanteile gewinnen. Allerdings geht die Unterstützung der Internationalisierung oft mit hohen Kosten und komplexer Wartung einher:

  • Die Einrichtung von Sprachunterstützung erfordert professionelle Teams und die Auswahl geeigneter Partner, was Zeit und Mühe kostet.
  • Traditionelle Übersetzungsprozesse sind langsam und erfordern manuelle Eingriffe, was es schwierig macht, mit Produktiterationen Schritt zu halten.

In diesem Artikel werden wir die Erfahrung des Logto-Teams teilen, wie wir die Internationalisierung unserer Produkte effizient mit ChatGPT und seiner API unterstützen, während wir die Kosten minimieren.

Wie wir uns der Internationalisierung genähert haben

Bevor wir die ChatGPT API integrierten, verfolgten wir einen traditionellen Übersetzungsprozess zur Unterstützung der Internationalisierung unserer Produkte. Der Prozess verlief wie folgt:

  1. Für jede Sprache erstellten wir einen Übersetzungsordner, der mehrere TypeScript-Dateien enthielt. Jede Datei bestand aus einem TypeScript-Objekt mit Schlüssel-Wert-Paaren, die Phrasenschlüssel und ihre Übersetzungen repräsentierten.
  2. Um eine eue Phrase hinzuzufügen, fügten wir manuell ein eues Schlüssel-Wert-Paar zur Übersetzungsdatei für jede Sprache hinzu.
  3. Im Stammverzeichnis jeder Sprache erstellten wir eine index.ts-Datei, die alle Übersetzungsdateien in dieser Sprache exportierte.

Hier ist ein Beispiel für die index.ts-Datei für die Sprache zh-HK:

Um eine Phrase in der UI anzuzeigen, verwendeten wir eine Funktion, die die Übersetzung basierend auf der aktuellen Umgebung abruft. Wir griffen auf verschachtelte Objekte oder Schlüssel zu, indem wir die Punkt-Notation verwendeten.

Zum Beispiel, wenn der Benutzer einen englischen Browser verwendete:

Herausforderungen, denen wir begegnet sind

Wir stießen auf zwei große Herausforderungen mit diesem Ansatz:

  1. Als die Anzahl der Sprachen und Phrasen zunahm, wurde die Wartung der Übersetzungsdateien herausfordernd. Das Hinzufügen euer Phrasen zu jeder Sprache manuell war zeitaufwendig und fehleranfällig.
  2. Der Übersetzungsprozess war unzuverlässig. Ohne ein spezielles Übersetzungsteam stützten wir uns für die meisten Übersetzungen auf Community-Nutzer. Sie leisteten großartige Arbeit, aber unvermeidlich wurden die Übersetzungen über die Zeit unvollständig und inkonsistent.

Einführung von ChatGPT

Während ChatGPT an Popularität gewann, entdeckten wir einen interessanten Anwendungsfall. Zufällig kopierten wir ein TypeScript-Phrase-Objekt in ChatGPT und stellten fest, dass es den Codeausschnitt übersetzen konnte, während es die Code-Struktur beibehielt. Diese Entdeckung begeisterte uns.

Zum Beispiel:

Und das Ergebnis:

Das war wirklich bemerkenswert. In realen Fällen hatten wir auch historische Dateien, die einige unübersetzte Phrasen enthielten, die mit // UNTRANSLATED markiert waren:

ChatGPT war sogar in der Lage, den Codeausschnitt "teilweise" zu übersetzen, was das letzte Hindernis beseitigte. Allerdings war es och weit davon entfernt, perfekt zu sein. Schauen wir uns die Probleme an, auf die wir gestoßen sind.

Prompt Engineering

Das Problem der zufälligen Antwort

Eine wohl bekannte Tatsache über ChatGPT ist seine Unberechenbarkeit. Manchmal sind die Ergebnisse genau, während sie zu anderen Zeiten seltsam oder icht wie beabsichtigt sein können. Während dies in einem Chatbot-Kontext akzeptabel ist, wird es problematisch, wenn es darum geht, Übersetzungs-Codeausschnitte zu erzeugen.

Lassen Sie uns das zh-HK-Beispiel och einmal betrachten:

Die erwartete Übersetzung für Nice to meet you. in zh-HK ist 很高興見到你。. Doch es gibt Fälle, in denen der Ausschnitt in zh-CN übersetzt wird:

很高兴见到你。 unterscheidet sich von 很高興見到你。.

Manchmal wird auch die Aufforderung "Bitte übersetzen Sie die..." übersetzt:

Gelegentlich enthalten die Ergebnisse unnötigen Inhalt:

Die erste Zeile "Dies ist die Übersetzung:" ist für unsere Bedürfnisse icht otwendig.

Aus den obigen Ergebnissen können wir mehrere Lücken zwischen ChatGPT und uns in der Konversation identifizieren:

  • Manchmal wird ur die Sprache abgeleitet (zh), ohne regionale Unterschiede (zh-HK) zu berücksichtigen.
  • Es versagt bei der genauen Identifizierung, welcher Inhalt übersetzt werden muss.
  • Das Antwortformat entspricht icht unseren Erwartungen.

Schreiben Sie klare und spezifische Prompts

Um die oben genannten Probleme zu beheben, haben wir unseren Prompt verfeinert:

Dieser eue Prompt hat sich als wirksam erwiesen. Wir haben ChatGPT angewiesen, Folgendes zu tun:

  • Die regionale Sprache basierend auf dem bereitgestellten Sprachcode zu erschließen.
  • Den Codeausschnitt zu übersetzen, der durch dreifache Backticks begrenzt ist.
  • Sicherzustellen, dass die Ausgabe das ursprüngliche Format beibehält, ohne zusätzlichen Inhalt.

Geben Sie dem Modell Zeit zum Nachdenken

Wie bereits erwähnt, mussten wir für bestehende Phrasen diejenigen übersetzen, die mit // UNTRANSLATED markiert waren. Dies hat eine weitere Schicht an Komplexität zum Prompt hinzugefügt. Zum Beispiel:

Eines der Ergebnisse, die wir erhalten haben:

Es hat auch die Phrase success übersetzt (oder transformiert) und zwei // TRANSLATED-Kommentare hinzugefügt, die beide unerwartet waren.

Obwohl der vorherige Prompt klar und spezifisch war, war er ziemlich lang und sogar für Menschen schwer zu befolgen. Um dies zu verbessern, haben wir dem Modell mehr Zeit zum Nachdenken gegeben. Wir haben einen schrittweisen Prompt bereitgestellt:

Die Ergebnisse verbesserten sich erheblich. Allerdings zeigte ChatGPT manchmal den "Denkprozess", da wir die Schritte explizit bereitgestellt haben.

Rollen in Gesprächen

Obwohl es keine direkte Benutzeroberfläche gibt, können wir ein interaktives und dynamisches Gespräch mit ChatGPT führen, indem wir jedem Nachricht verschiedene "Rollen" zuweisen. Die Rolle kann eine der folgenden sein:

  • "system": Verantwortlich für die Lenkung des Gesprächsflusses und des Verhaltens, um Kontinuität und Zielorientierung zu gewährleisten.
  • "assistant": Repräsentiert das ChatGPT-Modell selbst und liefert Antworten und Reaktionen.
  • "user": Repräsentiert den Benutzer, der Fragen stellt und mit dem Modell interagiert.

Durch die Verwendung von Rollen können wir ein ansprechenderes Gespräch mit ChatGPT führen. Jede Nachricht spielt eine spezifische Rolle bei der Lenkung des Gesprächs.

Hier können wir die Rolle "system" verwenden, um ChatGPT bei der Erledigung unserer Aufgabe zu leiten:

Verwenden Sie die Rolle "user", um ChatGPT zu bitten, den Codeausschnitt zu übersetzen:

Verwenden Sie die Rolle "assistant", um die "Standardantwort" zu erhalten:

Schließlich kombinieren Sie die drei oben genannten Nachrichten zu dem Codeausschnitt, den Sie übersetzen möchten, und senden Sie eine einzelne Anfrage an die Chat Completion API. Hier ist ein Beispiel:

Wir haben languageCode mit dem Zielcode und code durch den Codeausschnitt, der übersetzt werden soll, ersetzt und sahen das genaue Ergebnis, das wir erwartet haben. Bravo!

Integration in unsere CLI

Obwohl die Ergebnisse korrekt und stabil waren, war der Prozess der Verwendung der ChatGPT API och icht sehr komfortabel. Wir mussten den Codeausschnitt manuell kopieren, ihn in die Anfrage einfügen und die Variablen languageCode und code ersetzen. Angesichts der Notwendigkeit, mehr als 10 Sprachen und 100 Codeausschnitte zu übersetzen, war dies keine ideale Erfahrung.

Um dies zu beheben, haben wir uns entschieden, die ChatGPT API in unsere Command-Line Interface (CLI) zu integrieren. Wir haben unserer CLI zwei Befehle hinzugefügt:

  • logto translate sync: Dieser Befehl sammelt Codeausschnitte aus allen Sprachen, die // UNTRANSLATED-Kommentare enthalten, übersetzt sie und ersetzt die ursprünglichen Codeausschnitte durch die übersetzten Versionen.
  • logto translate create [languageCode]: Dieser Befehl erstellt eine eue Sprache mit dem angegebenen [languageCode] und übersetzt alle Codeausschnitte aus der Standardsprache (Englisch) in die eue Sprache.

Obwohl die Übersetzung vielleicht icht perfekt ist, stellt sie dennoch eine große Verbesserung dar. Wir konnten uns un auf die Validierung und Verbesserung der Übersetzungsergebnisse konzentrieren, anstatt Zeit mit dem eigentlichen Übersetzungsprozess zu verbringen.

Schlussfolgerung

Die Integration des ChatGPT API in unseren Workflow für die Produktinternationalisierung kann ein starkes Werkzeug sein, erfordert aber eine sorgfältige Planung und klare Anweisungen, um die besten Ergebnisse zu erzielen.

Wenn Sie KI-Anwendungen entwickeln, ist die Benutzerauthentifizierung unerlässlich. Logto bietet eine einfache und sichere Möglichkeit, Ihre Benutzer zu authentifizieren und bietet ein einheitliches Benutzeridentitätssystem über alle Ihre Anwendungen hinweg, und bietet auch sofortige Unterstützung für ChatGPT-Plugins. Weitere Informationen finden Sie in unserem Blog-Post:

Implementiere ChatGPT-Plugins Benutzerauthentifizierung mit Logto