ตัวแทนการแปล: การแปลตัวแทนโดยใช้เวิร์กโฟลว์การสะท้อน
นี่คือการสาธิต Python ของเวิร์กโฟลว์เอเจนต์การสะท้อนสำหรับการแปลด้วยเครื่อง ขั้นตอนหลักคือ:
- แจ้งให้ LLM แปลข้อความจาก
source_language
เป็น target_language
; - ให้ LLM ไตร่ตรองการแปลเพื่อหาข้อเสนอแนะที่สร้างสรรค์สำหรับการปรับปรุง
- ใช้ข้อเสนอแนะเพื่อปรับปรุงการแปล
ความสามารถในการปรับแต่งได้
ด้วยการใช้ LLM เป็นหัวใจสำคัญของเครื่องมือการแปล ระบบนี้จึงสามารถควบคุมทิศทางได้สูง ตัวอย่างเช่น โดยการเปลี่ยนข้อความแจ้ง การใช้เวิร์กโฟลว์นี้ง่ายกว่าระบบการแปลด้วยเครื่องแบบดั้งเดิม (MT) เพื่อ:
- ปรับเปลี่ยนรูปแบบของผลลัพธ์ เช่น เป็นทางการ/ไม่เป็นทางการ
- ระบุวิธีจัดการกับสำนวนและคำศัพท์พิเศษ เช่น ชื่อ คำศัพท์ทางเทคนิค และตัวย่อ ตัวอย่างเช่น การรวมอภิธานศัพท์ในข้อความแจ้งช่วยให้คุณมั่นใจได้ว่าคำเฉพาะเจาะจง (เช่น โอเพ่นซอร์ส, H100 หรือ GPU) ได้รับการแปลอย่างสม่ำเสมอ
- ระบุการใช้ภาษาหรือภาษาถิ่นเฉพาะในระดับภูมิภาคเพื่อรองรับกลุ่มเป้าหมาย ตัวอย่างเช่น ภาษาสเปนที่พูดในละตินอเมริกาแตกต่างจากภาษาสเปนที่พูดในสเปน ภาษาฝรั่งเศสที่พูดในแคนาดาแตกต่างจากการพูดในฝรั่งเศส
นี่ไม่ใช่ซอฟต์แวร์สำหรับผู้ใหญ่ และเป็นผลมาจากการที่ Andrew เล่นงานแปลในช่วงสุดสัปดาห์ในช่วงไม่กี่เดือนที่ผ่านมา รวมถึงผู้ทำงานร่วมกัน (Joaquin Dominguez, Nedelina Teneva, John Santerre) ที่ช่วยปรับโครงสร้างโค้ดใหม่
จากการประเมินของเราโดยใช้คะแนน BLEU บนชุดข้อมูลการแปลแบบดั้งเดิม บางครั้งขั้นตอนการทำงานนี้อาจแข่งขันได้ แต่บางครั้งก็แย่กว่าข้อเสนอเชิงพาณิชย์ชั้นนำด้วย อย่างไรก็ตาม เรายังได้รับผลลัพธ์ที่ยอดเยี่ยมเป็นบางครั้ง (เหนือกว่าข้อเสนอเชิงพาณิชย์) ด้วยวิธีนี้ เราคิดว่านี่เป็นเพียงจุดเริ่มต้นสำหรับการแปลแบบตัวแทน และนี่เป็นแนวทางที่เป็นไปได้สำหรับการแปล โดยมีพื้นที่ว่างที่สำคัญสำหรับการปรับปรุงเพิ่มเติม ซึ่งเป็นเหตุผลว่าทำไมเราจึงเผยแพร่การสาธิตนี้เพื่อสนับสนุนการอภิปราย การทดลอง การวิจัย และโอเพ่นซอร์สมากขึ้น ผลงาน
หากการแปลแบบตัวแทนสามารถสร้างผลลัพธ์ที่ดีกว่าสถาปัตยกรรมแบบดั้งเดิม (เช่น หม้อแปลงแบบ end-to-end ที่ป้อนข้อความและส่งออกการแปลโดยตรง) ซึ่งมักจะเร็วกว่า/ถูกกว่าในการทำงานมากกว่าแนวทางของเราที่นี่ สิ่งนี้ยังให้ กลไกในการสร้างข้อมูลการฝึกอบรมโดยอัตโนมัติ (corpora ข้อความคู่ขนาน) ที่สามารถนำไปใช้ในการฝึกอบรมเพิ่มเติมและปรับปรุงอัลกอริธึมแบบเดิมได้ (ดูบทความนี้ใน The Batch เกี่ยวกับการใช้ LLM เพื่อสร้างข้อมูลการฝึกอบรม)
ยินดีรับฟังความคิดเห็นและข้อเสนอแนะสำหรับการปรับปรุงสิ่งนี้!
เริ่มต้นใช้งาน
หากต้องการเริ่มต้นใช้งาน translation-agent
ให้ทำตามขั้นตอนเหล่านี้:
การติดตั้ง:
- จำเป็นต้องมีตัวจัดการแพ็คเกจ Poetry สำหรับการติดตั้ง การติดตั้งบทกวี อาจใช้งานได้: ขึ้นอยู่กับสภาพแวดล้อมของคุณ:
- จำเป็นต้องมีไฟล์ .env ที่มี OPENAI_API_KEY เพื่อรันเวิร์กโฟลว์ ดูไฟล์ .env.sample เป็นตัวอย่าง
git clone https://github.com/andrewyng/translation-agent.git
cd translation-agent
poetry install
poetry shell # activates virtual environment
การใช้งาน:
import translation_agent as ta
source_lang , target_lang , country = "English" , "Spanish" , "Mexico"
translation = ta . translate ( source_lang , target_lang , source_text , country )
ดู examples/example_script.py สำหรับสคริปต์ตัวอย่างที่จะลองใช้
ใบอนุญาต
Translation Agent ได้รับการเผยแพร่ภายใต้ ใบอนุญาต MIT คุณมีอิสระในการใช้ แก้ไข และแจกจ่ายรหัสเพื่อวัตถุประสงค์ทางการค้าและไม่ใช่เชิงพาณิชย์
แนวคิดสำหรับการขยาย
ต่อไปนี้เป็นแนวคิดที่เราไม่มีเวลาทดลอง แต่เราหวังว่าชุมชนโอเพ่นซอร์สจะ:
- ลอง LLM อื่น ๆ เราทำต้นแบบสิ่งนี้โดยใช้ gpt-4-turbo เป็นหลัก เราอยากให้ผู้อื่นทดลองกับ LLM อื่นๆ รวมถึงตัวเลือกไฮเปอร์พารามิเตอร์อื่นๆ และดูว่าบางตัวทำงานได้ดีกว่าตัวอื่นๆ สำหรับคู่ภาษาใดภาษาหนึ่งหรือไม่
- การสร้างอภิธานศัพท์ อะไรคือวิธีที่ดีที่สุดในการสร้างอภิธานศัพท์ (อาจใช้ LLM) ของคำศัพท์ที่สำคัญที่สุดที่เราต้องการแปลอย่างสม่ำเสมออย่างมีประสิทธิภาพ ตัวอย่างเช่น ธุรกิจจำนวนมากใช้คำศัพท์เฉพาะทางที่ไม่ได้ใช้กันอย่างแพร่หลายบนอินเทอร์เน็ตและ LLM ไม่ทราบ และยังมีคำศัพท์อีกมากมายที่สามารถแปลได้หลายวิธี ตัวอย่างเช่น "โอเพ่นซอร์ส" ในภาษาสเปนอาจเป็น "Código abierto" หรือ "Fuente abierta" ทั้งคู่ใช้ได้ แต่ควรเลือกหนึ่งรายการและเก็บไว้เป็นเอกสารเดียว
- การใช้อภิธานศัพท์และการนำไปปฏิบัติ เมื่อพิจารณาอภิธานศัพท์แล้ว วิธีใดคือวิธีที่ดีที่สุดในการรวมไว้ในพรอมต์
- การประเมินผลในภาษาต่างๆ ประสิทธิภาพแตกต่างกันอย่างไรในภาษาต่างๆ? มีการเปลี่ยนแปลงที่ทำให้ทำงานได้ดีขึ้นสำหรับภาษาต้นทางหรือภาษาเป้าหมายโดยเฉพาะหรือไม่ (โปรดทราบว่าสำหรับประสิทธิภาพที่สูงมากซึ่งระบบ MT กำลังใกล้เข้ามา เราไม่แน่ใจว่า BLEU เป็นตัวชี้วัดที่ดีหรือไม่) นอกจากนี้ ประสิทธิภาพในภาษาทรัพยากรที่ต่ำกว่ายังต้องมีการศึกษาเพิ่มเติม
- การวิเคราะห์ข้อผิดพลาด เราพบว่าการระบุภาษาและประเทศ/ภูมิภาค (เช่น “ภาษาสเปนเป็นภาษาพูดในเม็กซิโก”) ใช้งานได้ค่อนข้างดีสำหรับใบสมัครของเรา แนวทางปัจจุบันขาดตรงไหน? นอกจากนี้เรายังสนใจเป็นพิเศษในการทำความเข้าใจประสิทธิภาพในหัวข้อเฉพาะทาง (เช่น กฎหมาย การแพทย์) หรือข้อความประเภทพิเศษ (เช่น คำบรรยายภาพยนตร์) เพื่อทำความเข้าใจข้อจำกัด
- ประเมินดีกว่า สุดท้ายนี้ เราคิดว่าการประเมินที่ดีขึ้น (evals) เป็นหัวข้อวิจัยที่สำคัญและใหญ่มาก เช่นเดียวกับแอปพลิเคชัน LLM อื่นๆ ที่สร้างข้อความอิสระ เกณฑ์ชี้วัดการประเมินในปัจจุบันดูเหมือนจะไม่เพียงพอ ตัวอย่างเช่น เราพบว่าแม้แต่ในเอกสารที่เวิร์กโฟลว์ตัวแทนของเรารวบรวมบริบทและคำศัพท์ได้ดีกว่า ส่งผลให้มีการแปลที่ผู้ตรวจสอบที่เป็นมนุษย์ของเราต้องการมากกว่าข้อเสนอเชิงพาณิชย์ในปัจจุบัน การประเมินในระดับประโยค (โดยใช้ชุดข้อมูล FLORES) ส่งผลให้ระบบตัวแทนให้คะแนนต่ำกว่า บน BLEU เราสามารถออกแบบตัวชี้วัดที่ดีขึ้น (อาจใช้ LLM เพื่อประเมินการแปลได้หรือไม่) ที่จับคุณภาพการแปลในระดับเอกสารที่สัมพันธ์กับความต้องการของมนุษย์ได้ดีขึ้นหรือไม่
งานที่เกี่ยวข้อง
กลุ่มวิจัยเชิงวิชาการบางกลุ่มก็เริ่มพิจารณาการแปลแบบ LLM และแบบตัวแทน เราคิดว่ามันเป็นวันแรกสำหรับสาขานี้!
- ChatGPT MT: การแข่งขันสำหรับภาษาทรัพยากรระดับสูง (แต่ไม่ใช่ต่ำ) , Robinson และคณะ (2023), https://arxiv.org/pdf/2309.07423
- วิธีการออกแบบพรอมต์การแปลสำหรับ ChatGPT: การศึกษาเชิงประจักษ์ , Gao และคณะ (2023), https://arxiv.org/pdf/2304.02182v2
- นอกเหนือจากการแปลโดยมนุษย์: ควบคุมการทำงานร่วมกันของตัวแทนหลายรายเพื่อการแปลข้อความวรรณกรรมที่ยาวเป็นพิเศษ , Wu และคณะ (2024), https://arxiv.org/pdf/2405.11804