🎞️ Videos What I use and what I build to make my life easier this year

Description

In this session, I cover what I learned in 2024 that improved my life and made me better at developing software and creating content. It includes exploration of self-hosted web-based tools, JavaScript tooling, multimodal generative AI models, and how they connect together. Links and resources: https://d4h.cc/jsbkk2024talk

Chapters

  • เกริ่นนำและแนะนำตัว 0:00
  • โปรเจค Creatorsgarten.org และความต้องการ Subtitle 1:51
  • การใช้ Large Language Models (LLMs) และเปรียบเทียบ ChatGPT, Claude, Gemini 6:59
  • โปรเจคสแกนใบเสร็จด้วย Google AI Studio 14:29
  • แนะนำ Open Web UI และ LiteLLM สำหรับการใช้งาน LLM หลายตัว 16:40
  • แนะนำ Grist: Spreadsheet + Database แบบ Self-Host 18:44
  • เปรียบเทียบข้อดีข้อเสียและสไตล์การเขียนของ LLM แต่ละตัว 19:41
  • การทดสอบ Speech-to-Text หลายเจ้าและ Whisper ของ OpenAI 27:40
  • Multimodal AI Model: Gemini 1.5 Pro 32:21
  • ปัญหาและวิธีแก้ไขการทำ Subtitle อัตโนมัติด้วย Gemini Pro 33:38
  • TypeScript และเครื่องมือที่ช่วยลดความยุ่งยากในการพัฒนา 38:49
  • การแชร์เทคนิคและการเรียนรู้จาก Community 39:24
  • การทดสอบ CapCut และ iApp ASR Pro 40:39
  • บทเรียนและประสบการณ์จากการลองผิดลองถูก 41:50
  • การสร้างเครื่องมือแก้ไข Subtitle ด้วย Google Apps Script 42:54
  • การสร้างและเผยแพร่ TypeScript Library ด้วย JSR 45:46
  • สรุป และการสร้าง Description และ Chapters ด้วย Gemini 47:04

Transcript

คำบรรยายต่อไปนี้อาจไม่ถูกต้องทั้งหมด หากคุณพบข้อผิดพลาดใดๆ คุณสามารถช่วยแก้ไขข้อผิดพลาดได้บน GitHub

เกริ่นนำและแนะนำตัว0:00

ขอบคุณครับ

ยังไม่เสร็จ แต่เดี๋ยวขอเซ็ตอัพอีกแป๊บนึงนะครับ รอสักครู่ ไม่เป็นไรครับ จะได้แล้ว

ไว้ตรงนี้แล้วกัน

สวัสดีทุกคนนะครับผม ขอต้อนรับเข้าสู่ session What I Use and What I Build to Make My Life Easier This Year นะครับ ที่ผมตั้งชื่อหัวข้อไว้แบบนี้ เพราะว่าผมมีหลายๆ เรื่องที่อยากจะมาเล่าให้ฟังมากๆ เลยครับ จนเลือกไม่ถูกเลยว่าจะพูดเกี่ยวกับเรื่องอะไร ก็เลยกะว่าจะจับเอาเรื่องต่างๆ ที่ผมได้เรียนรู้ในปีนี้ มามัดรวมกันเป็น session นี้นะครับ ฉะนั้นก็อาจจะจับฉ่ายนิดนึงนะครับผม ในปีนี้ผมได้ทำหลายๆ โปรเจคครับ ทั้งโปรเจคที่ทำงาน โปรเจคงานอดิเรกด้วย แล้วก็พบว่าในปีนี้มีโปรเจคหลายตัวมาก ที่ถ้าเป็นผมเมื่อปีที่แล้วเนี่ย ผมจะทำโปรเจคพวกนี้ไม่ได้เลย ซึ่งแน่นอนครับ มันเกิดมาจากการมาของพวก generative AI และ LLM เนาะ ซึ่งเอาจริงๆ เนี่ย ผมค่อนข้างสองจิตสองใจ เกี่ยวกับหัวข้อนี้เหมือนกัน เพราะว่าผมรู้สึกว่า talk เกี่ยวกับเรื่อง AI ผมว่ามันเยอะจนมันจะเกลื่อนแล้ว แต่สำหรับผมน่ะ มัน impact workflow ต่างๆ ของผมมาก ก็เลยคิดว่าอยากจะให้ session นี้ เหมือนเป็นการตกตะกอนเรื่องที่ได้เรียนรู้ ของตัวเองนะครับ นอกจากนี้ครับ ปีนี้ผมได้เรียนรู้เครื่องมือหลายๆ ตัว ที่มัน impact การทำงานของผมมาก ฉะนั้น session นี้ก็เลยอยากจะมาแนะนำเครื่องมือต่างๆ ให้ได้รู้จักกันนะครับ ขอแนะนำตัวก่อนแล้วกันครับ ผมชื่อไทนะครับ ไท ปังสกุลยานนท์ ปัจจุบันทำงานอยู่ที่ Eventpop ผมทำ community อยู่ชื่อว่า Creatorsgarten นะครับ ซึ่งเดี๋ยวเราจะพูดกันถึงต่อไปนะครับ แล้วก็มีเว็บไซต์อยู่ dt.in.th นะครับ

แล้วก็มี YouTube channel ชื่อ dtinth นะครับ ก็ไป subscribe กันได้นะครับ

โปรเจค Creatorsgarten.org และความต้องการ Subtitle1:51

เข้าเรื่องดีกว่าครับ สำหรับ session นี้ ผมจะพูดถึงโปรเจคหนึ่งเป็นหลักครับ นั่นก็คือเว็บไซต์ของ creatorsgarten.org นะครับ ก็จะเป็นเว็บของกลุ่ม Creatorsgarten แปลตรงๆ ก็คือสวนนักสร้างเนี่ยแหละ กลุ่มเราเนี่ย จัด event กันหลากหลายรูปแบบมาก ไม่ว่าจะเป็นพวก event tech หรือแบบสายศิลปะ คณิตศาสตร์ วิทยาศาสตร์ การศึกษา การเงิน รวมถึงเรื่องความรักด้วย ซึ่งทั้งนี้ก็ขึ้นอยู่กับว่าเจ้าของงานเนี่ย อยากจะจัด event แบบไหนเนาะ ซึ่งแต่ละ event เนี่ย ก็จะเป็น lead โดยคนละคนกันนะครับ

จริงๆ เราไม่ได้ fix นะว่าจะเป็น event หมวดไหน เราจะมีความ anti-discipline นิดหน่อย ก็คือพยายามเอาหลายๆ เรื่องมายำรวมกันนะครับ แล้วก็พวกเราไม่ได้มีโครงสร้างหรือแผนงานที่ตายตัวครับ ก็คือไม่ได้มีคณะกรรมการ หรือไม่ได้มี target อะไรเลยว่าปีนึงจะต้องจัดกี่งาน แต่ว่าเวลาที่ใครก็ตามเนี่ย อยากจะจัด event เนี่ย เราก็มาคุยกัน แล้วก็ถ้าเขาพร้อมที่จะเป็น lead เนี่ย เราก็ช่วยให้งานมันเกิดขึ้นมานะครับ โดยกลุ่มเราเนี่ย จะมีพวก share resource ต่างๆ นะครับ เพื่อให้สามารถจัดงานได้ง่ายขึ้น ไม่ต้องเริ่มจากศูนย์ ก็คือเรามีเว็บไซต์ มี account Eventpop มีเพื่อนๆ ที่มาช่วยเป็น volunteer ในงานนะครับ แล้วก็มีพวกเครื่องมืออุปกรณ์ มี platform social มีทีมไลฟ์นะครับ อย่างรอบนี้เราก็จ้าง LiveTube มาช่วยนะครับ แต่ว่าพวกงานที่เราไม่ค่อยมีงบ เราก็ไลฟ์กันเองนะครับ เรามีทีมอยู่ แล้วก็มี platform social นะครับ

รวมถึง channel YouTube ครับ อย่างหนึ่งที่ผมได้ทำในปีนี้ก็คือ section วิดีโอนะครับ บนเว็บไซต์ครับ ก็จะเป็นหน้าที่รวบรวมวิดีโอจาก session ต่างๆ ที่เราอัปโหลดขึ้น YouTube นะครับ แต่ว่าเรามีการจัด filter ต่างๆ เพื่อให้สามารถหาวิดีโอของแต่ละงาน แล้วก็หาวิดีโอของแต่ละ speaker ได้ด้วย ฉะนั้น speaker แต่ละคนเนี่ย ก็จะมีเหมือนเป็นหน้าเว็บของตัวเอง ที่รวบรวมหัวข้อของ speaker คนนั้นอยู่นะครับ แต่ละคลิปนะครับ สิ่งที่ผมอยากให้มันมี

ก็คืออยากจะให้แต่ละคลิปเนี่ย มีบทถอดคำพูด แล้วก็มี subtitle เนาะ เพราะว่าบางทีเวลาผมดู YouTube ข้างนอกนะ บางทีก็ไม่อยากเปิดเสียง แล้วก็ไม่อยากใส่หูฟัง ก็คิดว่าคงจะดีถ้ามันมี subtitle ให้อ่านเนาะ ปกติคลิปภาษาอังกฤษเนี่ย มี auto generate caption

อยู่แล้ว ซึ่งแม่นยำพอสมควร แต่พอเป็นภาษาไทยเนี่ย เมื่อก่อน YouTube ไม่มี ตอนนี้มีเนาะ แต่ว่าสำหรับพวก tech talk ที่มีเนื้อหาที่เป็น technical มีคำศัพท์เทคนิคเยอะอ่ะ มันยังไม่แม่นยำพอ ฉะนั้นเนี่ย พอเรามีบทถอดคำพูดอยู่บนหน้าเว็บนะ เนื้อหามันจะครบถ้วนขึ้น แล้วมันก็จะเป็นผลดีต่อ SEO ใช่มั้ย search engine optimization เนาะ นอกจากบทถอดคำพูดแล้วเนี่ย คือบางวิดีโอก็ยาว เราก็จะอยากให้มันมีการแบ่งเนื้อหาเป็น chapter ต่างๆ นะครับ เพื่อให้ทุกคนสามารถเข้ามาดู แล้วก็เห็นภาพรวมเกี่ยวกับเนื้อหา ก่อนที่จะเข้าไปดูจริงๆ ได้นะครับ ฉะนั้นเนี่ย โปรเจคนี้ก็อาจจะเฉพาะทางนิดนึง

ก็เชื่อว่าหลายๆ คนที่ฟัง session นี้ ก็อาจจะไม่ได้สนใจเรื่องการทำ subtitle มากสักเท่าไหร่เนาะ แต่สำหรับผมเนี่ย มันเป็นอะไรที่ผมได้เรียนรู้เยอะมากๆ

ก็เลยอยากจะขอใช้โปรเจคนี้ เป็นตัวอย่างเพื่อถอดบทเรียนออกมาครับ

ก่อนหน้านี้ผมก็ทำ subtitle ให้คลิปใน channel YouTube ตัวเองนะครับ ก็คือทำแบบ manual เลย ก็ฟังเอง ถอดคำพูดเอง ทำ subtitle เอง เพราะมันมีโปรแกรมฟรีๆ เช่น Amara หรือ Happy Scribe เนี่ย ก็คือใช้ฟรี support ลิงก์ YouTube ด้วย แล้วก็มีคีย์ลัดเยอะมาก สะดวกมากๆ แต่เวลาทำ subtitle ทีเนี่ย คือแบบเหนื่อยมาก จากที่เคยลองทำนะครับ คลิป 10 นาที ผมใช้เวลาทำประมาณชั่วโมงนึง ฉะนั้นถ้าเรามีวิดีโอคอนเทนต์ 1 ชั่วโมงเนี่ย ก็คูณเข้าไปครับ ก็อาจจะใช้เวลาประมาณ 6-8 ชั่วโมงครับ ซึ่งผมว่าผมก็ใช้คอมพิวเตอร์คล่องแล้วนะ พิมพ์ก็คิดว่าก็พิมพ์เร็วใช้ได้ แต่ก็ยังใช้เวลาเยอะมากๆ อยู่ดี แต่ข้อดีก็คือไม่ต้องจ่ายตังค์ใช่มั้ย ทำเอง ทำเองก็ฟรีใช่มั้ยฮะ แต่พอผมทำคลิปนึงเสร็จเนี่ยคือผมแทบจะ burn out ไปเลย แล้วนี่แค่วิดีโอของตัวเองนะครับ ถ้าเป็นวิดีโอของคนอื่นเนี่ย ผมก็คงแบบไม่ได้มีไฟจะมาทำให้ขนาดนั้น ถ้าเกิดมันต้องใช้ effort เยอะขนาดนี้ครับ อีกทางเลือกนึงก็คือเราอาจจะจ้างมืออาชีพมาทำ subtitle ให้เรานะครับ ซึ่งเท่าที่ผมเคยลองหาดูเนี่ย ก็จะคิด rate เป็นนาทีครับ ซึ่งถ้าเราตีเป็นชั่วโมงเนี่ย เท่าที่ผมลองหาดูนะก็ราคาก็เป็นหลักพันนะครับ ซึ่งจากที่ผมเคยลองทำ subtitle ด้วยตัวเองก็คิดว่า เออ มันสมเหตุสมผลและราคาแบบเนี้ย เพราะผมทำ subtitle เองทีคือเลือดตาแทบกระเด็น แถมถ้าเป็นการทำ subtitle มืออาชีพนะฮะ นี่ครับ มีกฎเต็มไปหมดเลย มี guideline เรื่องการทำ subtitle เต็มไปหมดเลย ว่าจะเอาอะไรไว้ตรงไหน เขียนสะกดตัวเลขยังไงอะไรพวกเนี้ย อันนี้ที่โชว์ให้ดูนะครับเป็น guideline ของ Netflix นะครับ โอเค ซึ่งงาน meetup ของเราเนี่ย ส่วนมากก็จะมีคอนเทนต์ประมาณ 2-3 ชั่วโมง งบก็ไม่น่าจะพอ หรือเอาจริงๆ น่ะ คือเราจัดงานฟรี งาน meetup ส่วนมากเนี่ย ฉะนั้นเราไม่มีงบอะไรเลยด้วยซ้ำนะครับ แล้วเอาจริงๆ เราก็ไม่ได้ต้องการ subtitle ระดับ professional แบบระดับ Netflix ขนาดนั้นนะครับ แค่มีบทถอดคำพูดไว้ให้อ่านได้เนี่ย ผมว่าก็ดีเกินพอแล้วนะครับ

ฉะนั้นเนี่ยในช่วงปี 2 ปีที่ผ่านมา ผมเลยศึกษาเกี่ยวกับเครื่องมือต่างๆ ที่จะมาช่วยกระบวนการตรงนี้ครับ

การใช้ Large Language Models (LLMs) และเปรียบเทียบ ChatGPT, Claude, Gemini6:59

แต่เดี๋ยวผมจะขอพักโปรเจคนี้ไว้ก่อน ผมจะขอสลับไปพูดเกี่ยวกับเรื่อง large language model

ก่อนนะครับ ก็ปัจจุบันเนี่ยตัวที่ได้รับความนิยมสูงสุดก็นี่เนาะ ChatGPT Claude Gemini เนาะ ก็จะมีคนมาถามผมบ่อยๆ ว่า ถ้าเลือกได้แค่ตัวเดียวเนี่ย จะจ่ายเงินให้ตัวไหนดี เพราะแต่ละตัวเนี่ย 20 เหรียญต่อเดือนทั้งนั้นเลยใช่มั้ย ถ้าอยากใช้ทั้ง 3 ตัวก็ 60 ใช่มั้ย ไม่รู้จะคุ้มมั้ย ดังนั้นถ้าให้เลือกเนี่ยจะจ่ายตัวไหนดี ซึ่งผมให้คำตอบไม่ได้เลยครับ เพราะว่าแต่ละตัวเนี่ยมีข้อดีข้อเสียต่างกันหมดเลย ฉะนั้นเนี่ยผมเลยต้องใช้ทุกตัว แต่ขณะเดียวกันเนี่ย ผมก็ไม่ได้จ่ายเงิน 20 เหรียญต่อเดือนให้แอปไหนซักแอปเลย

ทำยังไงครับ ก็คือพวกแอป ChatGPT Claude Gemini เนี่ย ผมมองว่ามันเป็น เค้าเรียกว่าเป็น service เป็นบริการที่ออกแบบมาให้คนทั่วไป หรือคนที่ไม่ได้มีความรู้ด้านเทคนิคเนี่ยสามารถใช้งานได้ง่าย ซึ่ง service พวกเนี้ย ถ้าอยากจะใช้เวอร์ชันที่แบบฉลาดๆ ฟีเจอร์เยอะๆ เนี่ย ก็ใช่มั้ย เหมาจ่ายรายเดือน 20 เหรียญนะครับ แต่บริษัทพวกเนี้ยก็ได้พัฒนา model ที่เปิดให้นักพัฒนา หรือคนที่สามารถใช้งานมันเป็นเนี่ย ก็สามารถเข้าไปใช้งานมันได้ตรงๆ ด้วย โดย model พวกเนี้ยก็จะคิดราคาตามปริมาณที่ใช้งานจริงนะครับ เรียกว่าคิดเป็น token น่ะ ซึ่งถ้าใช้น้อยก็จ่ายน้อย ใช้เยอะก็จ่ายเยอะครับ ซึ่งเวลาผมเอาไอ้เนี่ยไปแนะนำก็จะมีคนบอกว่า

กลัวว่าถ้าใช้เยอะเกินแล้วมันจะ สุดท้ายมันจะเสียตังค์เยอะกว่าเหมาจ่าย ซึ่งจากประสบการณ์ของผมนะครับ คือผมใช้เองคนเดียวทั้ง 3 เจ้านะ อันนี้ผมเอา billing ของตัวเองมาให้ดูนะครับ ก็ไม่เคยใช้รวมกันเกิน 50 เหรียญเลย แล้วส่วนมากอ่ะผมจะใช้ไม่ถึงเดือนละ 20 เหรียญด้วยซ้ำนะครับ ฉะนั้นเนี่ยก็สามารถไปลองเล่นกันดูได้นะครับ บางเจ้าก็จะเป็นแบบเติมเงิน ก็คือไม่ต้องกลัวว่าจะโดนบิลช็อกนะ แล้วก็บางเจ้าเนี่ยก็เป็นเก็บตังค์รายเดือนนะครับ แต่เราตั้ง budget alert ได้นะครับ แล้วเราสามารถใช้งาน model พวกเนี้ย โดยไม่ต้องเขียนโค้ดเลยด้วย ก็คือเข้าไปใช้งานที่ console ของแต่ละเจ้านะครับ อย่างในรูปด้านซ้ายนะครับ อันเนี้ยด้านซ้ายคือ ChatGPT ส่วนด้านขวาคือ OpenAI platform ครับ จะเห็นว่าการใช้งานเนี่ยคล้ายๆ กันเลย ก็คือเป็นการแชทใช่มั้ย แล้วใน OpenAI platform เนี่ย จะเห็นว่ามันมี setting ต่างๆ ให้เลือกเยอะขึ้นด้วยนะครับ อันนี้ก็คล้ายๆ กันครับ ด้านซ้าย Claude ด้านขวา Anthropic แล้วก็อันนี้ด้านซ้าย Gemini ด้านขวา Google AI Studio นะครับ

ก็อย่างที่บอกไปนะครับ แต่ละ model เนี่ยจะมีจุดเด่นจุดด้อยแตกต่างกันออกไป ฉะนั้นถ้าเราอยากจะรู้นะครับ เราต้องทำไง ต้องทดสอบถูกมั้ยครับ ต้องทดลอง โอเค ตัวอย่างนี้นะครับ ผมต้องการจะทดสอบความสามารถด้านภาษาไทยของ model แต่ละตัว ผมเลยเอาเรื่องเล่าภาษาอังกฤษเรื่องนึงเกี่ยวกับ yak shaving นะครับ เอามาแปะแล้วก็เขียนในคำสั่งใน prompt อ่ะ ว่าช่วยเล่าเรื่องนี้เป็นภาษาไทยให้หน่อยนะครับ เสร็จแล้วผมก็ลองเทียบผลลัพธ์ดู อันนี้ผมจะลองเริ่มจากตัวฟรีก่อนนะ ผมพบว่าทั้ง Claude กับ ChatGPT เนี่ย แปลชื่อเรื่องได้อย่างถูกต้อง ก็คือ yak shaving ก็แปลว่าการโกนขนจามรีเนาะ แต่ Gemini เนี่ยดันแปลเป็นการเลื่อยขนยัก

ซึ่งเอาจริงๆ เนี่ย Gemini เนี่ย มันแปลมาหลายแบบมาก ไม่ว่าผมจะลองกี่ครั้ง เหมือนมันก็ไม่รู้ซักทีว่า yak เนี่ย ในภาษาอังกฤษมันคือจามรีนะครับ ฉะนั้นเนี่ยพอผมเอาตัวฟรีมาเทียบกันเนี่ย แล้วเห็นผลลัพธ์ออกมาแบบนี้แล้วคือแบบ ใครมันจะไปกล้าจ่ายตังค์ให้ Gemini Advanced ใช่มั้ย วันก่อนผมลองคุยกับ Gemini ดูนะครับว่า Can you speak Thai? พูดภาษาไทยได้มั้ย คิดว่าจะ มันตอบว่าอะไรครับ

มันตอบว่า อันยองฮาเซโย

แต่ตอบเป็นภาษาไทยนะ เราก็บอกว่าพูดภาษาไทยไม่ได้

แต่ตอบเป็นภาษาไทยผมก็ไม่รู้ทำไมมันมึนขนาดนี้ ฉะนั้นเนี่ย โอเค ไม่เป็นไร เมื่อกี้อาจจะไม่แฟร์เพราะว่าเราเอาตัวฟรีมาเทียบกันเนาะ ไหน เราลองจ่ายตังค์แล้วใช้ตัวที่ดีที่สุดของแต่ละเจ้า ดูบ้างนะครับ ผมก็ลองทำแบบเดิมครับ รอบนี้ไปใช้คอนโซลแต่ละตัวแทนเนาะ รอบนี้ทั้ง 3 model แปลถูกต้องแล้วนะครับ เราก็ต้องเอาผลลัพธ์มากางดูนะครับว่าตัวไหนแปลออกมา ได้ดีที่สุด ซึ่งผมพบว่ารอบนี้ gpt-4o กับ Claude เนี่ย มันจะแปลเรื่องราวแบบตรงตัวมากๆ แต่ Gemini เนี่ย ผมว่ามันน่าสนใจกว่าตัวอื่น เพราะว่าผมลองอ่านแล้วรู้สึกเหมือนมันพยายามทำให้ เนื้อเรื่องมันเข้ากับบริบทคนไทยด้วย อย่างเช่น wax the car เนี่ย ก็ลงแว็กซ์รถ

