การทำให้เป็นสากลที่มีประสิทธิภาพด้วย ChatGPT
บทความนี้แบ่งปันประสบการณ์ในการใช้ ChatGPT API เพื่อสนับสนุนการทำให้ผลิตภัณฑ์เป็นสากล (i18n) อย่างมีประสิทธิภาพ โดยให้คำแนะนำเกี่ยวกับการรวม API การปรับปรุงผลการแปล และการเพิ่มประสิทธิภาพคำแนะนำเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น
ในตลาดโลกทุกวันนี้ เป็นสิ่งสำคัญที่จะทำให้ผลิตภัณฑ์เป็นสากล (i18n) การรองรับหลายภาษา ผลิตภัณฑ์สามารถดึงดูดและให้บริการฐานผู้ใช้ทั่วโลก เพิ่มประสบการณ์ของผู้ใช้ เพิ่มความภักดี และเพิ่มส่วนแบ่งการตลาด อย่างไรก็ตาม การสนับสนุนการทำให้เป็นสากลมักมาพร้อมกับต้นทุนที่สูงและการบำรุงรักษาที่ซับซ้อน:
- การตั้งค่าการสนับสนุนภาษาต้องใช้ทีมงานมืออาชีพและการเลือกพันธมิตรที่เหมาะสม ซึ่งต้องใช้เวลาและความพยายาม
- กระบวนการแปลแบบดั้งเดิมช้าและต้องการการแทรกแซงจากมนุษย์ ทำให้ยากต่อการติดตามการทำซ้ำของผลิตภัณฑ์
ในบทความนี้ เราจะแบ่งปันประสบการณ์ของทีม Logto ในการสนับสนุนการทำให้เป็นสากลสำหรับผลิตภัณฑ์ของเราอย่างมีประสิทธิภาพโดยใช้ ChatGPT และ API ในขณะที่ลดต้นทุน
วิธีที่เราจัดการกับการทำให้เป็นสากล
ก่อนที่จะรวม ChatGPT API เราใช้กระบวนการแปลแบบดั้งเดิมเพื่อสนับสนุนการทำให้ผลิตภัณฑ์ของเราเป็นสากล กระบวนการมีดังนี้:
- สำหรับแต่ละภาษา เราได้สร้างโฟลเดอร์การแปลที่ประกอบด้วยไฟล์ TypeScript หลายไฟล์ ไฟล์แต่ละไฟล์ประกอบด้วยวัตถุ TypeScript ที่มีคู่คีย์-ค่า ซึ่งแสดงคีย์วลีและการแปลของพวกมัน
- ในการเพิ่มวลีใหม่ เราได้เพิ่มคู่คีย์-ค่าใหม่ลงในไฟล์การแปลสำหรับแต่ละภาษาด้วยตนเอง
- ในไดเรกทอรีรูทของแต่ละภาษา เราได้สร้างไฟล์ index.ts ที่ส่งออกไฟล์การแปลทั้งหมดในภาษานั้น
นี่คือตัวอย่างของไฟล์ index.ts สำหรับภาษาจีนฮ่องกง:
ในการแสดงวลีใน UI เราใช้ฟังก์ชันที่ดึงการแปลตามสภาพแวดล้อมปัจจุบัน เราเข้าถึงวัตถุหรือคีย์ที่ซ้อนกันโดยใช้สัญกรณ์จุด
ตัวอย่างเช่น ถ้าผู้ใช้ใช้เบราว์เซอร์ภาษาอังกฤษ:
ความท้าทายที่พบ
เราเผชิญกับความท้าทายหลักสองประการในแนวทางนี้:
- เมื่อจำนวนภาษาและวลีเพิ่มขึ้น การบำรุงรักษาไฟล์การแปลจึงกลายเป็นเรื่องท้าทาย การเพิ่มวลีใหม่ให้แต่ละภาษาด้วยตนเองเป็นเรื่องที่ใช้เวลานานและจุดเสี่ยงต่อข้อผิดพลาด
- กระบวนการแปลไม่น่าเชื่อถือ โดยไม่มีทีมแปลที่อุทิศให้ เราพึ่งพาผู้ใช้จากชุมชนในการแปลส่วนใหญ่ พวกเขาทำงานได้ยอดเยี่ยม แต่การแปลก็ยังไม่ครบถ้วนและไม่สอดคล้องกันตามเวลา
แนะนำ 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
และเพิ่มสอง // TRANSLATED
ความคิดเห็น ซึ่งเราไม่ได้คาดหวัง
แม้ว่าคำแนะนำก่อนหน้านี้จะชัดเจนและเฉพาะเจาะจง แต่มันค่อนข้างยาวและยากต่อการติดตาม แม้กระทั่งสำหรับมนุษย์ ในการปรับปรุง เราให้โมเดลมีเวลาในการคิด เราให้คำแนะนำทีล ะขั้นตอน:
ผลลัพธ์ดีขึ้นอย่างมาก อย่างไรก็ตาม บางครั้ง ChatGPT จะแสดง "กระบวนการคิด" เนื่องจากเราได้ระบุขั้นตอนไว้อย่างชัดเจน
บทบาทในการสนทนา
แม้ว่าจะไม่มีอินเตอร์เฟซผู้ใช้โดยตรง แต่เราสามารถส่งการสนทนาแบบโต้ตอบและไดนามิกไปยัง ChatGPT ได้โดยการกำหนด "บทบาท" ต่างๆ ให้กับแต่ละข้อความ บทบาทสามารถเป็นดังนี้:
- "system": รับผิดชอบการแนะนำและควบคุมการไหลของการสนทนาเพื่อให้แน่ใจว่ามีความต่อเนื่องและเป้าหมายแน่วแน่
- "assistant": แสดงถึงโมเดล ChatGPT เอง โดยให้คำตอบและการตอบสนอง
- "user": แสดงถึงผู้ใช้ที่ถามคำถามและโต้ตอบกับโมเดล
โดยการใช้บทบาท เราสามารถสร้างการสนทนาที่มีการมีส่วนร่วมมากข ึ้นกับ ChatGPT ข้อความแต่ละข้อความมีบทบาทเฉพาะในการนำทางการสนทนา
ที่นี่เราสามารถใช้บทบาท "system" เพื่อแนะนำ ChatGPT ในการทำภารกิจของเรา:
ใช้บทบาท "user" เพื่อขอให้ ChatGPT แปลโค้ดสแนปช็อต:
ใช้บทบาท "assistant" เพื่อแสดงถึง "คำตอบมาตรฐาน":
สุดท้ายรวมข้อความทั้งสามด้านบนกับโค้ดสแนปช็อตที่เราต้องการแปล และส่งคำขอเดียวไปยัง Chat Completion API Chat Completion API นี่คือตัวอย่าง:
เราทดแทน languageCode
ด้วยรหัสเป้าหมายและ code
ด้วยโค้ดสแนปช็อตที่ต้องการแปล และได้ผลที่เราคาดหวังอย่างแม่นยำ ยอดเยี่ยม!
การบูรณาการกับ CLI ของเรา
ในขณะที่ผลลัพธ์ถูกต้องและเสถียร กระบวนการใช้ ChatGPT API ยังไม่สะดวกมากนัก เราต้องคัดลอกโค้ดสแนปช็อตด้วยตนเอง วางลงในคำขอ แลกเปลี่ยนตัวแปร languageCode
และ code
เมื่อพิจารณาจากความจำเป็นในการแปลมากกว่า 10 ภาษาและโค้ดสแนปช็อต 100 รายการ นี่ไม่ใช่ประสบการณ์ที่เหมาะสม
เพื่อแก้ไขปัญหานี้ เราจัดการบูรณาการ ChatGPT API เข้ากับ Command-Line Interface (CLI) ของเรา เราได้เพิ่มสองคำสั่งใน CLI ของเรา:
logto translate sync
: คำสั่งนี้รวบรวมโค้ดสแนปช็อตทั้งหมดที่มีคำถาม// UNTRANSLATED
ในทุกภาษา แปลและแทนที่โค้ดสแนปช็อตเดิมด้วยฉบับที่แปลแล้วlogto translate create [languageCode]
: คำสั่งนี้สร้างภาษใหม่ด้วย[languageCode]
ที่ระบุไว้และแปลโค้ดสแนปช็อตทั้งหมดจากภาษาต้นแบบ (ภาษาอังกฤษ) ไปเป็นภาษาหมายนาย
แม้ว่าการแปลอาจไม่สมบูรณ์แบบ แต่ก็ยังเป็นการปรับปรุงครั้งใหญ่ เราสามารถมุ่งเน้นไปที่การยืนยันและปรับปรุงผลการแปล แทนที่จะใช้เวลาในกระบวนการแปลจริง
สรุป
การบูรณาการ ChatGPT API เข้ากับเวิร์กโฟลว์ของเราเพื่อการทำให้ผลิตภัณฑ์เป็นสากลสามารถเป็นเครื่องมือที่มีพลังได้ แต่ต้องการการวางแผนอย่างรอบคอบและคำแนะนำที่ชัดเจนเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
หากคุณกำลังพัฒนาแอปพลิเคชัน AI การยืนยันตัวตนของผู้ใช้เป็นสิ่งจำเป็น Logto ให้การยืนยันตัวตนของผู้ใช้ที่ง่ายและปลอดภัย และให้ระบบเอกลักษณ์ผู้ใช้รวมสุดทั้งในแอปพลิเคชันของคุณ และยังมีการสนับสนุน ChatGPT plugins ในตัวอีกด้วย สำหรับข้อมูลเพิ่มเติมดูบทความของเราได้ที่นี่: