ChatGPT ile Etkili Uluslararasılaştırma
Bu makale, ürünlerin uluslararasılaştırmasını (i18n) etkin bir şekilde desteklemek için ChatGPT API'sinin kullanılma deneyimini paylaşıyor, API'yi entegre etme, çeviri sonuçlarını iyileştirme ve daha iyi sonuçlar için talimatları optimize etme ipuçları sunuyor.
Günümüzün küresel piyasasında, ürünlerin uluslararasılaşması (i18n) esastır. Çoklu dil desteği sunarak, ürünler küresel bir kullanıcı tabanını çekip hizmet verebilir, kullanıcı deneyimini artırabilir, sadakati artırabilir ve pazar payı kazanabilir. Ancak, uluslararasılaştırma desteği genellikle yüksek maliyetler ve karmaşık bakım getirir:
- Dil desteği kurmak, profesyonel ekipler ve uygun ortaklar seçmek zaman ve çaba gerektirir.
- Geleneksel çeviri süreçleri yavaş ve manuel müdahaleyi gerektirir, bu da ürün döngülerine yetişmeyi zorlaştırır.
Bu makalede, ürünlerimizin uluslararasılaştırılmasını ChatGPT ve API'sini kullanarak etkin bir şekilde destekleme deneyimimizi Logto ekibinin paylaşacağız.
Uluslararasılaştırmaya Nasıl Yaklaştık
ChatGPT API'sini entegre etmeden önce, ürünlerimizin uluslararasılaştırılmasını desteklemek için geleneksel bir çeviri sürecini takip ettik. Süreç şöyleydi:
- Her dil için, birkaç TypeScript dosyası içeren bir çeviri klasörü oluşturduk. Her dosya, ifade anahtarları ve çevirilerini temsil eden anahtar-değer çiftlerini içeren bir TypeScript esnesi oluşuyordu.
- Yeni bir ifade eklemek için, her dil için çeviri dosyasına manuel olarak yeni bir anahtar-değer çifti ekledik.
- Her dilin kök dizininde, o dildeki tüm çeviri dosyalarını dışa aktaran bir index.ts dosyası oluşturduk.
İşte zh-HK dilinde index.ts dosyasının bir örneği:
Bir ifadeyi kullanıcı arayüzünde göstermek için, mevcut ortama göre çeviriyi alan bir fonksiyon kullandık. Nokta gösterimini kullanarak iç içe esneleri veya anahtarları eriştik.
Örneğin, kullanıcı İngilizce bir tarayıcı kullanıyorsa:
Karşılaşılan Problemler
Bu yaklaşımla iki ana problemle karşılaştık:
- Dillerin ve ifadelerin sayısı arttıkça, çeviri dosyalarını sürdürmek zorlaşıyordu. Her dile manuel olarak yeni ifadeler eklemek zaman alıcı ve hata yapmaya eğilimliydi.
- Çeviri süreci güvenilir değildi. Özel bir çeviri ekibimiz olmadan, çoğu çeviri için topluluk kullanıcılarına güveniyorduk. İşlerini mükemmel yapıyorlardı, ancak kaçınılmaz olarak çeviriler zaman içinde tamamlanamıyor ve tutarsız hale geliyordu.
ChatGPT'yi Tanıtıyoruz
ChatGPT popülerleşirken, ilginç bir kullanım senaryosu keşfettik. Yanlışlıkla, bir TypeScript ifade esnesini ChatGPT'ye kopyaladık ve kod örneğini korurken kod parçacığını çevirebildiğini gördük. Bu keşif, bizi heyecanlandırdı.
Örneğin:
Ve sonuç:
Bu gerçekten dikkate değerdi. Gerçek dünya durumlarında, bazı çevrilmemiş ifadelerin // UNTRANSLATED
ile işaretlendiği tarihi dosyalarımız vardı:
ChatGPT, kod parçacığını "kısmen" çevirebildi ve son engeli ortadan kaldırdı. Ancak, hala mükemmel değildi. Karşılaştığımız sorunlara bakalım.
Bilinmeyen Yanıt Sorunu
ChatGPT hakkında bilinen bir gerçek, öngörülemeyen doğasıdır. Bazen sonuçlar doğru olurken, diğer zamanlarda garip olabilir veya beklediğimiz gibi olmayabilir. Bu durum, bir chatbot bağlamında kabul edilebilirken, çeviri kod parçalarını oluştururken sorun oluşturabilir.
zh-HK
örneğine tekrar göz atalım:
Nice to meet you.
'nın zh-HK
için beklenen çevirisi 很高兴见到你。
dir. Ancak, snippet'ın bazen zh-CN
'ye çevrildiği durumlar vardır:
很高兴见到你。
很高兴见到你。
'dan farklıdır.
Bazen, "Lütfen çeviri yapın..." isteği de çevriliyor:
Ara sıra, sonuçlar gereksiz içerik içerir:
İlk satır "Bu, çeviri:" bizim ihtiyaçlarımız için gereksizdir.
Yukarıdaki sonuçlara dayanarak, ChatGPT ve bizim aramızda muhabbette birkaç fark belirledik:
- Bazen, sadece dil (zh) sonucu çıkarılır, bölgesel farklılıklar (zh-HK) dikkate alınmaz.
- Hangi içeriğin çevrileceğini doğru bir şekilde belirleyemez.
- Yanıt formatı beklentilerimize uymamaktadır.
Açık ve Belirli İstekler Yazma
Yukarıda belirtilen konuları ele almak için isteğimizi yeniden düzenledik:
Bu yeni istek etkili oldu. ChatGPT'ye öğrettik:
- Alınan dil koduna dayanarak bölgesel bir dil çıkarmak.
- Üçlü ters tırnakla sınırlandırılmış kod parçacığını çevirmek.
- Çıktının, orijinal formatı koruduğundan ve herhangi bir ek içerik olmadığından emin olmak.
Modeli Düşünme Zamanı Vermek
Daha önce belirtildiği gibi, mevcut ifadeler için, // UNTRANSLATED ile işaretlendiği için çeviri yapmamız gerekiyordu. Bu, isteğe başka bir karmaşıklık katı. Örneğin:
Elde ettiğimiz sonuçlardan biri:
Ayrıca success
ifadesini çevirdi (veya dönüştürdü) ve iki // TRANSLATED
yorumunu ekledi, her ikisi de beklenmedik.
Önceki isteğin açık ve belirgin olmasına rağmen, insanlar için bile oldukça uzun ve zorlayıcıdı. Bunu iyileştirmek için modele daha fazla düşünme zamanı verdik. Adım adım bir istek sunduk:
Sonuçlar önemli ölçüde iyileşti. Ancak, bazen ChatGPT, adımları açıkça belirttiğimizden " düşünme sürecini" gösterir.
Konuşmalardaki Rollar
Hiçbir doğrudan kullanıcı arayüzü olmamasına rağmen, rollarınızı belirleyip ChatGPT'ye interaktif ve dinamik bir muhabbet göndererek farklı "roller" atayabilirsiniz. Rol aşağıdakilerden biri olabilir:
- "system": Muhabbetin akışını ve davranışını yönlendirmekten sorumludur ve sürekliliği ve hedefi belirler.
- "assistant": ChatGPT modelini temsil eder, yanıtlar ve yanıtlar verir.
- "user": Kullanıcıyı temsil eder ve model ile etkileşimde bulunur ve sorular sorar.
Rolleri kullanarak, ChatGPT ile daha hareketli bir konuşma yapabiliriz. Her mesaj, konuşmayı yönlendirmekte belirli bir rol oynar.
Burada, "system" rolünü görevimizi asıl tamamlayacağı konusunda ChatGPT yönlendirmek için kullanabiliriz:
"user" rolünü kullanarak, ChatGPT'nin kod parçacığını çevirmesini isteyebiliriz:
"assistant" rolü, "cevabı" belirtir:
Son olarak, yukarıdaki üç mesajı çevirmek istediğimiz kod parçacığıyla birleştirir ve tek bir talebi Chat Completion API'ye göndeririz. İşte bir örnek:
Hedef kodla languageCode
'u ve çeviri yapılacak kod parçacığı için code
'u değiştirdik ve beklediğimiz kesin sonucu gördük. Bravo!
CLI'ımızla entegrasyon
Sonuçlar doğru ve stabil olmasına rağmen, ChatGPT API'sini kullanma süreci hala çok rahat değildi. Manuel olarak kod parçacığını kopyalamak, isteğe yapıştırmak ve languageCode
ve code
değişkenlerini değiştirmek zorunda kalmıştık. 10'dan fazla dil ve 100 kod parçacığını çevirmeye ihtiyaç duyduğumuzu düşünürsek, bu ideal bir deneyim değildi.
Bunu halletmek için, ChatGPT API'sini Komut Satırı Ara birimimize (CLI) entegre etmeye karar verdik. CLI'mıza iki komut ekledik:
logto translate sync
: Bu komut, tüm diller arasında// UNTRANSLATED
yorumlarını içeren kod parçacıklarını toplar, onları çevirir ve orijinal kod parçacıklarını çevrilmiş versiyonlarıyla değiştirir.logto translate create [languageCode]
: Bu komut, belirtilen[dilKodu]
ile yeni bir dil oluşturur ve tüm kod parçacıklarını varsayılan dilden (İngilizce) yeni dile çevirir.
Çeviri mükemmel olmayabilir, ama yine de büyük bir ilerleme. Artık asıl çeviri sürecine zaman harcamak yerine, çeviri sonuçlarını doğrulamaya ve iyileştirmeye odaklanabilirdik.
Sonuç
ChatGPT API'sini ürün uluslararasılaştırması iş akışlarımıza entegre etmek güçlü bir araç olabilir, ancak en iyi sonuçları almak için dikkatli bir planlama ve et talimatlara ihtiyaç duyar.
Eğer AI uygulamaları geliştiriyorsanız, kullanıcı kimlik doğrulaması önemlidir. Logto, kullanıcılarınızı yetkilendirmek için basit ve güvenli bir yol sunar ve tüm uygulamalarınız arasında birleşik bir kullanıcı kimlik sistemini sunar, ayrıca ChatGPT eklentileri için kutudan çıkan desteği de sunar. Daha fazla bilgi için blog yazımıza göz atın:
Logto ile ChatGPT eklentileri kullanıcı kimlik doğrulamasını uygulama