Gemini ก็เปลี่ยนเป็นล้างรถ Home Depot มันก็เปลี่ยนเป็น HomePro หรือสะพานแทบแมนซี มันก็กลายเป็นสะพานพระราม 8 ใช่มั้ย

อีกเรื่องนึงที่ผมพบคือภาษาอังกฤษเนี่ย มันเป็นภาษาที่แทบทุกประโยคมันจะต้องมี subject มีประธาน ฉะนั้นเนี่ย เวลาพอแปลเป็นภาษาไทยตรงๆ มันจะทื่อๆ แบบ "ฉันสามารถยืม EasyPass

ของเพื่อนบ้านได้" มันจะทื่อนิดนึง แต่ Gemini เนี่ย ตัดคำว่าฉันออกไป มันทำให้ฟังดูเป็นธรรมชาติมากขึ้นนะครับ แถมรู้ด้วยว่าบ๊อบเนี่ย น่าจะเป็นผู้ชาย ก็เลยเรียกว่าลุงบ๊อบ เอาจริงๆ ผมลองหลายรอบ บางทีมันก็เปลี่ยนชื่อลุงบ๊อบกลายเป็นลุงสมศักดิ์ให้เลย หรือบางทีมันก็แปลตรงตัวนะ แต่ว่า feature เนี้ย เป็น feature ที่ผมไม่เคยเห็น Claude หรือ GPT ทำให้นะครับ ฉะนั้น สำหรับโจทย์ช่วยเล่าเรื่องเป็นภาษาไทยให้หน่อยเนี่ย ผมก็พบว่าโมเดลเสียเงินเนี่ย ตัว Gemini Pro เนี่ย จะชนะขาดไปเลยนะครับ

ฉะนั้นเนี่ย เรื่องที่ผมอยากฝากไว้ให้ทุกคนลองก็คือ เดี๋ยวนี้มันง่ายมากๆ ที่เราจะไปลองเล่นกับ AI model ต่างๆ เนาะ ตอนนี้แต่ละเจ้าก็ต่างแข่งกันทำให้ของตัวเอง ใช้งานง่ายมากที่สุด ราคาถูกที่สุด ก็แนะนำให้ลองกันเยอะๆ นะครับ

ถ้าเราใช้มันผ่านคอนโซลนะ ก็เราไม่ต้องจ่าย flat rate ละ ก็ไปจ่ายตามจริงเนาะ แล้วก็สามารถตั้งค่าปรับแต่งอะไรต่างๆ ได้เยอะกว่าด้วย แถมอีก feature นึงครับ ผมชอบมากๆ คือเราสามารถแก้คำตอบของโมเดลได้ด้วยเนาะ อย่างเช่นอันนี้ครับ ผมใช้ Google AI Studio เนาะ ช่วยแปลข้อความจากภาษาอังกฤษมาเป็นภาษาไทยให้หน่อย ผมว่ามันก็แปลดีอยู่นะ แต่ผมไม่ชอบที่มันแปลคำว่า endpoint เป็นจุดปลาย เพราะรู้สึกไม่มีใครใช้กันอ่ะ คือแบบถ้าจะต่ออายุ token เนี่ย เราต้องไปเลือกจุดปลายไหน ก็ไม่มีใครพูดแบบนั้นกันใช่มั้ย

ซึ่งถ้าพวก Gemini หรือ ChatGPT เนี่ย ปกติเราไม่สามารถแก้ไขข้อความที่โมเดลมันตอบมาได้ เราก็ต้องไปแก้ prompt ของเราหรือไม่ก็คุยกับโมเดลต่อว่า เฮ้ย ช่วยไม่แปลคำนี้หน่อยได้มั้ย ไม่งั้นมันก็จะใช้คำว่าจุดปลาย จุดปลาย จุดปลาย ไปเรื่อยๆ นะครับ แต่ Google AI Studio เนี่ย เรา edit คำตอบของโมเดลได้เลย ผมก็จัดการแก้เป็น endpoint แล้วก็มากด rerun ข้างล่างนะครับ มันก็เลิกแปล endpoint เป็นจุดปลายให้ละ

ฉะนั้น เราสามารถควบคุมการทำงานของโมเดล โดยการแก้ไขคำตอบมันได้ด้วยนะครับ

แต่ว่าพวก service สำเร็จรูปเนี่ย ไม่ใช่ว่ามันไม่ดีนะ ผมว่ามันก็มีข้อดีมากๆ อย่างนึง

คือมัน integrate อะไรต่างๆ ไว้ให้เราใช้งานได้สะดวกนะครับ อย่างเช่นอันนี้ครับ ผมชอบมากเลยก็คือ เวลาผมเห็นคลิป YouTube แต่ไม่มีเวลาเข้าไปดูอ่ะ ผมก็ก๊อปลิงก์ YouTube มาแปะ แล้วก็บอกให้ Gemini สรุปให้หน่อย อันนี้ Google AI Studio ทำไม่ได้นะครับ ต้องเป็นตัวแอป Gemini นะครับ ซึ่งเวิร์กมาก โดยเฉพาะพวกคลิปที่มันแบบมีความ clickbait หรือพวกคลิปยาวๆ แต่ไม่เข้าเนื้อหาซักทีอ่ะ ก็จะโยนให้ Gemini ช่วยสรุปให้ก่อนนะครับ

แล้วค่อยตัดสินใจนะครับว่าจะดูดีมั้ย ซึ่งสะดวกมาก แล้วที่ผมชอบคือ มันดีทั้ง 2 ฝ่ายนะ ก็คือพอเราให้ Gemini สรุปให้เนี่ย มันจะไปนับวิวใน YouTube ให้ด้วย ซึ่งถ้าใครยังไม่เคยลองกับคอนโซลพวกนี้เลยนะครับ ผมแนะนำให้ลอง Google AI Studio ดูก่อนเนาะ เพราะมันฟรี สามารถเริ่มใช้งานได้เลย โดยไม่ต้องผูกบัตรนะครับ

โปรเจคสแกนใบเสร็จด้วย Google AI Studio14:29

โอเค เดี๋ยวผมจะพาไปดูอีกโปรเจคนึงที่ผมเคยอยากทำมานาน แล้วเพิ่งมาได้ทำปีนี้นะครับ คือเดี๋ยวนี้โทรศัพท์ iPhone Android นะ เราสามารถใช้ฟังก์ชันสแกนเอกสารได้แล้วใช่มั้ย มันก็จะได้เป็นไฟล์ PDF นะฮะ แล้วสมัยก่อนเนี่ย ผมเคยอยากทำระบบที่แบบ เราถ่ายรูปใบเสร็จอ่ะ แล้วให้มันเซฟใส่ database ให้ เราจะได้คำนวณรายรับรายจ่ายเราได้ง่ายขึ้นนะครับ ก่อนหน้านี้ผมเคยลองพยายามทำเนาะ โดยใช้ Google Cloud Vision API นะครับ ซึ่งหน้าที่ของมันเนี่ย คือมันจะแกะข้อความออกจากไฟล์รูป ก็คือเรียกว่าเป็นการทำ OCR นะครับ แล้วเราจะได้เป็นไฟล์ JSON แบบนี้ ที่บอกว่าตัวอักษรอะไรอยู่ตรงไหนบ้าง ซึ่งผลลัพธ์มันแม่นมากๆ นะครับ แต่การจะเอาข้อมูลนี้ไปใช้ก็คือ ค่อนข้าง challenge นะครับ เพราะว่าเราต้อง match ว่าข้อความไหนตรงกับตัวเลขไหน แถมบางทีเนี่ย มันดันจับเอาบล็อกหลายๆ บล็อกอ่ะ มารวมกันเป็นบล็อกเดียวด้วย ฉะนั้นสำหรับผมเนี่ย มันแทบจะเป็นไปไม่ได้เลย ที่จะเขียนโค้ดให้มันประมวลผลได้ทุกกรณีนะครับ

ผมก็เลยพับโปรเจคนี้ไว้ก่อนนะครับ

โอเค ทีนี้ พอปีนี้ ผมมารู้จัก Google AI Studio นะ ก็ได้ลองเอาโปรเจคนี้กลับมาทำใหม่ ก็คือเขียน prompt อัปโหลด PDF ไฟล์ขึ้นไปนะครับ

แล้วก็กดปุ่ม run นะครับ แล้วก็จะได้ผลลัพธ์หน้าตาประมาณนี้ คือมันทำเป็นตารางให้เลยนะครับ ผมก๊อปไปใส่ใน Google Sheets ได้เลยนะครับ หรือนอกจากนี้ มีตัวเลือก JSON mode ด้วย พอเรากดเราก็จะได้ data เป็น JSON ออกมานะครับ แล้วถ้าเรากด get code ข้างบนนะครับ เราก็จะได้โค้ดที่เราเอาไปใช้ integrate ต่อกับระบบของเราได้นะครับ ฉะนั้นเนี่ย ตอนนี้ผมก็สามารถดึงข้อมูลออกจากไฟล์ใบเสร็จ ที่สแกนออกมาได้แล้วนะครับ โดยที่ผมยังไม่ได้เขียนโค้ดอะไรเลยนะครับ

แล้วเวลาเอาข้อมูลจากโมเดลนี้ไปใช้ ก็อย่าลืมตรวจสอบความถูกต้องนะครับ อันนี้ผมลองตรวจสอบตัวเลขละ ถูกต้องหมด แต่ว่าจะเห็นว่าด้านบนเนี่ย ชื่อร้านอาหารมันก็สะกดผิดเนาะ หรือข้าวไข่ข้นมันก็กลายเป็นข้าวไข่ขันอะไรแบบนี้

ครับก็จะเห็นว่าพอเราใช้คอนโซลพวกนี้เป็นเนี่ย มันทำให้เราทำอะไรได้เยอะขึ้นเลยจากงาน ลดงาน manual ผมเยอะมาก แต่คอนโซลพวกเนี้ยบางทีมันก็ใช้งานไม่ค่อยสะดวกครับ ฉะนั้นยิ่งถ้าใช้งานบนมือถือเนี่ย คอนโซลบางตัวเนี่ยคือมันจะบอกเลยว่าเราไม่ support มือถือ ให้ไปเปิดใน desktop อ่ะ

แนะนำ Open Web UI และ LiteLLM สำหรับการใช้งาน LLM หลายตัว16:40

ก็จะมาแนะนำเครื่องมือตัวนึงนะครับที่ผมใช้บ่อยมาก ชื่อว่า Open Web UI นะครับ หน้าที่ของมันคือเหมือนเป็น front-end สำหรับ API ของ OpenAI นะครับ คือเราสามารถใช้งานมันแทน ChatGPT ได้ feature ทั้งหมดเนี่ยอาจจะไม่เหมือนกันเนาะ แต่ว่าอย่างน้อยเราก็ไม่ต้องจ่าย 20 เหรียญต่อเดือน ให้ ChatGPT Pro เราก็ไปเอา API key ของ ChatGPT มาเสียบ แล้วเราก็ใช้ตัวนี้แทนนะครับ

แอปเนี้ยเป็น open source แล้วก็มี image Docker พร้อมใช้นะครับ ก็คือเป็นแบบ self-host คือถ้าเราอยากจะใช้เนี่ย เราก็ต้องเอา image Docker มา deploy เองนะครับ หรือจะ clone โค้ดมาแล้วก็ run เองเลยก็ได้เหมือนกันนะครับ โดยตัว Open Web UI เนี่ย มันจะสามารถทำงานกับ service ต่างๆ ที่มี API endpoint หน้าตาเหมือนของ OpenAI ได้นะครับ ฉะนั้นถ้าเราอยากจะใช้งานกับ model อื่นๆ อย่าง Claude หรือ Gemini ล่ะทำยังไงนะครับ ก็จะมี software ตัวนึงชื่อ LiteLLM นะครับ ตัวเนี้ยเป็น proxy ที่ implement API ที่มันจุดปลายต่างๆ มันเหมือนของ OpenAI อ่ะครับ

