บล็อก Splync มี 42 ภาษา
นี่คือบทความที่ 23 บนบล็อกของฉันสำหรับ Splync ตัวติดตามงบประมาณร่วมสำหรับคู่รัก เพื่อน และครอบครัว คุณอาจสงสัยว่าฉันเผยแพร่ทุกโพสต์ใน 42 ภาษาได้อย่างไร ทั้งที่ฉันเป็นวิศวกรเดี่ยว ตามคำชี้แจงที่ด้านบนของแต่ละบทความ เว็บไซต์นี้แปลอัตโนมัติเป็นหลายภาษาด้วยซอฟต์แวร์ที่ฉันสร้างขึ้นเอง เพื่อความชัดเจน: ฉันไม่ได้เขียนประโยคในภาษาอื่นนอกจากภาษาอังกฤษเองเลย ด้วยเหตุนี้ ฉันขอให้ผู้อ่านอ้างอิงจากเวอร์ชันภาษาอังกฤษต้นฉบับเมื่อความถูกต้องของความหมายมีความสำคัญจริงๆ อย่างไรก็ตาม หลังจากทำการทดลองและปรับปรุงกระบวนการแปลหลายครั้ง ฉันเชื่อว่าคุณภาพการแปลโดยรวมค่อนข้างดี ในบทความนี้ ฉันจะแบ่งปันว่าโปรแกรมของฉันทำให้บล็อก Splync เป็นหลายภาษาได้อย่างไร
Python และ OpenAI API ทำงานร่วมกัน
ฉันเริ่มโดยเขียนบทความในภาษาอังกฤษธรรมดา รวมถึงข้อมูลเมตาที่เกี่ยวข้องกับ SEO หลังจากนั้น สคริปต์ Python ของฉันจะส่งข้อความภาษาอังกฤษไปยัง OpenAI API พร้อมกับคำสั่งและไฟล์อ้างอิงเล็กๆ ที่เซิร์ฟเวอร์ของ OpenAI, ChatGPT-4o จะอ่านคำร้องขอและส่งบทความที่แปลแล้วกลับมา — เช่น เวอร์ชันภาษาอาหรับในรูปแบบ JSON เมื่อ MacBook ของฉันได้รับการแปลนั้น สคริปต์จะส่งคำร้องขอใหม่ทันที ครั้งนี้ขอเป็นภาษาเบงกาลี สคริปต์จะวนลูปผ่านทุกภาษาเป้าหมายทั้ง 42 ภาษาโดยอัตโนมัติ เมื่อกระบวนการเสร็จสิ้น คอมพิวเตอร์ของฉันจะมีไฟล์ JSON ที่แปลแล้ว 42 ไฟล์ สคริปต์ Python อีกตัวฝังการแปลแต่ละรายการลงในเทมเพลต HTML และสร้างไฟล์ HTML 42 ไฟล์ในเวลาไม่ถึงวินาที ไฟล์ทั้งหมดถูกอัพโหลดไปยังเซิร์ฟเวอร์ที่โฮสต์บล็อกนี้ และแต่ละเวอร์ชันภาษาถูกวางไว้ในไดเรกทอรีของตนเอง สุดท้ายสคริปต์ Python ฝั่งเซิร์ฟเวอร์จะอัปเดตดัชนีบทความและลิงก์ “โพสต์ถัดไป” เพื่อให้การนำทางของทุกภาษาสอดคล้องกัน ด้วยบทความภาษาอังกฤษต้นฉบับที่เขียนด้วยข้อความธรรมดา กระบวนการทั้งหมดมักใช้เวลา 5 นาทีหรือน้อยกว่านั้น เมื่อฉันต้องการทำการเปลี่ยนแปลง ฉันจะอัปเดตไฟล์ HTML หลายไฟล์พร้อมกันโดยใช้สคริปต์ Python ฝั่งเซิร์ฟเวอร์
API คืออะไร
หากคุณไม่คุ้นเคยกับคำศัพท์ทางเทคนิค คุณอาจสงสัยว่าคอมพิวเตอร์ของฉัน "พูดคุย" กับเซิร์ฟเวอร์ของ OpenAI ได้อย่างไร คำตอบคือสิ่งที่เรียกว่า API หรือ Application Programming Interface คุณสามารถจินตนาการว่า API เป็นหน้าต่างส่งสารระหว่างสองโปรแกรม: หนึ่งโปรแกรมส่งคำร้องขอ และอีกโปรแกรมส่งคำตอบกลับมา ตัวอย่างเช่น สคริปต์ Python ของฉันส่งข้อความว่า "กรุณาแปลบทความนี้เป็นภาษาเยอรมัน" OpenAI รับข้อความนั้นผ่าน API เตรียมการแปล และส่งผลลัพธ์กลับมา มันทำงานเหมือนการสั่งอาหารในร้านอาหาร: คุณบอกพนักงานเสิร์ฟว่าคุณต้องการอะไร ห้องครัวเตรียมอาหาร และพนักงานเสิร์ฟนำกลับมาที่โต๊ะของคุณ และทำไมคุณถึงต้องการพนักงานเสิร์ฟ? เพราะคุณไม่เข้าไปในครัวหรือพูดคุยโดยตรงกับเชฟ — คุณไม่รู้ว่าครัวทำงานอย่างไร และคุณไม่จำเป็นต้องรู้ คุณอาจพูดว่า "ขอชีสเบอร์เกอร์ได้ไหม?" กับพนักงานเสิร์ฟ และพนักงานเสิร์ฟอาจจะตะโกนว่า "เตรียมอาหาร! T21, Chihuahua!" ในรูปแบบที่แตกต่างโดยสิ้นเชิง API มีบทบาทเดียวกัน มันเชื่อมต่อสองระบบที่แตกต่างกันโดยไม่ต้องให้พวกเขาเข้าใจภาษาภายในหรือกระบวนการทำงานของกันและกัน
ทำไมฉันต้องการ OpenAI API
เมื่อเราได้เห็นว่า API คืออะไร นี่คือเหตุผลที่ฉันพึ่งพามันสำหรับบล็อกนี้ ในทางปฏิบัติ ฉันรู้วิธี "พูดคุย" กับ ChatGPT เอง — แต่ฉันต้องจัดการ 42 ภาษา การเรียกพนักงานเสิร์ฟ 42 ครั้งจะน่าเบื่อ (โปรแกรมข้ามการแปลจากภาษาอังกฤษเป็นภาษาอังกฤษ แต่ยังคงแปลงข้อความเป็น JSON) การใช้ OpenAI API ช่วยให้สคริปต์ Python ของฉันส่งคำร้องขอทั้งหมดโดยอัตโนมัติ ประหยัดฉันจากงานที่ซ้ำซากเพื่อให้ฉันสามารถมุ่งเน้นไปที่สิ่งอื่นๆ ฉันเป็นนักพัฒนาคนเดียว ดังนั้นฉันต้องใช้เวลาของฉันอย่างมีประสิทธิภาพที่สุดเท่าที่จะเป็นไปได้ เมื่อใดก็ตามที่ฉันเห็นงานที่ซ้ำซากและมีกฎชัดเจน ฉันจะอัตโนมัติมัน ผลลัพธ์คือกระบวนการที่เร็วขึ้นเป็นล้านเท่าและปราศจากข้อผิดพลาด โดยสิ้นเชิง นั่นคือเหตุผลที่การอัตโนมัติผ่าน API เป็นสิ่งจำเป็น — มันช่วยให้สคริปต์ของฉันวางคำสั่งทั้ง 42 รายการได้ทันทีและเชื่อถือได้
ทำไมถึงเป็น 42 ภาษา
ในทางเทคนิค ฉันสามารถเพิ่มภาษาได้อีกมาก; มันจะใช้เวลาเพียงไม่กี่นาทีเพิ่มเติมในขณะที่ฉันล้างจาน แต่ฉันชอบเลข 42 เป็นการส่วนตัว มันคือ "คำตอบต่อคำถามสุดยอดของชีวิต จักรวาล และทุกสิ่ง" จากหนังสือของ Douglas Adams นอกเหนือจากความผูกพันกับเลข 42 การเพิ่มภาษาเล็ก ๆ อาจมีความเสี่ยง เพราะการแปล AI อาจไม่น่าเชื่อถือสำหรับภาษาที่มีข้อมูลการฝึกอบรมจำกัด
อุณหภูมิของ ChatGPT 4o
เมื่อฉันทดลองใช้วิธีการแปลหลายภาษาเป็นครั้งแรก ผลลัพธ์ก็ดีพอสมควร แต่ไม่สมบูรณ์ มีบางประโยคที่แปลผิด ตรงตัวเกินไป หรือบอกเป็นนัยผิดในบางภาษา ฉันยังกังวลเกี่ยวกับการสร้างวลีที่อาจไม่เหมาะสมหรือละเอียดอ่อนในบริบททางวัฒนธรรมบางอย่าง และแน่นอนว่าฉันไม่ต้องการให้การแปลของฉันฟังดูเป็นหุ่นยนต์หรือเครื่องจักร ปัจจัยสำคัญประการหนึ่งที่อยู่เบื้องหลังคุณภาพการแปลคือการตั้งค่าอุณหภูมิ — พารามิเตอร์ที่ควบคุมว่า AI ควรจะ "สร้างสรรค์" หรือ "เข้มงวด" เพียงใด อุณหภูมิสูงทำให้ AI มีจินตนาการมากขึ้น แต่คาดเดาไม่ได้มากขึ้นด้วย อุณหภูมิต่ำทำให้มันคงความหมายใกล้เคียงของเดิม แต่บางครั้งอาจรู้สึกแข็งทื่อ ต้องใช้การลองผิดลองถูกมากมายเพื่อหาจุดสมดุลที่ถูกต้อง: ต่ำพอที่จะรับรองความถูกต้อง แต่ไม่ต่ำมากจนข้อความไร้ชีวิตชีวา หลังจากการทดลองมากมาย ฉันรู้สึกว่าอุณหภูมิ = 0.8 เหมาะที่สุดสำหรับความต้องการของบล็อกนี้: แม่นยำพอที่จะรักษาความซื่อสัตย์ต่อภาษาอังกฤษต้นฉบับ แต่ยืดหยุ่นพอที่จะฟังดูเป็นธรรมชาติในภาษาอื่น
ChatGPT 5.x ไม่รองรับอุณหภูมิ
โมเดลใหม่กว่าเช่น ChatGPT 5 และ 5.1 ไม่รองรับการตั้งค่าอุณหภูมิเลย — พารามิเตอร์นี้ถูกลบออกและแทนที่ด้วยแนวคิดเช่นการให้เหตุผลและความพยายาม ซึ่งมีอิทธิพลต่อวิธีที่โมเดลคิดแทนที่จะเป็นวิธีที่ "สร้างสรรค์" ที่มันเป็น กล่าวอีกนัยหนึ่ง ChatGPT 4o ให้ฉันหมุนลูกบิดได้เพื่อปรับแต่งสไตล์การแปล แต่ตระกูล 5.x ใช้ปรัชญาที่แตกต่างกันโดยสิ้นเชิง หากคุณขอให้โมเดลใหม่ล่าสุด "แปลด้วยอุณหภูมิ = 0.8" มันอาจพยายามแสดงพฤติกรรมเหมือนการตั้งค่านั้นยังคงมีอยู่ แต่ภายในพารามิเตอร์นั้นหายไป โมเดลเพียงแค่ประมาณเจตนา ขณะที่ OpenAI ยังคงอัปเดตโมเดลของพวกเขา ฉันอาจปรับเปลี่ยนกระบวนการแปลของฉันในวันหนึ่ง ปัจจุบัน ChatGPT 4o ยังคงเป็นตัวเลือกของฉันสำหรับการแปลหลายภาษา — ไม่เพียงเพราะมันเข้าใจบริบทได้ดีในหลายภาษา แต่ยังเพราะการกำหนดราคา API ของมันเหมาะสมสำหรับนักพัฒนาเดี่ยวอย่างฉัน ที่จริงแล้ว 4o อาจจะกลายเป็นหนึ่งในโมเดลที่รักที่สุดในประวัติศาสตร์ของ OpenAI
คนงานของ OpenAI API
สิ่งที่น่าทึ่งอย่างหนึ่งเกี่ยวกับ OpenAI API — เมื่อเปรียบเทียบกับการใช้ ChatGPT โดยตรงในเบราว์เซอร์ — คือคุณสามารถใช้ ChatGPT “คนงาน” มากกว่าหนึ่งคนในเวลาเดียวกัน เมื่อฉันส่งคำร้องขอแปลสำหรับ 42 ภาษา ฉันไม่ได้ส่งทีละคำในแถวที่ช้า แต่ API สามารถประมวลผลคำร้องขอจำนวนมากพร้อมกัน ราวกับว่าฉันได้จ้างนักแปลห้องหนึ่งที่ทั้งหมดเริ่มทำงานพร้อมกัน สคริปต์ Python ของฉันจัดการให้กระบวนการทำงานเหมือนสายการผลิตเล็กๆ: มันเตรียมบทความภาษาอังกฤษ ส่งคำร้องขอ รอการตอบกลับ และประมวลผลผลลัพธ์เป็นไฟล์ JSON ในขณะเดียวกัน เซิร์ฟเวอร์ OpenAI ก็เรียกใช้โมเดลหลายอินสแตนซ์พร้อมกัน แต่ละอินสแตนซ์แปลภาษาที่แตกต่างกันไปในเวลาเดียวกัน นี่คือสิ่งที่เว็บไซต์หรือแอปของ ChatGPT ทำไม่ได้ — ส่วนติดต่อเหล่านั้นให้คุณมีโมเดลเดียว บทสนทนาเดียว งานเดียวในเวลาเดียว แต่ด้วย API คุณสามารถขยายภาระงานของคุณได้เท่าที่โปรแกรมของคุณอนุญาต สำหรับนักพัฒนาเดี่ยวอย่างฉัน นี่รู้สึกเหมือนมีทีมงานเล็กๆ ของผู้ช่วยที่ฉลาดที่สุดและไม่มีอีโก้ มันขึ้นอยู่กับความเร็วอินเทอร์เน็ตในบางส่วน แต่ฉันมักจะตั้งค่าให้มีคนงาน = 12
สิ่งที่ฉันทำเพื่อทำให้บล็อกของฉันเป็นหลายภาษาคือการล้างจาน
ฉันเคยทำงานเป็นคนล้างจานในโรงอาหารของนักเรียนเมื่อฉันเรียนคณิตศาสตร์ที่มหาวิทยาลัยเกียวโต ในขณะที่ค่าแรงประมาณ 5 ดอลลาร์สหรัฐต่อชั่วโมง ฉันชอบงานที่ทำซ้ำๆ หลังจากใช้เวลาหลายชั่วโมง — หรือบางครั้งหลายวัน — ในการใช้ความคิดอย่างลึกซึ้ง ต่อมาเมื่อฉันทำงานที่โรงงานกระเทียมในฮอกไกโด งานของฉันคือขัดหัวกระเทียมขาวให้สว่างขึ้นบนสายพานลำเลียง แปดชั่วโมงต่อวัน — มุ่งเน้นเต็มที่ จังหวะที่มั่นคง มันแปลกที่น่าพึงพอใจ ตอนนี้ กลับจากความทรงจำเหล่านั้น ฉันกำลังทำงานที่ใช้สติปัญญา — เขียนซอฟต์แวร์ ออกแบบระบบ เขียนบทความเหล่านี้ แต่ความสมดุลยังไม่เปลี่ยนแปลง หากคุณถามฉันว่าฉันจัดการเผยแพร่บทความบล็อกใน 42 ภาษาได้อย่างไรด้วยตัวเอง คำตอบที่ตรงไปตรงมาคือ: ฉันทำได้โดยการล้างจาน