แต่ว่าตัวมันเองเนี่ยสามารถคุยกับ API ของหลายๆ เจ้าได้นะครับ ซึ่งจริงๆ มันคุยได้เป็นสิบๆ ตัวเลย รวมถึง Anthropic กับ Gemini ด้วยนะครับ ซึ่งขั้นตอนการ set up เนี่ย อันนี้ผมเขียนไว้ในเว็บไซต์ผมแล้วนะครับ เดี๋ยวท้ายสไลด์เนี่ย หรือว่าจริงๆ มันจะมีลิงก์เล็กๆ อยู่ตรงเนี้ย ก็จะรวบรวมลิงก์ทั้งหมดไว้นะครับ ก็พอ set ไว้แล้วนะครับ เราจะสามารถใช้โปรแกรมเนี้ยเพื่อคุยกับทั้ง 3 model หรือจะคุยกับทั้ง 3 model พร้อมๆ กันเลยก็ได้นะครับ ครับแล้วตัว Open Web UI เนี่ย รองรับการทำงานหลาย user ด้วย ก็คือเราสามารถ set ไว้ให้ใช้งานกันแบบภายใน

แชร์กันใช้ในองค์กรอ่ะ โดยที่ไม่ต้องจ่ายค่า AI เป็นรายหัวได้ด้วยนะครับ อืมก็สะดวกมาก นอกจาก Open Web UI เนี่ย จริงๆ ยังมีเครื่องมือ open source แบบเต็มโลก open source เลยอ่ะที่เราสามารถลองไป deploy ใช้เองได้ ก็แนะนำให้ลองหาเล่นกันดูนะครับ เพราะมันจะช่วยให้เราได้ฝึก skill infrastructure แล้วก็ skill DevOps ด้วยนะครับ แล้วเราก็จะได้ deploy เครื่องมือ ที่เราได้ใช้ในชีวิตประจำวันจริงๆ ด้วยนะครับ ก็สามารถลองไปหาดูใน GitHub หรือ Reddit ได้นะครับ

แนะนำ Grist: Spreadsheet + Database แบบ Self-Host18:44

จริงๆ มีเครื่องมือ self-host อีกตัวนึงนะครับ ที่อยากจะแนะนำให้รู้จักกันชื่อว่า Grist นะครับ ถ้าให้ผมเทียบก็คงคล้ายๆ แบบ Airtable กับ Google Sheets ผสมกันนะครับ เป็น spreadsheet ผสมกับ database แต่ว่ามันเป็นแบบที่เรา host เองได้ ฉะนั้นก็จะไม่มีข้อจำกัดว่าห้ามเกิน 1,000 row อะไรแบบเนี้ย แล้วก็มี API ให้ใช้งานด้วยนะครับ อย่างโปรเจค scan ใบเสร็จก่อนหน้าเนี้ย ผมก็ทำ script ไว้ว่าพอเราอัปโหลดไฟล์ ขึ้นโฟลเดอร์นึงใน Google Drive ก็ให้ script เนี้ยไปดูดไฟล์ PDF มา แล้วส่งไปให้โมเดล Gemini ให้จัดการสรุป แล้วก็ส่งผลลัพธ์ไปไว้บน Grist นะครับ ฉะนั้นเนี่ย ผมพบว่า API ของมันเนี่ย ใช้งานง่ายกว่าทั้ง Airtable และ Google Sheets เลย ฉะนั้นเนี่ยตอนไปเที่ยวรอบล่าสุดเนี่ย ผมก็ใช้วิธีนี้แหละก็คือ scan ใบเสร็จ อัปขึ้น Google Drive เสร็จแล้วพอ run script เนี่ย ข้อมูลต่างๆ ก็จะมาโผล่ใน Grist โดยที่เราแทบไม่ต้องพิมพ์เองเลย ก็แค่ตรวจทานนะครับ ก็ลองไปเล่นกันดูได้นะครับชื่อ Grist G R I S T นะครับ

เปรียบเทียบข้อดีข้อเสียและสไตล์การเขียนของ LLM แต่ละตัว19:41

โอเค ก็หลังจากที่ผมได้ลองเล่น model หลายๆ ตัวเนี่ย ในหัวข้อถัดไปที่จะถึงนี้นะครับ ผมก็จะมาพูดเกี่ยวกับว่า ความคิดเห็นเกี่ยวกับ model ทั้ง 3 ตัวเป็นยังไงบ้างนะครับ จากที่ได้น่าจะเห็นไปก่อนหน้าเนี้ย คือ Gemini เนี่ยผมว่ามันค่อนข้างเก่งด้านภาษามากๆ ถ้าเป็นพวกงานแปลหรือเกลาคำเนี่ย ผมก็จะลอง Gemini เป็นอันดับแรกเนาะ ส่วนถ้าเป็นเรื่องเกี่ยวกับโค้ดเนี่ย ผมจะชอบผลลัพธ์ของ Claude มากที่สุด ผมว่าผลลัพธ์มันค่อนข้างดีกว่า ChatGPT นะ แต่ว่า result เนี่ยมันคือตอนนี้นะ ในอนาคตอาจจะ outdated นะครับ

ซึ่งผมใช้ VS Code extension ตัวนึงนะครับ ชื่อ continue.dev ตอนเนี้ยผมใช้แบบใช้เยอะมากๆ เลย extension ตัวเนี้ยใช้ฟรี ก็คือไม่ต้องจ่ายค่า subscription แค่เอา API key ของ Claude เนี่ย มาเสียบเข้า extension เนี้ย แล้วเราก็จ่ายแค่ค่า model นะครับ มันก็ช่วยงานผมหลายๆ อย่างมาก อย่างเช่นเวลาผมทำโปรเจกต์อ่ะฮะ โดยเฉพาะเวลาผม prototype นะ บางทีอ่ะผมจะอยากทำให้มัน work ก่อน ฉะนั้นผมจะเขียนทุกอย่างรวมกันเข้าไปในไฟล์เดียวเลย เพราะว่าเวลาเราแก้โค้ดเนี่ย เราจะได้ไม่ต้องสลับไฟล์ไปมาใช่มั้ย ทุกอย่างมันอยู่ในไฟล์เดียวเลยก็ดูแลง่าย แต่พอโปรเจกต์มันเริ่มใหญ่ครับแล้วโค้ดเริ่มเยอะ ผมก็เริ่มงงเพราะว่าทุกอย่างมันพันกันเป็นสปาเกตตีไปเลย

ผมก็ใช้ continue เนี่ยแหละ บอกว่าช่วยแกะโค้ดที่เกี่ยวกับระบบผลักศัพท์ ออกไปอีกไฟล์นึงให้หน่อย มันก็จัดให้แล้วมันก็สร้างไฟล์นี้ให้ครับ แล้วมันก็จัดการแก้โค้ดก่อนหน้าเนี้ย ให้มันไปเรียกฟังก์ชันในไฟล์นั้นนะครับ

แต่บางทีเนี่ยเราต้อง brief มันเยอะเหมือนกันนะ คือบางทีเราต้อง brief มันละเอียด เพราะว่าเอาจริงๆ มันก็อ่านใจเราไม่ได้ ถึงแม้ว่าเราจะคิดว่าแบบ เออมันใกล้เคียงกับสิ่งที่อ่านใจเราได้มากขนาดนั้น แต่ว่าบางทีเราก็ต้อง brief มันดีๆ ผมพบว่าวิธีเนี้ยเวลาผม refactor อ่ะ ถึงผมจะต้องเขียน prompt ยาวนะ แต่ว่าอย่างน้อยอ่ะผมสามารถโฟกัสกับภาพรวมได้ แล้วรายละเอียดปลีกย่อยเนี่ยก็ให้ Claude ดูแลให้ ทำให้เวลาผม refactor อ่ะ ผมตาลายน้อยลงมากเลยนะครับ

อีกท่านึงที่ผมชอบใช้ก็คือ บางทีผมก็ส่งโค้ดจำนวนนึงแล้วก็ส่งให้มันดูเป็นตัวอย่าง แล้วก็บอกว่าช่วยเขียน development guide ให้หน่อย ถ้ามีคนมาเข้าโปรเจกต์เราเนี่ย เค้าจะได้รู้อะไรอยู่ที่ไหน ควรจัดโครงสร้างโค้ดยังไง เขียน test ยังไงอะไรแบบเนี้ย เราก็จะได้เป็นไฟล์ readme มาใช่มั้ยครับ เสร็จแล้วไฟล์ readme เนี่ยแหละ ผมก็เอามาใช้ reference ว่า เวลาขอให้มันเขียนโค้ดเพิ่มเนี่ย ก็บอกว่าให้ไปดูไฟล์ readme ซะว่าจะเขียนโค้ดยังไง

พอเขียนโค้ดเสร็จเราให้มันช่วยเขียน test ให้ด้วยนะครับ

โอเค ฉะนั้นเนี่ยถ้าเป็นเรื่องโค้ดเนี่ย ผมจะยกให้ Claude นะครับ นอกจากนี้ครับผมว่า Claude เนี่ย จะตอบคำถามต่างๆ ได้ค่อนข้างตรงประเด็นมากที่สุดนะครับ เทียบกับ Gemini คือบางทีมันจะมึนๆ บ้าง ตอบหลงประเด็นบ้างนะครับ แต่เท่าที่ผมลองกับเพื่อนนะ โดยเฉพาะแบบเวลาปรึกษาปัญหาต่างๆ ปัญหาชีวิต ปัญหารัก ปัญหาการงานอะไรพวกเนี้ย บางทีผมก็แบบเออผมไม่รู้เหมือนกันจะแนะนำยังไง มาลองใช้ Gemini ให้คำตอบดู

ผมพบว่า Gemini เนี่ย ค่อนข้างแสดงความใส่ใจต่อความรู้สึกได้มากกว่าตัวอื่นๆ เผลอๆ เก่งกว่าผมด้วยซ้ำ ในขณะที่คำตอบของ Claude เนี่ย จะค่อนข้างเน้นใช้ตรรกะ หรือว่าเป็นเจ้า logic มากกว่านะครับ

ก็จะมีอีกการทดลองนึงที่ผมเคยทำนะครับ คือผมเคยส่ง model พวกเนี้ยไปสอบ O-NET ม. 6 นะครับ ก็พบว่า Claude เนี่ยได้คะแนนเยอะที่สุดนะครับ ฉะนั้นเนี่ยถ้าเรื่องแบบความ

คือผมไม่รู้ว่าจะเรียกว่าฉลาดดีมั้ย เพราะว่ามันก็เป็นแค่ language model เนาะ แต่ Claude เนี่ยมันสามารถแสดงให้เรารู้สึกว่า

มันฉลาดได้มากกว่าเจ้าอื่นเท่าที่ผมลองนะ แต่ก็ไม่ใช่ว่า Claude มันจะไม่มีปัญหาใช่มั้ยครับ คือปัญหาคือเวลาคนใช้กันเยอะๆ เนี่ย บางที API มันจะล่มครับ แล้วมันจะ error กลับมาบอกว่า overload ทำให้ใช้งานไม่ได้ครับ ส่วน Gemini ก็มีเรื่องน่ารำคาญของมันเหมือนกันครับ คือมันจะมี content filter ที่ค่อนข้าง aggressive เนาะ ถ้าบางทีอ่ะมันตอบๆ อยู่ แล้วถ้าเกิดไป trigger safety filter มันเมื่อไหร่เนี่ย คำตอบจะถูกบล็อกทันทีนะครับ ส่วน Claude ก็เช่นกัน บางทีมันก็จะปฏิเสธที่จะทำงานบางอย่างนะครับ อย่างผมเนี่ยเคยเอาเนื้อเพลงภาษาอังกฤษมาแปะ แล้วก็บอกว่าช่วยเขียนเป็นคำอ่านภาษาไทยให้หน่อย คือแบบช่วยทำเป็นคาราโอเกะให้หน่อยอ่ะ Gemini ครับ ไม่ตอบอะไรมาเลย

คือน่าจะโดนบล็อก Claude บอกว่าทำไม่ได้

เพราะว่าเนื้อเพลงเนี่ยติดลิขสิทธิ์ ส่วน GPT ครับ ไม่ปฏิเสธทำให้เลยนะครับ

โอเค กลับมาที่หน้านี้ครับ จะเห็นว่า GPT-4o ด้านซ้ายมันยังโล่งอยู่เลย คือผมก็ไม่รู้จะว่ายังไงเหมือนกัน เพราะว่าผมก็ยังหาไม่เจอว่ามันมีจุดไหนที่มันโดดเด่น กว่าเจ้าอื่นนะครับ ในเชิงความสามารถนะ คือเอาจริงๆ เนี่ย ผมมองว่า Gemini เนี่ยมันก็เก่งภาษา Claude ก็เก่งโค้ด แต่ GPT-4o เนี่ย ก็หาจุดเด่นด้านโมเดลผมยังหาไม่เจอแล้วกัน ไม่ใช่ว่ามันไม่มีข้อดีนะ ผมคิดว่าทุกอย่างมันมีข้อดี แค่ต้องหาให้เจอ อย่างน้อยมันไม่ปฏิเสธงานเท่าตัวอื่น และด้วยความที่มันอยู่มานาน API มันตอนนี้ผมรู้สึกว่า มันเสถียรมากที่สุดเลย หลังๆ แทบจะไม่เจอมันล่มเลยนะครับ ส่วนพูดถึงสไตล์การเขียนเนาะ โมเดลแต่ละตัวก็จะมีเอกลักษณ์ ซึ่งบางคนเนี่ยก็จะบอกว่าแต่ละโมเดลมีนิสัยเฉพาะของมัน อย่าง Gemini เนี่ยผมรู้สึกว่ามันใช้ภาษาเก่งดีนะ แต่บางทีมันชอบใช้ศัพท์แบบเว่อร์วังอลังการไปอะครับ บางทีผมให้มันช่วยเขียน description ให้วิดีโอนะครับ แล้วบางทีเนี่ยมันก็จะ generate description มาแบบว่า พบกับ speaker สุดคูล นำเสนอเทคนิคสุดล้ำ คุณประโยชน์ อะไรต่างๆ น่าทึ่งมาก ไม่ดูไม่ได้แล้วแก อะไรแบบเนี้ย ผมต้องเขียนคำสั่งเพื่อเบรกมัน บอกว่าแบบ เฮ้ย ใจร่มๆ หน่อย ไม่ต้องทำเหมือนว่าทุกอย่างมันน่าตื่นเต้นขนาดนั้น ก็ได้นะครับ ส่วน Claude นะครับ ผมเวลาคุยกับมันอะ ผมรู้สึกว่าเหมือนคุยกับเพื่อนที่เค้าจริงจังตลอดเวลา เวลาผมพิมพ์ไป 1 ประโยค มันจะตอบมา 1 เรียงความ ครับ ส่วน GPT-4o ก็ผมว่ามันก็ balance ดีนะครับ ก็ประมาณนี้แล้วกัน ก็อันนี้คือความเห็นของผมเกี่ยวกับ 3 โมเดลนี้ จะมีอีกโมเดลนึงที่อยากจะพูดถึงครับ แต่ผมเพิ่งได้ลองมันมาไม่ถึงสัปดาห์เลย ก็เลยไม่สามารถออกความเห็นได้เยอะนะครับ ชื่อว่า llama sonar online ของ Perplexity นะครับ

จุดเด่นของมันคือด้วยความที่มันเป็นโมเดลแบบ online เนี่ย เราสามารถถามคำถามเกี่ยวกับเหตุการณ์ปัจจุบันได้ อ่านใน feed แล้วเห็นประเด็นดราม่า หรือเพื่อนพูดถึงเทรนด์อะไรต่างๆ ที่มันดราม่า แล้วผมไม่ได้ตามข่าวเนี่ย ผมถาม Perplexity ก็มีโอกาสที่จะได้คำตอบ ที่ทันเหตุการณ์ครับ แล้วจากที่ผมทดสอบดูอะ ข่าวบางข่าวเนี่ย หรือบางเรื่องเนี่ย ข่าวมันยังออกมาไม่ถึงครึ่งวันด้วยซ้ำ มันก็เอามาตอบได้นะครับ เอาเป็นว่าผมขอไม่ยกตัวอย่างดราม่าแล้วกัน แต่ว่าระหว่างที่ผมปั่นสไลด์อยู่เนี่ย ผมก็ทดลองดู พบว่ามีแค่ Perplexity ตัวเดียวเท่านั้น ที่สามารถตอบได้ว่าหมูเด้งเป็นฮิปโปนะครับ

แล้วถ้ามันเด้งเป็นหมูแดงด้วย ตัวอื่นจะไม่รู้ว่าหมูเด้งเนี่ย มันคิดว่าเราสะกดคำว่าหมูแดงผิด

โอเค ก็จะเห็นว่าโมเดลพวกนี้ มีการพัฒนาปรับปรุงอยู่เรื่อยๆ นะครับ ฉะนั้นก็อยากจะให้ช่วยกันทดลอง แล้วก็เปรียบเทียบกันเยอะๆ นะครับ แล้วก็มาแชร์ use case กัน อาจจะไม่ต้องทำเป็นงานวิจัยจริงจังก็ได้เนาะ อย่างก่อนหน้านี้ผมไปกินไหตี่เหลากับเพื่อนๆ แล้วจู่ๆ ก็สงสัยกันว่า AI โมเดลเนี่ย มันตัวไหนเนี่ย ปรุงน้ำจิ้มได้อร่อยสุด

ผมก็ถามแต่ละตัวเลย ขอ 1 สูตร แต่ GPT-4o มันให้มา 2 ก็เลยทำ 2 โอเค ก็ลองทำแล้วก็ลองชิมแล้วก็รีวิวกันดู พอชิมเสร็จเพื่อนผมกลับไปบ้านเค้าไปกดซื้อ Claude โปร 20 เหรียญ

ครับ ฉะนั้นเนี่ย แค่นี้ก็เป็น research ได้แล้วเนาะ เราลองได้หลายอย่างมากเลยเนาะ

การทดสอบ Speech-to-Text หลายเจ้าและ Whisper ของ OpenAI27:40

โอเคครับ กลับมาที่โปรเจค subtitle แบบอัตโนมัติดีกว่า คือมันก็จะมีบริษัท AI หลายๆ เจ้าใช่มั้ย ที่มีบริการ speech-to-text ให้ใช้นะครับ และแต่ละเจ้าเนี่ย ก็ต่างพูดเหมือนกันว่าของเราดีที่สุด ทำไงดี? ใช่ครับ test research นะครับ ผมใช้ 3 นาทีแรกของคลิปวิดีโอนี้นะครับ เป็นชุดข้อมูลทดสอบนะครับ เสร็จแล้วผมก็โยนไปให้โมเดลแต่ละตัวนะครับ โยนไปประมาณ 20 กว่า model เนี่ย แล้วก็จดคำตอบที่ได้มานะครับ แล้วก็ส่วน ground truth เนี่ย คือเราก็แกะคำพูดเอานะครับ ฉะนั้นเนี่ย เราเริ่มจากเครื่องมือทั่วๆ ไปก่อนนะ เดี๋ยวเนี่ยเวลาเราไลฟ์ขึ้น Facebook นะ Facebook มันทำ subtitle ภาษาไทยให้ด้วยใช่มั้ย แต่สิ่งหนึ่งที่ผมสังเกตคือ เวลาโมเดล speech-to-text เนี่ย มันสามารถฟังคำภาษาไทยได้ มันจะเสียความสามารถในการสะกดคำภาษาต่างประเทศนะครับ สะกดคำภาษาอื่นๆ ไม่ค่อยได้เลย เช่น metrics เนี่ย มันก็สะกดเป็น matrix หรือ LCP เนี่ย ก็สะกดเป็นคำอ่านแบบเนี่ย หรือคำว่า largest contentful paint เนี่ย มันก็ข้ามไปเลย ไม่เขียนอะไรให้เลยนะครับ ฉะนั้นก็ยังใช้ไม่ได้นะครับ YouTube เนี่ย เมื่อก่อนมันไม่มี auto caption ภาษาไทย ตอนนี้มันมีแล้ว แต่ว่าอาการหนักพอๆ กันนะครับ โอเคนอกจากนี้นะครับ cloud ยักษ์ใหญ่ 3 เจ้าเนาะ Azure, AWS, Google Cloud เนี่ย ต่างมี speech-to-text ของตัวเองกันหมดนะครับ แต่ก็ไม่มีโมเดลตัวไหนที่สามารถสะกดคำว่า largest contentful paint ได้ถูกต้องเลยสักตัวเดียวนะครับ ก็พอเข้าใจได้เพราะว่ามันเป็นศัพท์เทคนิค ที่เฉพาะทางมากๆ นะครับ ส่วนตัวเลขด้านขวานะครับ เรียกว่าเป็น word error rate นะครับ ก็คือมีคำผิดอยู่กี่เปอร์เซ็นต์นะครับ ซึ่งยิ่งน้อยยิ่งดี อย่าง 20% เนี่ย แปลว่าทุกๆ 5 คำเนี่ย ก็จะมีคำผิด 1 คำนะครับ ซึ่งถ้าผิดเยอะขนาดเนี่ย ก็ยังเอาไปใช้งานจริงไม่ค่อยได้เท่าไหร่นะครับ ในปี 2022 เนี่ย OpenAI เนี่ย

ปล่อย model ตัวนึงชื่อว่า Whisper นะครับ คือก่อนหน้านี้ พวก model speech-to-text เจ้าต่างๆ เนี่ย

เหมือนแต่ละภาษามันก็จะ train แยกกัน แต่ Whisper เนี่ย ต่างจากเจ้าอื่นคือ เค้า train ทุกๆ ภาษาพร้อมๆ กัน แล้วได้มาเป็นไฟล์ model ไฟล์เดียว แถมเป็น open source ด้วย คือเราโหลดมารันเองในเครื่องเราได้เลยไม่ต้องจ่ายตังค์นะครับ ซึ่งพอทดลองนะครับ ก็พบว่าดีขึ้นมาก สะกด largest contentful paint เนี่ย เกือบถูก word error rate เนี่ย เหลือ 7% ซึ่งเป็นตัวแรกที่น้อยกว่า 10% เท่าที่ผมทดลองมานะ

ผมก็เลยลองเอามาทำคลิปดูนะครับ ก็พบว่าคลิป 1 ชม. เนี่ย จะใช้เวลาประมาณ 4-6 ชม. นะครับ

เพราะว่า word error rate 7% เนี่ย มันก็จะยังมีคำผิดแทบทุกบรรทัดเลย แปลว่าเวลาผมรีวิวอ่ะ ผมก็ต้อง pause แทบทุกบรรทัดเพื่อแก้ สุดท้ายมันก็เลยไม่ได้ประหยัดเวลาขนาดนั้นนะครับ ต่อมาผมก็มาเจอ docs ของ OpenAI ครับ ที่บอกว่า ถ้าอยากให้คุณภาพดีขึ้นเนี่ย ก็ลองเอา output ของ speech-to-text เอามา post-process ด้วย large language model ดูสิ ผมเลยลองดูครับ อันนี้เป็นอีก talk นึงนะครับ อันนี้ผมทำ subtitle ให้ เพื่อที่จะลองทดสอบ approach นี้ดู

ปัญหาตัวนึงของ Whisper เนี่ย คือมันไม่ค่อย consistent นะ บางทีมันก็สะกดคำฝรั่งได้ แต่จู่ๆ บางทีมันก็สะกดไม่ได้ซะงั้น อย่างอันนี้ มันสะกดทุกคำเป็นภาษาไทย จนอ่านไม่รู้เรื่องเลย ระหว่างที่อ่านนะครับ ให้ลองจินตนาการดูนะว่ามันคือคำว่าอะไรนะครับ

แล้วเดี๋ยวจะเห็นเฉลย โอเค ผมก็ลองเอามาใส่ LLM นะ ผมก็ต้องใส่ prompt เข้าไปว่าช่วยแก้คำผิดต่างๆ ให้หน่อยนะ แต่จะเห็นว่า prompt ผมเนี่ย มันยังไม่ค่อยเจาะจง ฉะนั้นมันเลยแก้อะไรให้ผมไม่ได้ ผมก็ต้องใส่ prompt ใส่ตัวอย่าง ใส่ข้อกำหนดอะไรต่างๆ เพิ่มจนมันเริ่มจับทางได้ ซึ่งจริงๆ prompt เนี่ย ยาวกว่านี้อีกประมาณ 2-3 เท่านะครับ แต่พอมันจับทางได้เนี่ย ผลลัพธ์มันก็จะดีขึ้นเองครับ อย่างเช่น ตัวอย่างนี้ครับ ผมส่งไปให้ Claude นะ แล้วพอผมใช้ Claude มันแก้ให้เกือบหมดเลย มันช่วยแก้ได้เยอะมากๆ นะครับ แต่ก็ยังมีบางคำที่มันแก้ไม่ได้นะครับ ซึ่งตรงนี้ ผมก็ต้อง manual เอาเนาะ แต่ก็จะเห็นว่าจากเดิมที่ผมต้องแก้ 7 จุด มันเหลือ 2 จุด

แปลว่าก็น่าจะช่วยลดงานได้ค่อนข้างเยอะนะครับ โอเค ผมก็ลองทำ subtitle ด้วยวิธีนี้นะครับ ก็พบว่าคลิป 1 ชม. เนี่ย จะเหลือใช้เวลาประมาณ 3-4 ชม. ละ ก็แปลว่าเราประหยัดเวลาไปได้ประมาณครึ่งนึงละ แต่ในขณะเดียวกัน เราจะเริ่มมีค่าใช้จ่ายด้านการรัน model นะครับ ตอนนั้นเนี่ย ผมก็แบบ เออ เราเจอเทคนิคแล้วแหละ ผมก็เตรียมเขียนบทความแชร์เทคนิค

Multimodal AI Model: Gemini 1.5 Pro32:21

แต่ผมดันมาเจอสิ่งที่เรียกว่า multimodal AI model ซะก่อน มันคืออะไรครับ มันคือ model ที่สามารถ process ได้มากกว่า 1 ช่องทาง ก็คือสามารถ process ข้อความและเสียงพร้อมๆ กันได้นะครับ ก่อนหน้านี้ ผมรู้ว่า Gemini เนี่ย รับไฟล์ภาพได้ แต่ไม่เคยรู้เลยว่ามันรับไฟล์เสียงได้ด้วย จนกระทั่งผมไปอ่าน docs มัน มันบอกว่าเราส่งไฟล์เสียงไปให้ได้เลยนะ ผมก็ โอ้ ก็ดีนะ ลองดูดีกว่า

ผมก็เลยลองดูครับ แล้วผมก็ตะลึงมากว่า Gemini 1.5 Pro เนี่ย มันสามารถสะกดคำต่างๆ ได้อย่างถูกต้องเกือบหมดเลย และเป็นตัวแรกที่สะกดคำว่า largest contentful paint ได้ถูกต้องโดยที่ไม่ต้องให้ context อะไรมันเพิ่มเติมด้วยนะครับ Word error rate เนี่ยลดลงเหลือ 2.5% ก็คือลดไป 3 เท่า แล้วพอผมลองอีกเนี่ยผมก็พบว่า เฮ้ย ไม่ใช่แค่ไฟล์เสียงนี่ ไฟล์วิดีโอก็ทำได้ด้วย แล้วพอเราส่งไฟล์วิดีโอเข้าไปเนี่ย มันอ่าน text บนสไลด์เพื่อทำให้สามารถถอดความได้แม่นยำ มากขึ้นอีกด้วยนะครับ ฉะนั้นเนี่ย เทคนิคที่ผม research มาก่อนหน้านี้ ก็คือแทบจะล้มกระดานทิ้งครับ ต้องรื้อใหม่หมดเลยนะครับ ฉะนั้นเนี่ย takeaway ก็คือช่วงเนี้ย เทคโนโลยี AI เนี่ยมันเปลี่ยนไปเร็วมากๆ มีอะไรใหม่ๆ มาเรื่อยๆ เลย ฉะนั้นผลลัพธ์ในสไลด์เนี้ยผมก็ไม่รู้ว่า มันจะอยู่ไปได้อีกนานเท่าไหร่เนาะ

ปัญหาและวิธีแก้ไขการทำ Subtitle อัตโนมัติด้วย Gemini Pro33:38

โอเค ทีเนี้ยผมก็คิดว่า เออ หวานหมูแล้ว

เราอัปโหลดไฟล์วิดีโอไปให้ Gemini Pro บอกว่าช่วยสร้างไฟล์ subtitle มาให้หน่อย แค่นี้ก็จบใช่มั้ย แต่พอลองดูจริงๆ ครับ ไม่จบครับ ปัญหาเต็มเลย หนึ่งก็คือ เราไม่มีข้อมูลเกี่ยวกับ timing information นะครับ

คือ Gemini เนี่ยจะไม่บอกว่าคำไหนพูดในวินาทีไหนนะครับ คือผลลัพธ์มันแม่นยำมากก็จริง แต่พอมันไม่มี timing เราก็เอามาสร้าง subtitle ไม่ได้ถูกมั้ย เทียบกับพวก speech recognition ธรรมดาเนี่ย อย่างอันเนี้ยผมใช้ Speechmatics นะ ที่จะเห็นว่าถึง word error rate เนี่ยมันเยอะกว่า 10 เท่า แต่มันบอกเวลาเป็นรายคำได้เลย ถ้า Gemini เนี่ยเราขอให้มันช่วยใส่ timestamp ให้ มันก็ทำให้ได้นะ แต่มันมั่วหมดเลย อย่างที่ 2 ครับ คือ Gemini API เนี่ยมันมี limit ของมันอยู่ คือถ้าเราส่งไฟล์วิดีโอที่มันยาวมากๆ เนี่ย สักพักมันจะ time out แล้วตอบเป็น internal error กลับมา แถม output เนี่ยมัน output ได้แค่ทีละ 8,000 token แปลว่าเราให้มันฟังคลิปยาวๆ แล้วสรุปสั้นๆ อะ แบบเนี้ยทำได้ แต่ถ้าเราบอกให้มันถอดคำพูด ให้มันถอดคำพูดทั้งหมดเนี่ย มันก็ทำได้เหมือนกัน แต่มันถอดไปสักพักนึงมันจะตัดจบนะครับ แล้วก็อีกปัญหานึงที่เจอก็คือ บางทีมันก็ตัดบรรทัดแปลกๆ อะ บางทีมันก็ไปตัดบรรทัดกลางประโยค หรือบางทีมันก็ไม่ตัดบรรทัดให้เลย แบบ talk 30 นาทีมันเขียนเป็น paragraph เดียวให้เลย

ซึ่งเราก็ต้องมาออกแบบวิธีครับ ว่าทำยังไงถึงจะแก้ 3 ปัญหานี้ได้เนาะ เรื่องแรกเนี่ย วิดีโอยาวเกิน limit ก็อาจจะไม่ยาก ก็คือเราก็แบ่งเป็นส่วนย่อยๆ แล้วก็ค่อยๆ ทำแยกกันใช่มั้ย แต่ว่าจะแบ่งยังไง ถ้าเราแบ่งแบบไม่ได้แบ่งแบบดีๆ อะ บางทีมันตัดวิดีโอกลางประโยค result ที่ได้มันก็ไม่ดีใช่มั้ย จากที่ผมศึกษามาเนี่ย ทำได้ 2 วิธีหลักๆ ก็คือวิเคราะห์คลื่นเสียงว่าตรงไหนที่หยุดพูด กับอีกวิธีนึงก็คือ ใช้ text-to-speech ตัวที่ไม่แม่นยำ แต่ว่าให้ข้อมูล timing เรามาได้ครับ

ซึ่งผมคิดว่าไอ้ข้อมูล timing เนี่ย เดี๋ยวมันจะมีประโยชน์ ผมเลยเลือกใช้ออปชันนี้ก่อนนะครับ ผมก็เริ่มจากแปลงไฟล์วิดีโอนะครับ แปลงเป็นไฟล์เสียงเนาะ เสร็จแล้วก็โยนไปให้ Speechmatics นะครับ พอโยนเสร็จเนี่ย Speechmatics เนี่ยมัน ถึงคำฝรั่งมันจะสะกดไม่ค่อยได้นะ แต่ทุกๆ คำเนี่ยมันจะพยายามสะกดเป็นภาษาไทย เทียบกับหลายๆ model ที่พอเจอคำฝรั่งปุ๊บมันข้ามไปเลย เรื่อง timing อะ ผมให้ Speechmatics เป็นอันดับต้นๆ ครับ

ผลลัพธ์ที่ได้ก็จะเป็นหน้าตาแบบเนี้ยครับ ก็คือเราจะมี start time end time แล้วก็มีข้อความเนาะ ซึ่งเราสามารถเอามา analysis ได้ว่า มีตรงไหนที่หยุดพูดนะครับ อันนี้ผมเอาข้อมูลมา visualize นะครับ ก็คือ talk ประมาณ 30 นาทีอะ ผมดูว่ามีตรงไหนบ้างที่หยุดพูดมากกว่า 1 วินาทีนะครับ เสร็จแล้วผมก็หาจุดที่เราจะตัดนะครับ ก็คือแบ่งครึ่งตรงกลาง เสร็จแล้วเราก็ตัดโชะ แล้วก็ตัดไปเรื่อยๆ จนแต่ละคลิปเนี่ยสั้นกว่า 3 นาทีนะครับ เสร็จแล้วแต่ละคลิปเนี่ยเราจะสามารถเอาไป process ได้ แล้วทำแบบ parallel ได้ด้วย เพราะว่าตอนเนี้ยแต่ละส่วนมันแยกกันหมดแล้วใช่มั้ยฮะ โดยแต่ละส่วนเนี่ย ผมก็โยนให้ Gemini ใช่มั้ย เราก็จะได้บทถอดคำพูดที่ค่อนข้างแม่น

แต่ไม่มี timestamp แถมสไตล์ก็อาจจะตัดบรรทัดแปลกๆ ซึ่งอันเนี้ยแก้ไม่ยากครับ ก็คือส่งอันเนี้ยไปให้ Claude บอกว่าให้ช่วยแก้ให้หน่อย แล้วช่วยจัดรูปแบบข้อความอีกที ฉะนั้นเนี่ย จริงๆ เนี่ยผมให้มันช่วยแก้คำผิดบางส่วนด้วย

ฉะนั้นเนี่ยก็จะได้บทถอดคำพูดที่ดีขึ้น จะเห็นว่าจาก 2.5% เนี่ย ตอนนี้ลดเหลือ 0.6% นะครับ แล้วผมก็เอา result จาก Speechmatics เนี่ย ที่มีข้อมูล timing เนี่ยมาส่งไปให้ GPT-4o บอกว่าช่วยเอาบทถอดคำพูดจากด้านซ้าย กับเวลาจากด้านขวามารวมกันหน่อย สุดท้ายเราก็จะได้เป็นคล้ายๆ ไฟล์ subtitle นะครับ ก็คือเรียบร้อยแล้ว 1 ส่วน เราก็ทำอีก 11 ส่วนที่เหลือนะครับ เราก็จะรวมกันได้เป็นไฟล์ subtitle เรียบร้อยพร้อมรีวิวนะครับ ฉะนั้นเนี่ยพอผมใช้วิธีเนี้ย ก็พบว่ามันเหลือคำผิดน้อยมากๆ จาก 7% เนี่ยตอนนี้ลดเหลือไม่ถึง 1% ทำให้มันประหยัดเวลาไปได้อีกครึ่งนึงนะครับ แปลว่าอะไร แปลว่าตอนนี้พอผมรีวิวเนี่ย ผมสามารถดูคลิปด้วย speed 2x เลย แล้วพอจุดไหนที่ผมเห็นว่า เฮ้ย you สะกดผิดนี่นา ก็ค่อย pause แล้วแก้ครับ ฉะนั้นจากเดิมที่ใช้ 6-8 ชั่วโมงเนี่ย ลดเวลาไปได้เกือบ 4 เท่าแล้วนะ

แต่ก็จะมีค่าใช้จ่ายที่เพิ่มขึ้นอีกครับ แต่ก็ถือว่ายังถูกเมื่อเทียบกับ option อื่นเนาะ

ก็จะมีค่าใช้จ่ายเพิ่มขึ้นในการ run model นะครับ ซึ่ง code ทั้งหมดเนี่ย ก็ผมลองมาหลายแบบมากแล้ว code ทั้งหมดเนี่ยก็จะอยู่บน GitHub นะครับ ก็เขียนด้วย Node.js TypeScript แล้วในนี้ก็จะมีตัวอย่างพร้อมของแต่ละ step ด้วยนะครับ ก็ไปดูกันได้นะครับ ทีนี้ก็จะเห็นว่าพอเราใช้ AI model พอถึงจุดนึงเนี่ย ก็ก่อนหน้านี้เราใช้ console ใช่มั้ย พอถึงจุดนึงเราจะต้องเริ่มเขียน script ละ ซึ่งเอาจริงๆ เราก็ใช้ Claude เขียน script ให้ก็ทำได้ใช่มั้ย เพราะว่าเราดูแค่ word error rate มันไม่พอ แต่ละ service เนี่ยมันมีจุดดีจุดเด่นต่างกัน

ซึ่งเค้าไม่ได้เขียนใน doc หรอก เราต้องไปลองเองเราถึงจะเจอใช่มั้ย

TypeScript และเครื่องมือที่ช่วยลดความยุ่งยากในการพัฒนา38:49

พูดถึง TypeScript ครับ ก็สมัยก่อนเวลาผมทำ project ที่ใช้ภาษา TypeScript เนาะ package.json ผมจะเต็มไปด้วย dependency ต่างๆ ที่ช่วยทำให้เครื่องมือต่างๆ มัน support TypeScript ใช่มั้ย แต่เดี๋ยวนี้หลายๆ เครื่องมือเริ่ม support TypeScript แบบ built-in แล้วนะครับ ทำให้เดี๋ยวนี้ package.json ผมสั้นลงเนาะ แล้วเมื่อก่อนเนี่ยผมจะต้องปวดหัวกับการแก้ไฟล์ tsconfig.json มากๆ

แต่เดี๋ยวนี้มันมี package ที่เป็น preset ตั้งต้น ให้เราสามารถดึงมาใช้ได้แล้วนะครับ ก็ทำให้ไฟล์ tsconfig ผมอะเหลือ 3 บรรทัด หรือบางทีผมก็ตบเหลือบรรทัดเดียวนะครับ

การแชร์เทคนิคและการเรียนรู้จาก Community39:24

โอเค มาถึงจุดนี้นะครับ ผมก็ตื่นเต้นมากๆ เลย เพราะว่ากว่าจะเอาทุกอย่างมาประกอบเข้าด้วยกันเนี่ย คือลองผิดลองถูกมาเยอะมาก แล้วก็รื้อทิ้งเยอะมากด้วย แต่สุดท้ายผมก็ได้แชร์โพสต์บน Facebook ครับ เผื่อว่าแบบใครที่เจอปัญหาเดียวกัน จะได้ลองเอาเทคนิคอันนี้ไปลองใช้ดู ปรากฏว่ามีคนมา comment เยอะเลยว่า เฮ้ย เคยลองใช้ตัวนู้นตัวนี้หรือยัง อันนี้แม่นมากเลยนะ แม่นจนน่าแปลกใจเลยลองเอาไปเทียบดูได้ ซึ่งผมก็พบว่าแบบ เออ พอเราแชร์แล้วเนี่ย

เราพบว่าเราได้พบกับคนที่เจอปัญหาเดียวกัน แล้วก็แก้วิธีอื่นๆ แล้วบางทีก็เป็นวิธีที่เราคาดไม่ถึงเนาะ หรือบางตัวเราไม่รู้จักด้วยซ้ำนะครับ หรืออย่างเพจ Mikelopster เนี่ย ก็โพสต์ content แชร์วิธีที่ช่อง Mikelopster เนี่ย ใช้กับ channel YouTube ของตัวเอง ก็พอเราแชร์แล้วเค้าก็แชร์ต่อ แล้วก็แชร์ความรู้ของตัวเองครับ มันก็เลยเหมือนเรากลายเป็นว่าเราอะ เป็นฝ่ายที่ได้เรียนรู้จากการแชร์นะครับ ฉะนั้นเนี่ยถ้าผมไม่ได้แชร์เรื่องนี้บน Facebook ผมก็คงไม่ได้รู้วิธีการแก้ไขปัญหาของคนอื่นๆ

แถมได้รู้จักคนใหม่ๆ ที่ชอบลองใช้พวก AI แล้วเราก็แชร์ความรู้ต่างๆ นะครับ โอเค ฉะนั้นพอผมถูกป้ายยามาก็ต้องลองใช่มั้ย

การทดสอบ CapCut และ iApp ASR Pro40:39

ก็ research ต่อนะครับ ตัวนึงที่มีคนแนะนำมากๆ เนี่ย อย่างน้อยมีแนะนำมาอย่างน้อย 3 คนนะ ก็คือ CapCut นะครับ ก็ของ Bytedance นะ เจ้าของ TikTok ใช่มั้ย หลายคนบอกว่าถอดคำพูดได้ดีมาก อันนี้เท่าที่ผมลองดูนะ คือเหมือนมันไม่มี API ให้ใช้ เราก็ต้องโหลดแอป desktop มาเนาะ ซึ่งถือว่าดีครับ ดีกว่า Facebook ของและก็ YouTube

แล้วก็อีกตัวนึงครับ เป็น model ของ iApp นะครับ เป็น model สัญชาติไทย แล้วก็มีเว็บให้ใช้ฟรีด้วย แล้วแบบใช้สะดวกมากเลย คือเราอัปโหลดไฟล์วิดีโอไปเนี่ย แล้วเดี๋ยวมันส่งไฟล์ srt กลับมาให้เลย คือแบบ automatic มากๆ

ตอนที่ผมทดสอบเนี่ย word error rate จะอยู่ที่ประมาณ 18% แต่เดือนที่แล้วครับ เดือนกันยา เค้าบอกว่าเค้าเพิ่งปล่อยตัว model pro ออกมานะครับ โอเค ผมก็ลองดูเหลือ 3.5% ครับ

ซึ่งน้อยมาก แถมเป็น model ภาษาไทยด้วย แถมให้ข้อมูล timestamp ได้ด้วย แปลว่าไอ้ที่ผมลองมาก่อนหน้านี้ก็ใช่มั้ย

เออ ก็เตรียมรื้อนะครับ

บทเรียนและประสบการณ์จากการลองผิดลองถูก41:50

ก็จะเห็นว่าวงการเนี่ยอะไรต่างๆ มันไปเร็วมากๆ นะครับ เทคนิคต่างๆ เนี่ย outdated เร็วมากนะ แต่บทเรียนและประสบการณ์เนี่ยแหละผมคิดว่ามันติดตัวเราไปนะครับ เราจะเวลาคนถามเราจะได้บอกได้ว่าตัวเนี้ยมีข้อดีข้อเสียยังไง ซึ่งมันยากมากที่เราจะ list ออกมาให้หมด

ประมาณนั้นแหละครับ ผมก็เอาลองเอาตัว iApp ASR Pro มาใช้ดูนะครับ ก็ใช้เวลาประมาณ 1-3 ชม. ใช้เวลา review เยอะขึ้นนิดหน่อยเพราะว่า word error rate มันก็ยังสูงกว่า Gemini แต่มันสะดวกขึ้นเยอะเพราะว่าระบบต่างๆ มัน automatic พอสมควร คือมี timestamp มีอะไรพวกเนี้ย ผมไม่ต้องเอาไปโยนเข้า model นึงแล้วก็เอามารวมกัน

ฉะนั้นเนี่ยท่ามันง่ายขึ้นมากเลย แถมราคาก็ค่อนข้างโอเคมากๆ ด้วยนะครับ ซึ่งถ้าผมเอามาผ่าน large language model อีกรอบเนี่ย มันก็จะยิ่งลด word error rate ไปได้อีกนะครับ แต่ขั้นตอนกับราคามันก็อาจจะเยอะขึ้นหน่อย ฉะนั้นทุกอย่างมันไปเร็วมาก แล้วก็เดี๋ยวก็คงจะมี attempt 5 attempt 6 ต่อไปในอนาคตนะครับ

การสร้างเครื่องมือแก้ไข Subtitle ด้วย Google Apps Script42:54

โอเค ทีนี้พอเรารู้แล้วว่าเรามีหนทางที่จะสามารถทำ subtitle ให้กับทุกวิดีโอในอนาคตเนี่ย ก็โอเคเราลองทำหน้าเว็บดูบ้าง ซึ่งส่วนตัวเนี่ยผมห่วยมากเวลาออกแบบ UI/UX

เข้าขั้นห่วยเลย เวลาผมต้องทำ UI เนี่ยผมมักจะใช้ของสำเร็จรูป เช่น ใช้ Bootstrap นะ แต่เดี๋ยวนี้มันจะมีเครื่องมือ AI เช่น v0.dev ผมว่าหลายๆ คนน่าจะเคยได้ยินแล้วล่ะ ก็อันนี้ก็คือ prompt ที่ผมเขียนไปเนาะ แล้วก็จะได้หน้าวิดีโอแบบนี้มา ผมก็ใช้เป็นต้นแบบในการ implement นะครับ แต่บางทีเนี่ยเราต้อง brief มันละเอียดนิดนึง ถึงจะได้ผลลัพธ์ที่น่าพอใจนะครับ อันนี้ก็คือ prompt ที่ผมใช้เนาะ

โอเค พอผมทำซับมาเรื่อยๆ มีหน้าเว็บวิดีโอเรียบร้อยแล้ว ตอนนี้กลายเป็นว่าจุดที่กินเวลาผมมากที่สุดคือการ review แต่ละวิดีโอแล้วก็การแก้ไข subtitle เนาะ เพราะมันยังเป็น process ที่มันต้อง manual อยู่

ผมเลยตัดสินใจว่าโอเคผมต้องสร้างโปรแกรมแก้ subtitle ของตัวเองแล้วแหละ แต่ผมไม่อยากเสียเวลามาใช้ทำ backend มากนัก อยากจะโฟกัสกับการทำเครื่องมือให้มันใช้สะดวกขึ้นนะครับ ผมก็ไปพบว่ามันมีสิ่งนึงที่เรียกว่า Google Apps Script อยู่ แล้วเวลาเปิด Google Sheet เนี่ยมันจะมี extension แล้วมีเมนู Apps Script ทำให้เราสามารถเขียน JavaScript เพื่อต่อเติมตัว แอป Google Sheet ได้นะครับ อันนี้ผมก็เพิ่มเมนูใหม่เข้าไปใน Google Sheet แล้วก็อันนี้ก็คือผมก็สามารถทำ subtitle ใน Google Sheet ได้ครับ

อันนี้คือตัวอย่างที่ผมแก้ subtitle นะครับ อันนี้ผม speed up ให้ดูแต่ก็จะเห็นว่าพอผมแก้ในด้านขวาเนี่ย มันก็จะไปอัปเดตข้อมูลในด้านซ้ายนะครับ แปลว่าเราไม่ต้องเขียน backend เองเลย แค่ให้มันคุยกับ Google Sheet ให้รู้เรื่องนะครับ ก็ไม่ต้องห่วงเรื่อง import export อะไรแบบเนี้ย

อีกอย่างนึงที่ชอบมากๆ คือพวกโปรแกรม Google Sheet และ Excel เนี่ย มันทำงานกับข้อมูลรูปแบบเป็น TSV คือถ้าผม copy ตารางออกมาเนี่ยแล้วเอามาแปะเป็นข้อความ เราจะพบว่า format มันเป็น format TSV นะครับ ก็คือแต่ละบรรทัดเนี่ยก็คือ 1 row แล้วก็แต่ละ column เนี่ยก็จะถูกแบ่งด้วยเครื่องหมาย tab \t อะเนาะ ผมสามารถเขียนโปรแกรมแบบง่ายๆ ให้ process ข้อมูลที่มีลักษณะเนี้ย แล้วผมก็ copy กลับมา paste ได้เลย ฉะนั้นเวลาเรา import export ข้อมูลอะ ผมก็จะชอบใช้ TSV เป็น format กลางในการแก้ไขข้อมูลเนาะ ฉะนั้นเนี่ยพอผมทำเครื่องมือใช้เองเนี่ยผมก็โอเค ผมสามารถต่อเติมให้มันใช้งานได้สะดวกขึ้นเรื่อยๆ ผมก็ใช้ตัวแก้ไข subtitle ตัวเองเนี่ย

ใช้ไปประมาณ 20 วิดีโอได้ละ แล้วแต่ละครั้งเนี่ย ผมก็จะเจอจุดเล็กๆ ที่เราสามารถทำให้เครื่องมือมันใช้สะดวกมากขึ้นได้นะครับ แล้วก็เวลาเราทำเครื่องมือใช้เองเนี่ย บางทีมันก็ overkill นะที่เราจะทำเริ่มใหม่ตั้งแต่ศูนย์ ฉะนั้นบางทีเนี่ย เราเขียนโค้ดเราให้ไปเกาะกับโปรแกรมอื่น บางทีมันก็จะประหยัดเวลากว่านะครับ

การสร้างและเผยแพร่ TypeScript Library ด้วย JSR45:46

เรื่องสุดท้ายที่อยากจะมาแชร์นะ ก็คือบางทีเนี่ย ผมอยากทำโปรเจค

ทำ library TypeScript ไว้เพื่อ reuse กับโปรเจคต่างๆ

โดยใช้ภาษา TypeScript เนาะ ซึ่งถ้าใครเคยทำ library ด้วย TypeScript ก็จะรู้ว่ามันต้องใช้เครื่องมือหลากหลายมาก ในการกว่าจะ publish library ตัวนึงได้

ไหนจะเครื่องมือ test เครื่องมือ format โค้ด เครื่องมือ check โค้ด หรือทำ documentation เนี่ย โอ้ เครื่องมือเต็มไปหมดเลย ก็เลยจะมาแนะนำให้รู้จักกับ JSR นะครับ พอใช้ JSR เนี่ย ผมแทบไม่ต้องติดตั้ง build tool อะไรเพิ่มเลย คือเวลา publish package เนี่ย ผมก็ publish file .ts ไปที่ service ของ JSR เลย แล้ว JSR มันทำอะไรนะครับ มันจะสร้างหน้าเว็บให้ scope ของเรานะครับ แล้วแต่ละ package เนี่ย ก็สามารถ install ด้วย npm ได้ ก็คือ service ของ JSR มันจะแปลงโค้ด TypeScript ที่เรา publish ขึ้นไปให้กลายเป็น JavaScript ให้เองเลย

แถมมีขั้นตอนการติดตั้งเนี่ย อยู่ด้านขวาเลย ก็คือไม่ต้องมาเขียนใน readme เอง แถมพวกของต่างๆ ที่เรา export มาเนี่ย ก็จะมี documentation ให้อ่านนะครับ ก็คือทำไว้ได้ดีมาก ก็คือเป็นเครื่องมือที่ครบเครื่องเลย

publish file .ts ไปก็จบเลยนะครับ

สรุป และการสร้าง Description และ Chapters ด้วย Gemini47:04

โอเค ก็ทั้งหมดเนี่ยก็คือเรื่องที่ผมอยากจะแชร์ในปีนี้ครับ ก็หวังว่าจะเป็นประโยชน์ครับ แต่ก็ไม่รู้จะสรุป session นี้ยังไงเหมือนกันเนาะ แต่เอาเป็นว่าตอนนี้เรามีวิดีโอ เรามีวิธีสร้าง subtitle แล้ว ก่อนที่เราจะอัพขึ้น YouTube เราต้องทำอะไรเนาะ เราต้องเขียน description แล้วก็ทำ chapter ใช่มั้ย

มาถึงจุดนี้ ผมเชื่อว่าทุกๆ คนน่าจะเดาออกว่า ผมจะทำยังไงต่อนะครับ ก็ใน wiki ของ Creatorsgarten เนี่ย มันจะมีข้อมูล มีรายละเอียดเกี่ยวกับขั้นตอนต่างๆ นี้นะครับ ไปดูได้ รวมถึงมี prompt และโค้ดทั้งหมด ที่เราใช้ด้วยในการ generate นะครับ จะเห็นว่า prompt ต่างๆ เนี่ย มันยาวมาก เพราะว่าคือแบบนี้ครับ คือผมเห็นว่าบางคนเนี่ย เวลาคุยกับ AI เนี่ย เค้าจะชอบคุยแบบนี้ก็คือ ขอให้มันสร้างอะไรสักอย่างให้ แต่พอผลลัพธ์ไม่เป็นที่น่าพอใจ ก็คุยกับมันต่อ ช่วยแก้นี้หน่อยนะ ผลลัพธ์ก็ดีขึ้น แล้วก็ยังไม่ดี เราก็คุยต่อ จนมันดีใช่มั้ย

ซึ่งผมว่ามันก็โอเคครับ เรียกว่าเป็นการคุยแบบ multi-turn ข้อดีคือมันง่ายแล้วมันเป็นธรรมชาติใช่มั้ย แต่ข้อเสียคือ ถ้าเราต้องการจะทำแบบเดิมกับเนื้อหาอื่นเนี่ย เรามี 2 ทางเลือก คือถ้าเราเริ่มใหม่ เราก็ต้องเริ่มจากศูนย์ แล้วก็ค่อยๆ สอนมันใหม่ใช่มั้ย หรือไม่เราก็ต้องต่อบทสนทนานี้ ก็คือเอาที่คุยกันเนี่ย แล้วก็เอา content ใหม่โปะเข้าไป กลายเป็นว่าบทสนทนาเราก็จะยาวขึ้น แล้วพอบทสนทนายาวขึ้น token มันก็จะเยอะขึ้น แล้วมันก็จะแพงขึ้นเรื่อยๆ ผมเลยแนะนำว่า ถ้าเป็น task ไหนที่เราต้องใช้กับ content หลายๆ ชิ้น ผมจะแนะนำให้ทำแบบ single-turn มากกว่า คือถ้า AI เนี่ย มันไม่ให้ผลลัพธ์ที่เราต้องการ เรากลับไปแก้ prompt ให้มันยาวขึ้น เพิ่มข้อกำหนด เพิ่มตัวอย่าง ลอง run ใหม่ ก็คือแก้ brief อะ จนกระทั่งเราได้ผลลัพธ์ที่น่าพึงพอใจนะครับ ซึ่ง prompt ตัวนี้ เรา reuse ได้กับ content อื่นได้นะครับ ก็เลยเป็นเหตุผลที่ prompt มันยาว ผมก็เลยลองเอาสคริปต์ของหัวข้อวันนี้ ส่งให้ Gemini ให้มันช่วยแบ่งตอน แล้วก็เขียน description ให้นะครับ แล้วผลลัพธ์ที่ได้ก็ออกมาก็ตามนี้นะครับ

มันจะมีจุดผิดพลาดอยู่ประมาณ 2 จุด ซึ่งผมแก้ไปแล้วเนาะ ก็นั่นแหละเวลาใช้ AI ต้องตรวจทานผลลัพธ์มันด้วยนะครับ

ส่วนลิงก์และแหล่งอ้างอิงต่างๆ นะครับ ผมจะใส่ไว้ที่ลิงก์นี้นะครับ อืม ครับผม แล้วก็ channel Creatorsgarten บน YouTube นะครับ นอกจากทั้งหมดที่เราเล่ามาเนี่ย เรายังมีการเซ็ตระบบเพื่อให้ทีมงานเราเนี่ย สามารถดูแล channel YouTube กันบน GitHub ได้ด้วยนะครับ ก็คือถ้าใครอยากจะเปลี่ยนรูป เปลี่ยน thumbnail เปลี่ยน description แก้ไขข้อมูล metadata อะไรต่างๆ เนี่ย คือ submit PR มาได้เลย แล้วพอ merge เนี่ย มันก็จะมี automation เนี่ย ที่ไปอัพเดตเนื้อหาบน channel YouTube ให้อีกทีนะครับ ซึ่งถ้าใครสนใจว่ารายละเอียดเป็นยังไงนะครับ ก็เรามี talk เกี่ยวกับเรื่องนี้อยู่นะครับ ก็ไปหาดูหรือหาอ่านดูได้นะครับ แล้วก็ฝาก subscribe ช่อง Creatorsgarten กันด้วยนะครับ โอเค สำหรับวันนี้ขอบคุณมากครับ

ขอบคุณพี่ไทมากๆ เลยนะครับ