Stop Paying Claude for This. Use Jev Instead
สรุปย่อ
ประเด็นสำคัญจากวิดีโอ
- **ช่อง:** Leon van Zyl · **ความยาว:** ~16 นาที · **ลิงก์:** https://www.youtube.com/watch?v=iyIAdmeKeMM
# สรุป: Stop Paying Claude for This. Use Jev Instead - **ช่อง:** Leon van Zyl · **ความยาว:** ~16 นาที · **ลิงก์:** https://www.youtube.com/watch?v=iyIAdmeKeMM ## ประเด็นหลัก - Jev จาก typesafe.ai ถูก overhype ว่าเป็น "Claude Killer" แต่จริง ๆ เขียนประโยคเต็มยังไม่ได้ — เป็น System 1 model (ตัดสินเร็ว ถูก) ไม่ใช่ System 2 (มี reasoning) อย่าง Claude/OpenAI - Jev เก่ง 3 ประเภทคำถาม: Choice (เลือกจากตัวเลือก), Score (ให้คะแนนบนมาตรวัด), Null (ใช่/ไม่ใช่พร้อม confidence) — ตอบเป็นโครงสร้าง deterministic ที่การันตีเสมอ เหมาะ map กับ n8n/โค้ด - ข้อจำกัด: ไม่มี reasoning แย่วิทย์/คณิต และ context window จิ๋วแค่ ~32,000 tokens - ความคุ้มค่าคือต้นทุน: จำแนก 1 ล้านครั้ง Jev ~$21 เทียบ Sonnet 5 ~$1,500 และ Fable 5.1 ~$7,500 - confidence score (0-1) กลับมาทุกครั้ง — เขียน logic ได้เช่น ต่ำกว่า 0.75 ให้ส่งคนตรวจแทน - สาธิตจริง: สร้าง issue ใหม่ใน GitHub → GitHub Action เรียก Jev → ติดป้าย enhancement/bug/documentation + เลือก agent (Fable งาน coding ขั้นสูง, Astra งาน 3D/spatial reasoning, Haiku เอกสาร) → โพสต์คอมเมนต์ input/response/confidence - ผลจริง: issue "add a new emotion: scared" ถูกจำแนก enhancement (confidence 1.0) เลือก Astra (confidence 0.62 เพราะ description คลุมเครือ) ใช้ไม่ถึง 800 tokens - เข้าถึงได้เลย: typesafe.ai (มี waitlist ช่วงอัด) หรือข้ามคิวผ่าน OpenRouter; สมัครใหม่มี free credits $5 - ติดตั้ง TypeSafe agent skill (ทางการ) ให้ Claude Code รู้จักวิธีเรียก Jev API - ต่อยอด: label "ready" → "factory running" เพื่อให้ software factory หยิบ issue ไปทำจนเปิด pull request — workflow คล้าย diagram ของ Vercel เอง - สปอนเซอร์ Decodo: web scraping API + MCP server, rotating IPs, JS rendering, ฟรี 2,000 credits/ปี โค้ด LEONVANZYL ลด 10% ## ความเห็นสรุป คลิปนี้ให้มุมที่สมดุลระหว่าง hype กับความเป็นจริงของ Jev — ชื่อเรื่องจะโหดไปว่า "หยุดจ่ายเงิน Claude" แต่เนื้อในอธิบายครบว่า Jev เก่งเฉพาะงานจำแนกด่วนที่ไม่ต้องใช้ reasoning และถูกกว่ากันมหาศาลในการใช้งานจริง ส่วน demo ละเอียดดี ทำตามได้จริงตั้งแต่สร้าง API key จนต่อ software factory เป็นแนวทางที่นำไปใช้กับ repo หรือ workflow อื่นได้กว้าง
คำแปลเต็ม
แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ
Jev จาก typesafe.ai เป็นโมเดลที่วิเศษมาก แต่ตอนนี้มันกำลังถูกโห่ฮือเกินจริง (overhyped) ผมเห็นวิดีโอเยอะแยะเรียกมันว่า Claude Killer ซึ่งมันไม่ใช่ — มันแม้แต่เขียนประโยคเต็ม ๆ ยังไม่ได้เลย แต่มีหนึ่งงานที่มันทำได้ดีกว่าและเร็วกว่า LLM ทุกตัว และในวิดีโอนี้ผมจะโชว์วิธีใช้มันในโปรเจกต์จริง ไม่ใช่แค่ demo มาดูกันว่าเราจะสร้างอะไรในวิดีโอนี้ และคุณเอาทุกอย่างที่เรียนจากตรงนี้ไปใช้กับ Jev ได้อีกเพียบ กับ use case ที่หลากหลายมาก ๆ นี่คือ GitHub repo หนึ่งของผม มันคือเว็บแอปพลิเคชันที่มีโมเดล 3D ของ Claude อยู่ เรามีฉากคฤหาสน์ผีสิงอยู่เบื้องหลัง แต่ยังไม่มีสีหน้าที่สื่อว่า Claude กำลังกลัว เราจะสร้าง issue ใหม่ตัวนี้กัน และภายในวินาทีเดียว คุณจะเห็นป้ายกำกับเปลี่ยน เราได้ป้าย Agent, Codex และ Enhancement สิ่งที่เกิดขึ้นคือ ตอนเราสร้าง issue นี้ เนื้อหาทั้งหมด ทั้ง title และ description ถูกส่งไปให้ Jev แล้วเราให้ Jev ทำสองอย่าง อย่างแรก เราให้ Jev กำหนดหมวดหมู่ issue หนึ่ง ๆ จะเป็นได้ไม่กี่แบบ: enhancement (การปรับปรุง/ฟีเจอร์ใหม่), documentation (เอกสาร) หรือ bug (ข้อผิดพลาด) และ Jev ระบุถูกต้องว่า issue นี้เป็น enhancement หมายความว่าเป็นฟีเจอร์ใหม่ GitHub repo นี้ต่อเข้ากับ software factory (โรงงานซอฟต์แวร์อัตโนมัติ) อยู่ และใน backend ผมมีเอเจนต์หลายตัวใน fleet ประกอบด้วยเอเจนต์ Codex และเอเจนต์ Claude Code ขึ้นอยู่กับประเภทงานของ change นี้ เราควรส่งให้เอเจนต์ที่ถูกต้อง และสำหรับงาน 3D หรืองานที่เกี่ยวกับ spatial reasoning (การให้เหตุผลเชิงพื้นที่/มิติสัมพันธ์) ผมชอบใช้ Codex กับ GPT-6 Astra นั่นคือเหตุผลที่ Jev ระบุว่า Codex คือ coding agent ที่ถูกต้อง ที่มีประโยชน์อีกอย่างคือ เรามีคอมเมนต์นี้ ที่แสดงสิ่งที่ได้รับกลับมาจาก Jev แบบเป๊ะ ๆ สำหรับหมวดหมู่ Jev มั่นใจ 100% ว่านี่คือฟีเจอร์ใหม่ และสำหรับการส่งต่อเอเจนต์ มันมั่นใจ 100% ว่า change นี้ควรส่งให้ Codex เราเห็นข้อมูลที่เป็นประโยชน์อื่น ๆ ด้วย เช่น context ทั้งหมดที่เราส่งให้ Jev และคำตอบของ Jev ในวิดีโอนี้ผมจะสอนวิธีตั้งค่าทั้งหมดนี้ และนี่จะสอนคุณวิธีใช้ Jev กับโปรเจกต์ได้หลายรูปแบบ คุณไม่จำเป็นต้องใช้มันใน GitHub repo เท่านั้น จะเอาไปใช้กับเกมหรืออะไรก็ได้ตามต้องการ และคุณคงเห็นใน intro แล้วว่า TypeSafe มี waiting list อยู่ตอนนี้ แต่ผมจะโชว์วิธีเข้าถึง Jev ได้เลยตอนนี้ โดยไม่ต้องเข้าคิวรอ แต่ก่อนอื่น — Jev มันคืออะไรกันแน่? ผมเห็นคนเยอะมากเทียบมันกับ frontier model (โมเดลแนวหน้า) อย่าง Claude และ OpenAI แต่ความจริงห่างไกลกันคนละฟากฟ้าเลย Jev เป็น System 1 model (โมเดลระบบคิดเร็ว) ขณะที่ Claude หรือ OpenAI เป็น System 2 model (โมเดลคิดเชิงเหตุผล) คุณอาจสงสัยว่าต่างกันยังไง? System 1 model นั้นง่ายมาก ๆ ถูกสร้างมาเพื่อตัดสินใจเร็วจริง ๆ และตอบกลับคุณให้ถูกที่สุดและเร็วที่สุดเท่าที่จะทำได้ ทำให้โมเดลอย่าง Jev เหมาะกับงาน classification (การจำแนกประเภท) ที่สุด ขณะที่ System 2 model อย่าง frontier model มี reasoning (การให้เหตุผล) และความฉลาดมากกว่ามาก ความต่างนี้สำคัญมาก เพราะ Jev เร็วสุดขีดแบบนี้ มันจึงทำงานซับซ้อนไม่ได้ มันไม่มี reasoning และแย่มากกับงานวิทยาศาสตร์และคณิตศาสตร์ แถมมี context window (หน้าต่างบริบท) จิ๋วแค่ราว 32,000 tokens Jev ไม่ใช่ chatbot ด้วย คุณไม่สามารถคุยกับมันเหมือน Claude หรือ OpenAI ได้ มันเก่งแค่ 3 ประเภทงานเท่านั้น: Choice, Score หรือ Null สำหรับทั้งสามแบบ เราส่ง context บางอย่างเกี่ยวกับปัญหา หรือสิ่งที่เราอยากให้มันทำ แล้วเราจะให้ชุดตัวเลือกให้มันเลือก ตัวอย่างเช่น เราให้ context เกี่ยวกับปัญหาหนึ่ง แล้วมันต้องส่งต่อไปยัง billing (การเงิน/วางบิล) technical หรือ sales หรือเหมือนใน GitHub repo ของเรา มันควรจำแนก issue ว่าเป็นฟีเจอร์ใหม่, bug หรือการแก้ไขเอกสาร เรายังใช้ Jev ให้คะแนนอะไรบางอย่างได้ เช่น ให้รีวิวลูกค้าหนึ่งฉบับ แล้วถามว่ารีวิวนี้สงบ, หงุดหงิด หรือโกรธจัด แล้วก็มี Null ซึ่งเป็นการตัดสินใจแบบ Boolean แทบ ๆ อย่าง "ประโยคนี้จริงไหม" แล้วมันจะตอบใช่หรือไม่ใช่ พร้อม confidence score (คะแนนความมั่นใจ) เล็ก ๆ หนึ่งตัว อย่างที่เห็น ไม่มีแบบไหนคืนประโยคเต็ม ๆ เลย มันคือการจำแนกอย่างรวดเร็วจังหวะเดียว ขอเจาะลึกเทคนิคหน่อยนะ นี่คือหน้าตา request และ response จริงของ Jev ใน request เราระบุโมเดลได้ เช่น jev-latest ใส่ context อะไรบางอย่าง เช่นสถานะปัจจุบันคือ "ช่วยด้วย การจ่ายเงินของฉันล้มเหลวมา 3 วันแล้ว" นี่คือคอมเมนต์แบบทั่วไปจาก user แล้วเราถามคำถามได้ เช่นแบบ null: "เรื่องนี้เร่งด่วนไหม" แบบ type null พร้อม instruction (คำสั่งประกอบ): "สิ่งนี้สื่อความเร่งด่วนหรือเปล่า?" ส่วนนี้จะบอกให้ Jev ตอบเป็นใช่หรือไม่ใช่ หรือเราจะให้ Jev เลือกแผนกที่ issue นี้ควรส่งต่อ ซึ่งใช้ type choice กับ instruction: "ทีมไหนควรจัดการเรื่องนี้?" เราแค่ให้ตัวเลือกไม่กี่ตัวให้มันเลือก และแน่นอน ใช้แบบ scoring ตั้งระดับความหงุดหงิดได้ด้วย ส่วน response จาก Jev จะหน้าตาประมาณนี้ และโครงสร้างนี้เป็น deterministic (กำหนดตายตัว) หมายความว่าคุณจะได้โครงสร้างนี้กลับมาเสมอเวลาใช้ Jev ดังนั้นถ้าโค้ดของคุณอ้างอิง object นี้ หรือ map ไปมากับอะไรอย่าง n8n คุณการันตีได้เลยว่าจะได้โครงสร้างเดิมกลับมาเสมอ จุดเจ๋งอีกอย่างของ output structure คือ คุณได้ confidence score กลับมาจาก Jev ด้วย เป็นคะแนน 0 ถึง 1 โดย 1 หมายถึง 100% คุณจึงใส่ logic ในแอปพลิเคชันได้ว่า ถ้า confidence score ต่ำกว่า 0.75 ก็ส่งต่อให้คนตรวจทานแทน ตอนนี้ เราต้องตัดสินใจว่าจะใช้ Jev หรือ Claude ทำงานจำแนก คำตอบขึ้นกับต้นทุนล้วน ๆ ฟังดูนะ ถ้าการตัดสินใจของคุณต้องพึ่งคณิตศาสตร์ที่แม่นยำ วิทยาศาสตร์ที่แม่นยำ หรือต้องใช้ reasoning คุณอาจไม่มีทางเลือกนอกจากใช้ Claude แต่ถ้าแค่ทำงานจำแนกอย่างเร็ว ๆ Jev เกินพอ ผมกำลังคำนวณให้ดูว่าการจำแนก 1 ล้านครั้ง สำหรับงานแบบ GitHub repo จะคุ้มแค่ไหน ถ้าต้องจำแนก 1 ล้านครั้ง Jev คุ้มแค่ $21 ขณะที่โมเดลถูกอย่าง Sonnet 5 จะคุ้มราว $1,500 และผมยังไม่อยากพูดถึง Fable 5.1 เลยที่ $7,500 ดังนั้นสำหรับงานจำแนกด่วน ๆ อย่างใน GitHub repo หรือคุณกำลังสร้าง workflow หรือส่งต่อ issue ระหว่างแผนกต่าง ๆ Jev คือคำตอบที่ชัดเจนที่สุด พูดพอแล้ว แล้วใช้ Jev จริง ๆ ยังไง? แต่ก่อนอื่น ขอพูดถึงสปอนเซอร์วันนี้แป๊บนึง — Decodo เวลาคุณให้ AI agent ไปดึงข้อมูลจากเว็บไซต์หนึ่ง มีโอกาสสูงมากที่มันจะกลับมามือเปล่า เว็บไซต์จริง ๆ ไม่ยอมยื่นข้อมูลให้อะไรที่ไม่ใช่ browser จริง และ AI agent อย่าง Claude ก็ไม่ใช่ browser จริง หรืออย่างในตัวอย่างนี้ ข้อมูลนี้ถูกจำกัดตามภูมิภาค (geo-restricted) ถ้า agent ต้อง request จากเยอรมนี เว็บนี้จะไม่คืนข้อมูลที่มีประโยชน์เลย Decodo มี web scraping API ที่มี MCP server อยู่หน้ามัน หมายความว่าคุณดรอปมันใส่อะไรก็ได้ที่คุย MCP Decodo ให้ rotating IPs (IP หมุนเวียน), JavaScript rendering และการ retry อัตโนมัติ คุณยื่นเว็บไซต์ให้มัน ระบุ geo-location ก็ได้ด้วย agent ของคุณจะใช้ MCP server ของเขา แล้วได้รับ markdown สะอาด ๆ หรือ JSON โครงสร้างแล้วเรียบร้อยกลับไป แพ็กเกจฟรีของ web scraping API ให้ 2,000 credits ใช้ได้เต็มปี และไม่ต้องใช้บัตรเครดิต ผมแปะลิงก์ไว้ในคำอธิบายของวิดีโอ และถ้าใช้โค้ด LEONVANZYL จะได้ส่วนลด 10% สำหรับแพ็กเกจจ่ายเงินแรก ขอบคุณ Decodo ที่สนับสนุนวิดีโอนี้ เอาละ กลับเข้าเรื่องกัน เพื่อเข้าถึง Jev คุณเข้าไปที่ typesafe.ai แล้วเข้าสู่ระบบ ตอนที่อัดวิดีโอนี้ ต้องเข้า waitlist อยู่ พวกเขาเคยเปิดให้ใช้โดยไม่ต้องคิวสักพัก แต่ดูเหมือนจะกลับมามีคิวอีกแล้ว วิธีข้าม waitlist คือเข้าไปสมัครที่ OpenRouter OpenRouter ให้คุณเข้าถึง Jev เวอร์ชันล่าสุดได้ สำหรับบทเรียนนี้ ผมจะใช้ TypeSafe เอง แต่ถ้าคุณอยากทำตามแบบ OpenRouter เวลาผมพูดถึง TypeSafe หรือ TypeSafe API กับ coding agent คุณแค่พูดถึง Jev ในฐานะ OpenRouter API แทน จาก dashboard ของ typesafe.ai มีไม่กี่อย่างที่เราต้องระวังไว้ เมื่อเข้าไปที่ Playground เราจะเห็นวิธีทำงานของ Jev ชัด ๆ และอย่างที่ผมบอกไปก่อนหน้า คุณมีสามตัวเลือกหลัก: Null, Score หรือ Choice มาคลิกดูตัวอย่างหนึ่งตัว ดูสิ นั่นแหละคือโครงสร้างที่คุณเห็นก่อนหน้านี้ และเรายังรวมหลายคำถามเข้าด้วยกันได้ด้วย ไม่จำเป็นต้องเป็น null อย่างเดียว จะผสม scoring หรือ choice ก็ได้ รวมทั้งหมดเป็น request เดียวได้เลย เราจะสลับค่าพวกนี้เป็นค่าจริง เช่น สถานะปัจจุบันเป็นอะไร แล้วรัน ก็ได้ response กลับมา เราจะเห็นเค้าโครงว่าคำตอบจะหน้าตาเป็นยังไง และพอสลับไป JSON view จะได้โครงสร้างเชิงเทคนิคที่การันตีว่าจะได้กลับมาทุกครั้ง ที่ส่ง request นี้ โครงสร้างนี้ถูกการันตี เพื่อใช้ Jev เราต้องสร้าง API key ไปที่ API keys แล้วสร้าง key ใหม่ ผมตั้งชื่อว่า tutorial ก็ได้ และตอนนี้เรามี API key แล้ว ก็อป key นี้ไปเก็บไว้ที่ปลอดภัย กรุณาใช้ key ของคุณเองนะครับ ผมจะลบ key นี้ทิ้งหลังอัดเสร็จ เนื่องจากนี่เป็นบริการเสียเงิน เราต้องเติม credits ในบัญชี ตอนผมสมัคร ได้รับ free credits $5 เลยสมมติว่าทุกคนได้เหมือนกัน และผมยังไม่ได้ใช้สักเท่าไหร่เลย เพราะ request พวกนี้ถูกมาก สิ่งที่ต้องมีตอนนี้คือ GitHub repo ที่จะต่อ Jev เข้าไป คุณใช้โค้ดของผมก็ได้ หรือใช้ repo เดิมของคุณก็ได้ หรือจะ push dummy repo ใหม่ขึ้น GitHub ก็ยังได้ อะไรก็ได้ไม่ว่ากัน แค่ไปที่ code แล้วก็อปคำสั่งตรงนี้ แล้วเปิด coding agent ของคุณขึ้นมา ผมจะใช้ Claude Code ตั้งเป็น Opus 5.5 และ reasoning effort สูง "โปรด clone repo นี้ไปที่ root ของโปรเจกต์" แล้วผมก็วาง GitHub URL ลงไป โอเค ตอนนี้ก็อปไฟล์ทั้งหมดมาแล้ว มาสร้าง GitHub repo ใหม่กัน ผมสั่งว่า "สร้าง private GitHub repo ใหม่ให้โปรเจกต์นี้" เยี่ยม โปรเจกต์ขึ้น GitHub แล้ว สิ่งที่เราอยากทำตอนนี้คือ เวลาสร้าง issue ใหม่ เราอยากได้ความสามารถในการติดป้ายกำกับเฉพาะเจาะจงมาก ๆ ตรงนี้สนุกที่สุดแล้ว และขึ้นอยู่กับคุณทั้งหมด จะทำซับซ้อนแค่ไหนก็ได้ตามใจ สำหรับ demo นี้ผมจะทำแบบเรียบง่ายที่สุด เรามี default labels อยู่แล้วชุดหนึ่ง อย่าง bug, documentation และ enhancement เรายังให้ agent เพิ่ม custom labels ได้อีกด้วย เช่นสั่งว่า "โปรดเพิ่ม labels เหล่านี้ใน GitHub repo: หนึ่ง Claude running Fable สอง Codex running Astra และอาจเพิ่ม Claude running Haiku สำหรับงานง่าย ๆ " พอ refresh repo แล้วเข้าไปที่ labels เราจะเห็น labels ใหม่อยู่ตรงนี้ โอเค สิ่งที่เราอยากให้ Jev ทำตอนสร้าง issue ใหม่คือ จำแนก issue ว่าเป็น bug, documentation หรือ enhancement และมันควรตัดสินด้วยว่าจะส่งงานนี้ให้ agent ตัวไหน จริง ๆ ถ้าผมทำให้คุณงงว่าเรากำลังทำอะไรอยู่ ผมเจอไดอะแกรมเท่ ๆ นี้ในหน้าเว็บของ Vercel มันอธิบาย workflow ที่เรากำลังสร้างพอดี นี่คือ software factory ที่ Vercel ใช้จริง ๆ และคล้ายกับที่เรากำลังสร้างมาก เริ่มจากคนสร้าง issue แล้วมีขั้น identify type ที่เรียก LLM มาจำแนกว่า issue เป็น bug, ฟีเจอร์ หรือเอกสาร ในขั้นนี้เรายังทำอย่างอื่นเพิ่มได้อีก เช่น เลือกว่าจะใช้ agent ประเภทไหนใน agent swarm ของเรา และเหตุผลที่เราติดป้ายกำกับเหล่านี้คือ เมื่อ software factory หยิบ issue นั้นมาประมวลผลจริง มันจะส่ง issue ไปตาม flow ที่ถูกต้อง มันจะดู labels แล้วคิดว่า "อ๋อ ถ้าเป็น bug ก็อยากให้ agent ทำซ้ำ error นั้น แก้ แล้วเทสต์ แล้วสร้าง pull request หรือถ้าเป็นฟีเจอร์ใหม่ ก็วิเคราะห์ฟีเจอร์ ดูว่าเข้ากับวิสัยทัศน์ของแอปไหม implement ฟีเจอร์ รีวิว แล้วค่อย merge ส่วนการแก้เอกสารนั้นง่ายมาก เราใช้โมเดลถูก ๆ อย่าง Haiku แก้เอกสารแล้ว merge ได้เลย เพราะเป็น issue ความเสี่ยงต่ำ อีกสิ่งที่ผมชอบทำคือติดตั้ง TypeSafe agent skill นี่คือ skill ทางการจาก TypeSafe AI มันจะสอน agent วิธีใช้ Jev และ API ของเขา ผมจะแปะลิงก์ GitHub repo ไว้ใน community ฟรีด้วย แค่ก็อป URL นี้ แล้วกลับไปที่ agent ของเรา "โปรดติดตั้ง skill นี้ในโฟลเดอร์โปรเจกต์" เยี่ยม skill นี้จะสอน agent ของเราวิธีใช้ Jev จริง ๆ ดังนั้นเดาได้เลยว่าตอนนี้เราต้องพูดอะไร: "เมื่อไหร่ก็ตามที่เราเพิ่ม issue ใหม่ใน GitHub repo ต้องเรียก Jev ผ่าน GitHub Action ให้ทำดังนี้: หนึ่ง ติดป้าย issue ว่าเป็น enhancement, bug หรือการแก้ไขเอกสาร สอง กำหนดป้าย agent เช่น Claude Fable, Codex Astra หรือ Claude Haiku สำหรับเอเจนต์: งาน coding ขั้นสูงควรส่งให้ Fable อะไรที่ต้องใช้ spatial reasoning ให้ใช้ Astra อย่างงาน 3D animation ในรุ่นนี้ และ Haiku ใช้สำหรับการแก้เอกสารทั้งหมด เพิ่มคอมเมนต์แสดง input และ response ของ Jev พร้อม confidence score ของแต่ละหมวดหมู่" แล้วเราส่ง TypeSafe API key ให้มัน เท่านี้ก็จบ ผมส่งข้อความนี้ไปเลย โอเค ผมกำลังให้ Claude push การเปลี่ยนแปลงทั้งหมดขึ้น GitHub มาลองเล่นดู ไปสร้าง issue ใหม่กัน ผมพิมพ์ว่า "add a new emotion: scared" สร้างเลย และแล้ว เราได้ response กลับมาจาก Jev แล้ว มันจำแนกว่าเป็น enhancement และสำหรับ agent จะใช้ Codex Astra เรายังเห็นคอมเมนต์ใหม่ด้วย ถูกติดป้ายเป็น enhancement ด้วย confidence score 1 หมายถึง 100% สำหรับ agent เลือก Astra ด้วย confidence 0.62 คงเพราะ description คลุมเครือนิดหน่อย เราจัดการยังไงก็ได้ตามใจชอบ แต่ไม่ว่า Astra หรือ Fable ก็ทำ change นี้ได้ดีทั้งคู่ ตรงนี้เราเห็น input ที่ส่งให้ Jev และเห็น response ของ Jev ด้วย ลองดู tokens ด้วย งานนี้เผาแค่ไม่ถึง 800 tokens ซึ่งเท่ากับไม่มีอะไรเลย ตอนนี้ ถ้าอยากต่อยอดอีก คุณต่อ repo นี้เข้ากับ software factory จริงได้ ขอโชว์ใน repo อื่นให้ดู นี่คือ repo ของเกม RTS (วางแผนเรียลไทม์) และผมสร้าง issue นี้ไว้แค่พูดว่า "ปรับปรุงความหลากหลายของภาพ" change นี้ถูกส่งให้ Claude และจำแนกเป็น enhancement และผมตั้ง label ที่เรียกว่า ready label ready นี้เพิ่งเปลี่ยนเป็น factory running หมายความว่า agent หนึ่งตัวใน agent swarm ของผม กำลังทำงานกับ change นี้อยู่อย่างแข็งขัน และพอ agent นี้เสร็จ มันจะสร้าง pull request ที่ผมรีวิวแล้ว merge กลับเข้าโปรเจกต์ได้ ถ้าอยากเรียนรู้วิธีสร้าง software factory ผมแปะลิงก์ไว้ในคำอธิบายของวิดีโอนี้ ถ้าอยากรู้วิธีใช้ coding agents ให้มีประสิทธิภาพ และสร้างของเท่ ๆ อย่าง software factory อาจลองเข้าร่วม Skool community ของผม ชื่อ Agentic Labs คุณจะได้เข้าถึง Agentic Coding Masterclass ของผม เป็นชั่วโมงวิดีโอสอนใช้ coding agents อย่างมีประสิทธิภาพ และสร้างโปรเจกต์จริง ๆ เรามี live coffee session ที่คุณถามอะไรก็ได้ และมี deep dive session รายสัปดาห์ อันที่จริง พฤหัสนี้เราจะ deep dive เรื่อง Jev พอดี คุณไม่ควรพลาด session นั้นเลยนะ ผมจะแปะลิงก์ Agentic Labs ไว้ในคำอธิบายของวิดีโอนี้ ขอบคุณมากที่รับชม แล้วเจอกันคลิปหน้าครับ บาย บาย
หมายเหตุการแปล
ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ
- ไม่มีสัญลักษณ์ [ฟังไม่ชัด] ในคำแปล — ไม่มีช่วงใดฟังไม่รู้เรื่องจนต้องทำเครื่องหมาย
อภิธานศัพท์เทคนิค
คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ
| ศัพท์ | คำแปล / คำอธิบาย |
|---|---|
| Jev | judgment model จาก Typesafe (typesafe.ai) — โมเดล AI ที่ตอบคำถามเป็นความน่าจะเป็น/หมวด/คะแนน ไม่เขียนข้อความ |
| Typesafe / TypeSafe AI | บริษัทผู้สร้าง Jev |
| System 1 / System 2 model | System 1 = ตัดสินเร็วด้วยสัญชาณญาณ (Jev), System 2 = คิดเชิงเหตุผล (Claude/OpenAI) — จากแนวคิด Thinking Fast and Slow |
| Overhyped | ถูกโห่ฮือ/คำนูนเกินจริง |
| Claude Killer | ฉายาที่คลิปอื่นตั้งให้ Jev — ผู้สร้างปฏิเสธว่าไม่จริง |
| Classification | การจำแนกประเภทของ input เช่น แยก issue เป็น bug/ฟีเจอร์/เอกสาร |
| Choice | คำถามเลือกหมวด — ตอบความน่าจะเป็นของทุกตัวเลือก ใช้เมื่อต้อง route |
| Score | คำถามคะแนนบนมาตรวัดที่มีลำดับ เช่น ระดับความหงุดหงิดของรีวิว |
| Null | คำถามแบบใช่/ไม่ใช่ — ตอบพร้อม confidence score |
| Confidence score | คะแนนความมั่นใจ 0-1 — ต่ำกว่าเกณฑ์ (เช่น 0.75) ควรส่งคนตรวจ |
| Deterministic | กำหนดตายตัว — โครงสร้าง response เหมือนเดิมทุกครั้ง การันตีได้ |
| Context window | หน้าต่างบริบทที่โมเดลอ่านได้ — Jev มีแค่ ~32,000 tokens |
| Instruction | คำสั่งประกอบใน request ของ Jev บอกวัตถุประสงค์ของคำถาม |
| Frontier model | โมเดลแนวหน้าอย่าง Claude/OpenAI ที่มี reasoning สูง |
| Spatial reasoning | การให้เหตุผลเชิงพื้นที่/มิติสัมพันธ์ — งาน 3D ควรใช้ Astra |
| GitHub Action | ระบบอัตโนมัติของ GitHub ที่ทำงานเมื่อเกิด event เช่น สร้าง issue |
| Issue / label | ใบงาน/ป้ายกำกับใน GitHub repo |
| Enhancement / Bug / Documentation | หมวด issue: ฟีเจอร์ใหม่ / ข้อผิดพลาด / เอกสาร |
| Software factory | โรงงานซอฟต์แวร์อัตโนมัติ — รับ issue ไปดำเนินการจนเปิด pull request |
| Agent swarm / fleet | ชุดเอเจนต์หลายตัวที่พร้อมรับงานต่างกัน |
| Agent routing | การจำแนกงานแล้วส่งให้เอเจนต์/ทีมที่เหมาะสม |
| Codex / Claude Code | coding agent สองตระกูลที่ใช้ใน fleet ของผู้สร้าง |
| GPT-6 Astra | โมเดลที่ pair กับ Codex สำหรับงาน 3D/spatial |
| Fable / Haiku / Sonnet | โมเดลระดับสูง/เบา/กลาง — Fable งานยาก, Haiku งานเอกสารง่าย ๆ |
| OpenRouter | บริการรวม API หลายโมเดล — ทางเข้า Jev โดยไม่ต้องรอ waitlist |
| Waitlist | คิวรอเข้าใช้บริการ |
| MCP server | Model Context Protocol — มาตรฐานต่อเครื่องมือเข้ากับ AI agent |
| n8n | เครื่องมือสร้าง workflow automation |
| Decodo | สปอนเซอร์คลิป — web scraping API พร้อม MCP, rotating IPs, JS rendering |
| Rotating IPs | IP หมุนเวียนสำหรับ scraping ไม่โดนบล็อก |
| Geo-restricted | จำกัดเข้าถึงตามภูมิภาค |
| TypeSafe agent skill | skill ทางการสอน coding agent วิธีใช้ Jev และ API ของ Typesafe |
| Pull request (PR) | คำขอ merge การแก้ไขโค้ดเข้าโปรเจกต์ |
| RTS game | เกมวางแผนเรียลไทม์ (real-time strategy) |
| Agentic Labs | Skool community ของ Leon van Zyl เรื่อง agentic coding |
ซับไตเติ้ลภาษาไทย
ดาวน์โหลดหรือดูซับทั้งหมด
1 00:00:00,000 --> 00:00:03,181 Jev จาก typesafe.ai เป็นโมเดลที่วิเศษมาก 2 00:00:03,181 --> 00:00:06,839 แต่ตอนนี้มันกำลังถูกโห่ฮือเกินจริง (overhyped) 3 00:00:06,839 --> 00:00:10,338 ผมเห็นวิดีโอเยอะแยะเรียกมันว่า Claude Killer 4 00:00:10,338 --> 00:00:13,678 ซึ่งมันไม่ใช่ — มันแม้แต่เขียนประโยคเต็ม ๆ
เปิดดูซับไตเติ้ลทั้งหมด (318 segments)
1 00:00:00,000 --> 00:00:03,181 Jev จาก typesafe.ai เป็นโมเดลที่วิเศษมาก 2 00:00:03,181 --> 00:00:06,839 แต่ตอนนี้มันกำลังถูกโห่ฮือเกินจริง (overhyped) 3 00:00:06,839 --> 00:00:10,338 ผมเห็นวิดีโอเยอะแยะเรียกมันว่า Claude Killer 4 00:00:10,338 --> 00:00:13,678 ซึ่งมันไม่ใช่ — มันแม้แต่เขียนประโยคเต็ม ๆ 5 00:00:13,678 --> 00:00:14,773 ยังไม่ได้เลย 6 00:00:14,773 --> 00:00:18,351 แต่มีหนึ่งงานที่มันทำได้ดีกว่าและเร็วกว่า LLM 7 00:00:18,351 --> 00:00:19,446 ทุกตัว 8 00:00:19,446 --> 00:00:23,104 และในวิดีโอนี้ผมจะโชว์วิธีใช้มันในโปรเจกต์จริง 9 00:00:23,104 --> 00:00:24,218 ไม่ใช่แค่ demo 10 00:00:24,218 --> 00:00:27,001 มาดูกันว่าเราจะสร้างอะไรในวิดีโอนี้ 11 00:00:27,001 --> 00:00:30,659 และคุณเอาทุกอย่างที่เรียนจากตรงนี้ไปใช้กับ Jev 12 00:00:30,659 --> 00:00:33,919 ได้อีกเพียบ กับ use case ที่หลากหลายมาก ๆ 13 00:00:33,919 --> 00:00:36,225 นี่คือ GitHub repo หนึ่งของผม 14 00:00:36,225 --> 00:00:39,804 มันคือเว็บแอปพลิเคชันที่มีโมเดล 3D ของ Claude 15 00:00:39,804 --> 00:00:42,905 อยู่ เรามีฉากคฤหาสน์ผีสิงอยู่เบื้องหลัง 16 00:00:42,905 --> 00:00:46,404 แต่ยังไม่มีสีหน้าที่สื่อว่า Claude กำลังกลัว 17 00:00:46,404 --> 00:00:48,790 เราจะสร้าง issue ใหม่ตัวนี้กัน 18 00:00:48,790 --> 00:00:52,368 และภายในวินาทีเดียว คุณจะเห็นป้ายกำกับเปลี่ยน 19 00:00:52,368 --> 00:00:55,470 เราได้ป้าย Agent, Codex และ Enhancement 20 00:00:55,470 --> 00:00:58,651 สิ่งที่เกิดขึ้นคือ ตอนเราสร้าง issue นี้ 21 00:00:58,651 --> 00:01:01,911 เนื้อหาทั้งหมด ทั้ง title และ description 22 00:01:01,911 --> 00:01:05,171 ถูกส่งไปให้ Jev แล้วเราให้ Jev ทำสองอย่าง 23 00:01:05,171 --> 00:01:08,750 อย่างแรก เราให้ Jev กำหนดหมวดหมู่ issue หนึ่ง 24 00:01:08,750 --> 00:01:09,845 ๆ 25 00:01:09,845 --> 00:01:14,457 จะเป็นได้ไม่กี่แบบ: enhancement (การปรับปรุง/ฟีเจอร์ใหม่), 26 00:01:14,457 --> 00:01:17,956 documentation (เอกสาร) หรือ bug (ข้อผิดพลาด) 27 00:01:17,956 --> 00:01:20,819 และ Jev ระบุถูกต้องว่า issue นี้เป็น 28 00:01:20,819 --> 00:01:24,397 enhancement หมายความว่าเป็นฟีเจอร์ใหม่ GitHub 29 00:01:24,397 --> 00:01:27,181 repo นี้ต่อเข้ากับ software factory 30 00:01:27,181 --> 00:01:30,759 (โรงงานซอฟต์แวร์อัตโนมัติ) อยู่ และใน backend 31 00:01:30,759 --> 00:01:34,258 ผมมีเอเจนต์หลายตัวใน fleet ประกอบด้วยเอเจนต์ 32 00:01:34,258 --> 00:01:36,485 Codex และเอเจนต์ Claude Code 33 00:01:36,485 --> 00:01:39,188 ขึ้นอยู่กับประเภทงานของ change นี้ 34 00:01:39,188 --> 00:01:42,767 เราควรส่งให้เอเจนต์ที่ถูกต้อง และสำหรับงาน 3D 35 00:01:42,767 --> 00:01:45,709 หรืองานที่เกี่ยวกับ spatial reasoning 36 00:01:45,709 --> 00:01:48,731 (การให้เหตุผลเชิงพื้นที่/มิติสัมพันธ์) 37 00:01:48,731 --> 00:01:51,117 ผมชอบใช้ Codex กับ GPT-6 Astra 38 00:01:51,117 --> 00:01:54,695 นั่นคือเหตุผลที่ Jev ระบุว่า Codex คือ coding 39 00:01:54,695 --> 00:01:57,955 agent ที่ถูกต้อง ที่มีประโยชน์อีกอย่างคือ 40 00:01:57,955 --> 00:02:01,613 เรามีคอมเมนต์นี้ ที่แสดงสิ่งที่ได้รับกลับมาจาก 41 00:02:01,613 --> 00:02:05,112 Jev แบบเป๊ะ ๆ สำหรับหมวดหมู่ Jev มั่นใจ 100% 42 00:02:05,112 --> 00:02:08,770 ว่านี่คือฟีเจอร์ใหม่ และสำหรับการส่งต่อเอเจนต์ 43 00:02:08,770 --> 00:02:12,269 มันมั่นใจ 100% ว่า change นี้ควรส่งให้ Codex 44 00:02:12,269 --> 00:02:15,768 เราเห็นข้อมูลที่เป็นประโยชน์อื่น ๆ ด้วย เช่น 45 00:02:15,768 --> 00:02:19,188 context ทั้งหมดที่เราส่งให้ Jev และคำตอบของ 46 00:02:19,188 --> 00:02:22,607 Jev ในวิดีโอนี้ผมจะสอนวิธีตั้งค่าทั้งหมดนี้ 47 00:02:22,607 --> 00:02:24,595 และนี่จะสอนคุณวิธีใช้ Jev 48 00:02:24,595 --> 00:02:26,504 กับโปรเจกต์ได้หลายรูปแบบ 49 00:02:26,504 --> 00:02:30,082 คุณไม่จำเป็นต้องใช้มันใน GitHub repo เท่านั้น 50 00:02:30,082 --> 00:02:33,184 จะเอาไปใช้กับเกมหรืออะไรก็ได้ตามต้องการ 51 00:02:33,184 --> 00:02:36,364 และคุณคงเห็นใน intro แล้วว่า TypeSafe มี 52 00:02:36,364 --> 00:02:40,022 waiting list อยู่ตอนนี้ แต่ผมจะโชว์วิธีเข้าถึง 53 00:02:40,022 --> 00:02:42,885 Jev ได้เลยตอนนี้ โดยไม่ต้องเข้าคิวรอ 54 00:02:42,885 --> 00:02:45,669 แต่ก่อนอื่น — Jev มันคืออะไรกันแน่? 55 00:02:45,669 --> 00:02:48,929 ผมเห็นคนเยอะมากเทียบมันกับ frontier model 56 00:02:48,929 --> 00:02:51,951 (โมเดลแนวหน้า) อย่าง Claude และ OpenAI 57 00:02:51,951 --> 00:02:55,370 แต่ความจริงห่างไกลกันคนละฟากฟ้าเลย Jev เป็น 58 00:02:55,370 --> 00:02:58,551 System 1 model (โมเดลระบบคิดเร็ว) ขณะที่ 59 00:02:58,551 --> 00:03:01,573 Claude หรือ OpenAI เป็น System 2 model 60 00:03:01,573 --> 00:03:03,163 (โมเดลคิดเชิงเหตุผล) 61 00:03:03,163 --> 00:03:05,310 คุณอาจสงสัยว่าต่างกันยังไง? 62 00:03:05,310 --> 00:03:07,537 System 1 model นั้นง่ายมาก ๆ 63 00:03:07,537 --> 00:03:10,161 ถูกสร้างมาเพื่อตัดสินใจเร็วจริง ๆ 64 00:03:10,161 --> 00:03:14,296 และตอบกลับคุณให้ถูกที่สุดและเร็วที่สุดเท่าที่จะทำได้ 65 00:03:14,296 --> 00:03:17,954 ทำให้โมเดลอย่าง Jev เหมาะกับงาน classification 66 00:03:17,954 --> 00:03:21,533 (การจำแนกประเภท) ที่สุด ขณะที่ System 2 model 67 00:03:21,533 --> 00:03:24,157 อย่าง frontier model มี reasoning 68 00:03:24,157 --> 00:03:27,020 (การให้เหตุผล) และความฉลาดมากกว่ามาก 69 00:03:27,020 --> 00:03:30,678 ความต่างนี้สำคัญมาก เพราะ Jev เร็วสุดขีดแบบนี้ 70 00:03:30,678 --> 00:03:34,097 มันจึงทำงานซับซ้อนไม่ได้ มันไม่มี reasoning 71 00:03:34,097 --> 00:03:37,676 และแย่มากกับงานวิทยาศาสตร์และคณิตศาสตร์ แถมมี 72 00:03:37,676 --> 00:03:40,936 context window (หน้าต่างบริบท) จิ๋วแค่ราว 73 00:03:40,936 --> 00:03:43,878 32,000 tokens Jev ไม่ใช่ chatbot ด้วย 74 00:03:43,878 --> 00:03:47,536 คุณไม่สามารถคุยกับมันเหมือน Claude หรือ OpenAI 75 00:03:47,536 --> 00:03:50,956 ได้ มันเก่งแค่ 3 ประเภทงานเท่านั้น: Choice, 76 00:03:50,956 --> 00:03:54,057 Score หรือ Null สำหรับทั้งสามแบบ เราส่ง 77 00:03:54,057 --> 00:03:56,443 context บางอย่างเกี่ยวกับปัญหา 78 00:03:56,443 --> 00:03:58,510 หรือสิ่งที่เราอยากให้มันทำ 79 00:03:58,510 --> 00:04:01,214 แล้วเราจะให้ชุดตัวเลือกให้มันเลือก 80 00:04:01,214 --> 00:04:03,361 ตัวอย่างเช่น เราให้ context 81 00:04:03,361 --> 00:04:06,701 เกี่ยวกับปัญหาหนึ่ง แล้วมันต้องส่งต่อไปยัง 82 00:04:06,701 --> 00:04:10,280 billing (การเงิน/วางบิล) technical หรือ sales 83 00:04:10,280 --> 00:04:13,699 หรือเหมือนใน GitHub repo ของเรา มันควรจำแนก 84 00:04:13,699 --> 00:04:16,005 issue ว่าเป็นฟีเจอร์ใหม่, bug 85 00:04:16,005 --> 00:04:18,550 หรือการแก้ไขเอกสาร เรายังใช้ Jev 86 00:04:18,550 --> 00:04:20,777 ให้คะแนนอะไรบางอย่างได้ เช่น 87 00:04:20,777 --> 00:04:24,435 ให้รีวิวลูกค้าหนึ่งฉบับ แล้วถามว่ารีวิวนี้สงบ, 88 00:04:24,435 --> 00:04:30,081 หงุดหงิด หรือโกรธจัด แล้วก็มี Null ซึ่งเป็นการตัดสินใจแบบ Boolean แทบ ๆ 89 00:04:30,081 --> 00:04:31,989 อย่าง "ประโยคนี้จริงไหม" 90 00:04:31,989 --> 00:04:35,329 แล้วมันจะตอบใช่หรือไม่ใช่ พร้อม confidence 91 00:04:35,329 --> 00:04:37,715 score (คะแนนความมั่นใจ) เล็ก ๆ 92 00:04:37,715 --> 00:04:41,532 หนึ่งตัว อย่างที่เห็น ไม่มีแบบไหนคืนประโยคเต็ม ๆ 93 00:04:41,532 --> 00:04:44,792 เลย มันคือการจำแนกอย่างรวดเร็วจังหวะเดียว 94 00:04:44,792 --> 00:04:48,212 ขอเจาะลึกเทคนิคหน่อยนะ นี่คือหน้าตา request 95 00:04:48,212 --> 00:04:50,995 และ response จริงของ Jev ใน request 96 00:04:50,995 --> 00:04:54,414 เราระบุโมเดลได้ เช่น jev-latest ใส่ context 97 00:04:54,414 --> 00:04:57,834 อะไรบางอย่าง เช่นสถานะปัจจุบันคือ "ช่วยด้วย 98 00:04:57,834 --> 00:05:00,776 การจ่ายเงินของฉันล้มเหลวมา 3 วันแล้ว" 99 00:05:00,776 --> 00:05:03,241 นี่คือคอมเมนต์แบบทั่วไปจาก user 100 00:05:03,241 --> 00:05:05,786 แล้วเราถามคำถามได้ เช่นแบบ null: 101 00:05:05,786 --> 00:05:09,126 "เรื่องนี้เร่งด่วนไหม" แบบ type null พร้อม 102 00:05:09,126 --> 00:05:11,273 instruction (คำสั่งประกอบ): 103 00:05:11,273 --> 00:05:14,056 "สิ่งนี้สื่อความเร่งด่วนหรือเปล่า?" 104 00:05:14,056 --> 00:05:17,237 ส่วนนี้จะบอกให้ Jev ตอบเป็นใช่หรือไม่ใช่ 105 00:05:17,237 --> 00:05:20,020 หรือเราจะให้ Jev เลือกแผนกที่ issue 106 00:05:20,020 --> 00:05:22,883 นี้ควรส่งต่อ ซึ่งใช้ type choice กับ 107 00:05:22,883 --> 00:05:26,064 instruction: "ทีมไหนควรจัดการเรื่องนี้?" 108 00:05:26,064 --> 00:05:29,006 เราแค่ให้ตัวเลือกไม่กี่ตัวให้มันเลือก 109 00:05:29,006 --> 00:05:30,915 และแน่นอน ใช้แบบ scoring 110 00:05:30,915 --> 00:05:34,573 ตั้งระดับความหงุดหงิดได้ด้วย ส่วน response จาก 111 00:05:34,573 --> 00:05:37,833 Jev จะหน้าตาประมาณนี้ และโครงสร้างนี้เป็น 112 00:05:37,833 --> 00:05:39,980 deterministic (กำหนดตายตัว) 113 00:05:39,980 --> 00:05:43,797 หมายความว่าคุณจะได้โครงสร้างนี้กลับมาเสมอเวลาใช้ 114 00:05:43,797 --> 00:05:47,137 Jev ดังนั้นถ้าโค้ดของคุณอ้างอิง object นี้ 115 00:05:47,137 --> 00:05:49,443 หรือ map ไปมากับอะไรอย่าง n8n 116 00:05:49,443 --> 00:05:53,181 คุณการันตีได้เลยว่าจะได้โครงสร้างเดิมกลับมาเสมอ 117 00:05:53,181 --> 00:05:56,839 จุดเจ๋งอีกอย่างของ output structure คือ คุณได้ 118 00:05:56,839 --> 00:06:00,417 confidence score กลับมาจาก Jev ด้วย เป็นคะแนน 119 00:06:00,417 --> 00:06:03,757 0 ถึง 1 โดย 1 หมายถึง 100% คุณจึงใส่ logic 120 00:06:03,757 --> 00:06:06,938 ในแอปพลิเคชันได้ว่า ถ้า confidence score 121 00:06:06,938 --> 00:06:10,358 ต่ำกว่า 0.75 ก็ส่งต่อให้คนตรวจทานแทน ตอนนี้ 122 00:06:10,358 --> 00:06:13,459 เราต้องตัดสินใจว่าจะใช้ Jev หรือ Claude 123 00:06:13,459 --> 00:06:16,878 ทำงานจำแนก คำตอบขึ้นกับต้นทุนล้วน ๆ ฟังดูนะ 124 00:06:16,878 --> 00:06:20,616 ถ้าการตัดสินใจของคุณต้องพึ่งคณิตศาสตร์ที่แม่นยำ 125 00:06:20,616 --> 00:06:23,956 วิทยาศาสตร์ที่แม่นยำ หรือต้องใช้ reasoning 126 00:06:23,956 --> 00:06:26,739 คุณอาจไม่มีทางเลือกนอกจากใช้ Claude 127 00:06:26,739 --> 00:06:29,999 แต่ถ้าแค่ทำงานจำแนกอย่างเร็ว ๆ Jev เกินพอ 128 00:06:29,999 --> 00:06:33,180 ผมกำลังคำนวณให้ดูว่าการจำแนก 1 ล้านครั้ง 129 00:06:33,180 --> 00:06:36,123 สำหรับงานแบบ GitHub repo จะคุ้มแค่ไหน 130 00:06:36,123 --> 00:06:39,303 ถ้าต้องจำแนก 1 ล้านครั้ง Jev คุ้มแค่ $21 131 00:06:39,303 --> 00:06:42,882 ขณะที่โมเดลถูกอย่าง Sonnet 5 จะคุ้มราว $1,500 132 00:06:42,882 --> 00:06:46,460 และผมยังไม่อยากพูดถึง Fable 5.1 เลยที่ $7,500 133 00:06:46,460 --> 00:06:48,607 ดังนั้นสำหรับงานจำแนกด่วน ๆ 134 00:06:48,607 --> 00:06:55,049 อย่างใน GitHub repo หรือคุณกำลังสร้าง workflow หรือส่งต่อ issue ระหว่างแผนกต่าง ๆ 135 00:06:55,049 --> 00:06:59,502 Jev คือคำตอบที่ชัดเจนที่สุด พูดพอแล้ว แล้วใช้ Jev จริง ๆ 136 00:06:59,502 --> 00:07:00,933 ยังไง? แต่ก่อนอื่น 137 00:07:00,933 --> 00:07:04,035 ขอพูดถึงสปอนเซอร์วันนี้แป๊บนึง — Decodo 138 00:07:04,035 --> 00:07:05,546 เวลาคุณให้ AI agent 139 00:07:05,546 --> 00:07:07,693 ไปดึงข้อมูลจากเว็บไซต์หนึ่ง 140 00:07:07,693 --> 00:07:10,476 มีโอกาสสูงมากที่มันจะกลับมามือเปล่า 141 00:07:10,476 --> 00:07:11,589 เว็บไซต์จริง ๆ 142 00:07:11,589 --> 00:07:15,168 ไม่ยอมยื่นข้อมูลให้อะไรที่ไม่ใช่ browser จริง 143 00:07:15,168 --> 00:07:18,508 และ AI agent อย่าง Claude ก็ไม่ใช่ browser 144 00:07:18,508 --> 00:07:20,655 จริง หรืออย่างในตัวอย่างนี้ 145 00:07:20,655 --> 00:07:24,154 ข้อมูลนี้ถูกจำกัดตามภูมิภาค (geo-restricted) 146 00:07:24,154 --> 00:07:26,778 ถ้า agent ต้อง request จากเยอรมนี 147 00:07:26,778 --> 00:07:30,277 เว็บนี้จะไม่คืนข้อมูลที่มีประโยชน์เลย Decodo 148 00:07:30,277 --> 00:07:33,140 มี web scraping API ที่มี MCP server 149 00:07:33,140 --> 00:07:34,235 อยู่หน้ามัน 150 00:07:34,235 --> 00:07:37,654 หมายความว่าคุณดรอปมันใส่อะไรก็ได้ที่คุย MCP 151 00:07:37,654 --> 00:07:40,755 Decodo ให้ rotating IPs (IP หมุนเวียน), 152 00:07:40,755 --> 00:07:44,175 JavaScript rendering และการ retry อัตโนมัติ 153 00:07:44,175 --> 00:07:47,276 คุณยื่นเว็บไซต์ให้มัน ระบุ geo-location 154 00:07:47,276 --> 00:07:50,855 ก็ได้ด้วย agent ของคุณจะใช้ MCP server ของเขา 155 00:07:50,855 --> 00:07:53,797 แล้วได้รับ markdown สะอาด ๆ หรือ JSON 156 00:07:53,797 --> 00:07:57,455 โครงสร้างแล้วเรียบร้อยกลับไป แพ็กเกจฟรีของ web 157 00:07:57,455 --> 00:08:00,875 scraping API ให้ 2,000 credits ใช้ได้เต็มปี 158 00:08:00,875 --> 00:08:02,704 และไม่ต้องใช้บัตรเครดิต 159 00:08:02,704 --> 00:08:06,362 ผมแปะลิงก์ไว้ในคำอธิบายของวิดีโอ และถ้าใช้โค้ด 160 00:08:06,362 --> 00:08:08,429 LEONVANZYL จะได้ส่วนลด 10% 161 00:08:08,429 --> 00:08:11,451 สำหรับแพ็กเกจจ่ายเงินแรก ขอบคุณ Decodo 162 00:08:11,451 --> 00:08:14,950 ที่สนับสนุนวิดีโอนี้ เอาละ กลับเข้าเรื่องกัน 163 00:08:14,950 --> 00:08:18,210 เพื่อเข้าถึง Jev คุณเข้าไปที่ typesafe.ai 164 00:08:18,210 --> 00:08:21,630 แล้วเข้าสู่ระบบ ตอนที่อัดวิดีโอนี้ ต้องเข้า 165 00:08:21,630 --> 00:08:22,725 waitlist อยู่ 166 00:08:22,725 --> 00:08:25,747 พวกเขาเคยเปิดให้ใช้โดยไม่ต้องคิวสักพัก 167 00:08:25,747 --> 00:08:28,927 แต่ดูเหมือนจะกลับมามีคิวอีกแล้ว วิธีข้าม 168 00:08:28,927 --> 00:08:31,870 waitlist คือเข้าไปสมัครที่ OpenRouter 169 00:08:31,870 --> 00:08:35,528 OpenRouter ให้คุณเข้าถึง Jev เวอร์ชันล่าสุดได้ 170 00:08:35,528 --> 00:08:38,470 สำหรับบทเรียนนี้ ผมจะใช้ TypeSafe เอง 171 00:08:38,470 --> 00:08:42,049 แต่ถ้าคุณอยากทำตามแบบ OpenRouter เวลาผมพูดถึง 172 00:08:42,049 --> 00:08:45,468 TypeSafe หรือ TypeSafe API กับ coding agent 173 00:08:45,468 --> 00:08:49,126 คุณแค่พูดถึง Jev ในฐานะ OpenRouter API แทน จาก 174 00:08:49,126 --> 00:08:51,114 dashboard ของ typesafe.ai 175 00:08:51,114 --> 00:08:54,772 มีไม่กี่อย่างที่เราต้องระวังไว้ เมื่อเข้าไปที่ 176 00:08:54,772 --> 00:08:58,112 Playground เราจะเห็นวิธีทำงานของ Jev ชัด ๆ 177 00:08:58,112 --> 00:09:02,406 และอย่างที่ผมบอกไปก่อนหน้า คุณมีสามตัวเลือกหลัก: Null, 178 00:09:02,406 --> 00:09:05,746 Score หรือ Choice มาคลิกดูตัวอย่างหนึ่งตัว 179 00:09:05,746 --> 00:09:09,404 ดูสิ นั่นแหละคือโครงสร้างที่คุณเห็นก่อนหน้านี้ 180 00:09:09,404 --> 00:09:12,505 และเรายังรวมหลายคำถามเข้าด้วยกันได้ด้วย 181 00:09:12,505 --> 00:09:15,607 ไม่จำเป็นต้องเป็น null อย่างเดียว จะผสม 182 00:09:15,607 --> 00:09:18,788 scoring หรือ choice ก็ได้ รวมทั้งหมดเป็น 183 00:09:18,788 --> 00:09:20,298 request เดียวได้เลย 184 00:09:20,298 --> 00:09:23,002 เราจะสลับค่าพวกนี้เป็นค่าจริง เช่น 185 00:09:23,002 --> 00:09:26,501 สถานะปัจจุบันเป็นอะไร แล้วรัน ก็ได้ response 186 00:09:26,501 --> 00:09:27,596 กลับมา 187 00:09:27,596 --> 00:09:30,936 เราจะเห็นเค้าโครงว่าคำตอบจะหน้าตาเป็นยังไง 188 00:09:30,936 --> 00:09:32,606 และพอสลับไป JSON view 189 00:09:32,606 --> 00:09:37,059 จะได้โครงสร้างเชิงเทคนิคที่การันตีว่าจะได้กลับมาทุกครั้ง 190 00:09:37,059 --> 00:09:40,320 ที่ส่ง request นี้ โครงสร้างนี้ถูกการันตี 191 00:09:40,320 --> 00:09:43,739 เพื่อใช้ Jev เราต้องสร้าง API key ไปที่ API 192 00:09:43,739 --> 00:09:47,397 keys แล้วสร้าง key ใหม่ ผมตั้งชื่อว่า tutorial 193 00:09:47,397 --> 00:09:50,737 ก็ได้ และตอนนี้เรามี API key แล้ว ก็อป key 194 00:09:50,737 --> 00:09:53,520 นี้ไปเก็บไว้ที่ปลอดภัย กรุณาใช้ key 195 00:09:53,520 --> 00:09:57,178 ของคุณเองนะครับ ผมจะลบ key นี้ทิ้งหลังอัดเสร็จ 196 00:09:57,178 --> 00:10:00,518 เนื่องจากนี่เป็นบริการเสียเงิน เราต้องเติม 197 00:10:00,518 --> 00:10:04,176 credits ในบัญชี ตอนผมสมัคร ได้รับ free credits 198 00:10:04,176 --> 00:10:06,641 $5 เลยสมมติว่าทุกคนได้เหมือนกัน 199 00:10:06,641 --> 00:10:10,220 และผมยังไม่ได้ใช้สักเท่าไหร่เลย เพราะ request 200 00:10:10,220 --> 00:10:13,560 พวกนี้ถูกมาก สิ่งที่ต้องมีตอนนี้คือ GitHub 201 00:10:13,560 --> 00:10:17,138 repo ที่จะต่อ Jev เข้าไป คุณใช้โค้ดของผมก็ได้ 202 00:10:17,138 --> 00:10:20,796 หรือใช้ repo เดิมของคุณก็ได้ หรือจะ push dummy 203 00:10:20,796 --> 00:10:23,102 repo ใหม่ขึ้น GitHub ก็ยังได้ 204 00:10:23,102 --> 00:10:25,647 อะไรก็ได้ไม่ว่ากัน แค่ไปที่ code 205 00:10:25,647 --> 00:10:28,987 แล้วก็อปคำสั่งตรงนี้ แล้วเปิด coding agent 206 00:10:28,987 --> 00:10:32,645 ของคุณขึ้นมา ผมจะใช้ Claude Code ตั้งเป็น Opus 207 00:10:32,645 --> 00:10:36,223 5.5 และ reasoning effort สูง "โปรด clone repo 208 00:10:36,223 --> 00:10:39,802 นี้ไปที่ root ของโปรเจกต์" แล้วผมก็วาง GitHub 209 00:10:39,802 --> 00:10:43,062 URL ลงไป โอเค ตอนนี้ก็อปไฟล์ทั้งหมดมาแล้ว 210 00:10:43,062 --> 00:10:46,561 มาสร้าง GitHub repo ใหม่กัน ผมสั่งว่า "สร้าง 211 00:10:46,561 --> 00:10:50,219 private GitHub repo ใหม่ให้โปรเจกต์นี้" เยี่ยม 212 00:10:50,219 --> 00:10:52,128 โปรเจกต์ขึ้น GitHub แล้ว 213 00:10:52,128 --> 00:10:55,786 สิ่งที่เราอยากทำตอนนี้คือ เวลาสร้าง issue ใหม่ 214 00:10:55,786 --> 00:10:59,841 เราอยากได้ความสามารถในการติดป้ายกำกับเฉพาะเจาะจงมาก 215 00:10:59,841 --> 00:11:01,591 ๆ ตรงนี้สนุกที่สุดแล้ว 216 00:11:01,591 --> 00:11:03,499 และขึ้นอยู่กับคุณทั้งหมด 217 00:11:03,499 --> 00:11:06,601 จะทำซับซ้อนแค่ไหนก็ได้ตามใจ สำหรับ demo 218 00:11:06,601 --> 00:11:09,861 นี้ผมจะทำแบบเรียบง่ายที่สุด เรามี default 219 00:11:09,861 --> 00:11:12,565 labels อยู่แล้วชุดหนึ่ง อย่าง bug, 220 00:11:12,565 --> 00:11:16,143 documentation และ enhancement เรายังให้ agent 221 00:11:16,143 --> 00:11:19,483 เพิ่ม custom labels ได้อีกด้วย เช่นสั่งว่า 222 00:11:19,483 --> 00:11:22,744 "โปรดเพิ่ม labels เหล่านี้ใน GitHub repo: 223 00:11:22,744 --> 00:11:26,243 หนึ่ง Claude running Fable สอง Codex running 224 00:11:26,243 --> 00:11:29,264 Astra และอาจเพิ่ม Claude running Haiku 225 00:11:29,264 --> 00:11:31,889 สำหรับงานง่าย ๆ " พอ refresh repo 226 00:11:31,889 --> 00:11:34,831 แล้วเข้าไปที่ labels เราจะเห็น labels 227 00:11:34,831 --> 00:11:38,091 ใหม่อยู่ตรงนี้ โอเค สิ่งที่เราอยากให้ Jev 228 00:11:38,091 --> 00:11:41,590 ทำตอนสร้าง issue ใหม่คือ จำแนก issue ว่าเป็น 229 00:11:41,590 --> 00:11:42,685 bug, 230 00:11:42,685 --> 00:11:49,604 documentation หรือ enhancement และมันควรตัดสินด้วยว่าจะส่งงานนี้ให้ agent ตัวไหน จริง ๆ 231 00:11:49,604 --> 00:11:53,977 ถ้าผมทำให้คุณงงว่าเรากำลังทำอะไรอยู่ ผมเจอไดอะแกรมเท่ ๆ 232 00:11:53,977 --> 00:11:57,317 นี้ในหน้าเว็บของ Vercel มันอธิบาย workflow 233 00:11:57,317 --> 00:12:00,816 ที่เรากำลังสร้างพอดี นี่คือ software factory 234 00:12:00,816 --> 00:12:02,407 ที่ Vercel ใช้จริง ๆ 235 00:12:02,407 --> 00:12:06,065 และคล้ายกับที่เรากำลังสร้างมาก เริ่มจากคนสร้าง 236 00:12:06,065 --> 00:12:09,484 issue แล้วมีขั้น identify type ที่เรียก LLM 237 00:12:09,484 --> 00:12:13,063 มาจำแนกว่า issue เป็น bug, ฟีเจอร์ หรือเอกสาร 238 00:12:13,063 --> 00:12:16,403 ในขั้นนี้เรายังทำอย่างอื่นเพิ่มได้อีก เช่น 239 00:12:16,403 --> 00:12:19,822 เลือกว่าจะใช้ agent ประเภทไหนใน agent swarm 240 00:12:19,822 --> 00:12:23,401 ของเรา และเหตุผลที่เราติดป้ายกำกับเหล่านี้คือ 241 00:12:23,401 --> 00:12:26,025 เมื่อ software factory หยิบ issue 242 00:12:26,025 --> 00:12:29,524 นั้นมาประมวลผลจริง มันจะส่ง issue ไปตาม flow 243 00:12:29,524 --> 00:12:32,784 ที่ถูกต้อง มันจะดู labels แล้วคิดว่า "อ๋อ 244 00:12:32,784 --> 00:12:36,283 ถ้าเป็น bug ก็อยากให้ agent ทำซ้ำ error นั้น 245 00:12:36,283 --> 00:12:39,146 แก้ แล้วเทสต์ แล้วสร้าง pull request 246 00:12:39,146 --> 00:12:42,406 หรือถ้าเป็นฟีเจอร์ใหม่ ก็วิเคราะห์ฟีเจอร์ 247 00:12:42,406 --> 00:12:45,667 ดูว่าเข้ากับวิสัยทัศน์ของแอปไหม implement 248 00:12:45,667 --> 00:12:47,893 ฟีเจอร์ รีวิว แล้วค่อย merge 249 00:12:47,893 --> 00:12:51,392 ส่วนการแก้เอกสารนั้นง่ายมาก เราใช้โมเดลถูก ๆ 250 00:12:51,392 --> 00:12:54,414 อย่าง Haiku แก้เอกสารแล้ว merge ได้เลย 251 00:12:54,414 --> 00:12:56,720 เพราะเป็น issue ความเสี่ยงต่ำ 252 00:12:56,720 --> 00:13:00,060 อีกสิ่งที่ผมชอบทำคือติดตั้ง TypeSafe agent 253 00:13:00,060 --> 00:13:03,241 skill นี่คือ skill ทางการจาก TypeSafe AI 254 00:13:03,241 --> 00:13:06,501 มันจะสอน agent วิธีใช้ Jev และ API ของเขา 255 00:13:06,501 --> 00:13:09,682 ผมจะแปะลิงก์ GitHub repo ไว้ใน community 256 00:13:09,682 --> 00:13:13,102 ฟรีด้วย แค่ก็อป URL นี้ แล้วกลับไปที่ agent 257 00:13:13,102 --> 00:13:15,090 ของเรา "โปรดติดตั้ง skill 258 00:13:15,090 --> 00:13:18,589 นี้ในโฟลเดอร์โปรเจกต์" เยี่ยม skill นี้จะสอน 259 00:13:18,589 --> 00:13:20,974 agent ของเราวิธีใช้ Jev จริง ๆ 260 00:13:20,974 --> 00:13:24,155 ดังนั้นเดาได้เลยว่าตอนนี้เราต้องพูดอะไร: 261 00:13:24,155 --> 00:13:27,813 "เมื่อไหร่ก็ตามที่เราเพิ่ม issue ใหม่ใน GitHub 262 00:13:27,813 --> 00:13:30,755 repo ต้องเรียก Jev ผ่าน GitHub Action 263 00:13:30,755 --> 00:13:33,936 ให้ทำดังนี้: หนึ่ง ติดป้าย issue ว่าเป็น 264 00:13:33,936 --> 00:13:35,031 enhancement, 265 00:13:35,031 --> 00:13:39,882 bug หรือการแก้ไขเอกสาร สอง กำหนดป้าย agent เช่น Claude Fable, 266 00:13:39,882 --> 00:13:43,381 Codex Astra หรือ Claude Haiku สำหรับเอเจนต์: 267 00:13:43,381 --> 00:13:46,005 งาน coding ขั้นสูงควรส่งให้ Fable 268 00:13:46,005 --> 00:13:49,584 อะไรที่ต้องใช้ spatial reasoning ให้ใช้ Astra 269 00:13:49,584 --> 00:13:52,844 อย่างงาน 3D animation ในรุ่นนี้ และ Haiku 270 00:13:52,844 --> 00:13:56,502 ใช้สำหรับการแก้เอกสารทั้งหมด เพิ่มคอมเมนต์แสดง 271 00:13:56,502 --> 00:13:59,922 input และ response ของ Jev พร้อม confidence 272 00:13:59,922 --> 00:14:03,341 score ของแต่ละหมวดหมู่" แล้วเราส่ง TypeSafe 273 00:14:03,341 --> 00:14:05,409 API key ให้มัน เท่านี้ก็จบ 274 00:14:05,409 --> 00:14:08,828 ผมส่งข้อความนี้ไปเลย โอเค ผมกำลังให้ Claude 275 00:14:08,828 --> 00:14:11,770 push การเปลี่ยนแปลงทั้งหมดขึ้น GitHub 276 00:14:11,770 --> 00:14:15,269 มาลองเล่นดู ไปสร้าง issue ใหม่กัน ผมพิมพ์ว่า 277 00:14:15,269 --> 00:14:18,768 "add a new emotion: scared" สร้างเลย และแล้ว 278 00:14:18,768 --> 00:14:21,472 เราได้ response กลับมาจาก Jev แล้ว 279 00:14:21,472 --> 00:14:24,892 มันจำแนกว่าเป็น enhancement และสำหรับ agent 280 00:14:24,892 --> 00:14:28,390 จะใช้ Codex Astra เรายังเห็นคอมเมนต์ใหม่ด้วย 281 00:14:28,390 --> 00:14:31,730 ถูกติดป้ายเป็น enhancement ด้วย confidence 282 00:14:31,730 --> 00:14:35,309 score 1 หมายถึง 100% สำหรับ agent เลือก Astra 283 00:14:35,309 --> 00:14:38,490 ด้วย confidence 0.62 คงเพราะ description 284 00:14:38,490 --> 00:14:42,068 คลุมเครือนิดหน่อย เราจัดการยังไงก็ได้ตามใจชอบ 285 00:14:42,068 --> 00:14:45,090 แต่ไม่ว่า Astra หรือ Fable ก็ทำ change 286 00:14:45,090 --> 00:14:48,669 นี้ได้ดีทั้งคู่ ตรงนี้เราเห็น input ที่ส่งให้ 287 00:14:48,669 --> 00:14:52,327 Jev และเห็น response ของ Jev ด้วย ลองดู tokens 288 00:14:52,327 --> 00:14:55,030 ด้วย งานนี้เผาแค่ไม่ถึง 800 tokens 289 00:14:55,030 --> 00:14:57,416 ซึ่งเท่ากับไม่มีอะไรเลย ตอนนี้ 290 00:14:57,416 --> 00:15:00,517 ถ้าอยากต่อยอดอีก คุณต่อ repo นี้เข้ากับ 291 00:15:00,517 --> 00:15:03,539 software factory จริงได้ ขอโชว์ใน repo 292 00:15:03,539 --> 00:15:06,084 อื่นให้ดู นี่คือ repo ของเกม RTS 293 00:15:06,084 --> 00:15:08,788 (วางแผนเรียลไทม์) และผมสร้าง issue 294 00:15:08,788 --> 00:15:12,286 นี้ไว้แค่พูดว่า "ปรับปรุงความหลากหลายของภาพ" 295 00:15:12,286 --> 00:15:15,388 change นี้ถูกส่งให้ Claude และจำแนกเป็น 296 00:15:15,388 --> 00:15:18,966 enhancement และผมตั้ง label ที่เรียกว่า ready 297 00:15:18,966 --> 00:15:22,068 label ready นี้เพิ่งเปลี่ยนเป็น factory 298 00:15:22,068 --> 00:15:25,408 running หมายความว่า agent หนึ่งตัวใน agent 299 00:15:25,408 --> 00:15:27,952 swarm ของผม กำลังทำงานกับ change 300 00:15:27,952 --> 00:15:31,133 นี้อยู่อย่างแข็งขัน และพอ agent นี้เสร็จ 301 00:15:31,133 --> 00:15:34,632 มันจะสร้าง pull request ที่ผมรีวิวแล้ว merge 302 00:15:34,632 --> 00:15:38,131 กลับเข้าโปรเจกต์ได้ ถ้าอยากเรียนรู้วิธีสร้าง 303 00:15:38,131 --> 00:15:39,403 software factory 304 00:15:39,403 --> 00:15:42,187 ผมแปะลิงก์ไว้ในคำอธิบายของวิดีโอนี้ 305 00:15:42,187 --> 00:15:44,652 ถ้าอยากรู้วิธีใช้ coding agents 306 00:15:44,652 --> 00:15:47,753 ให้มีประสิทธิภาพ และสร้างของเท่ ๆ อย่าง 307 00:15:47,753 --> 00:15:50,695 software factory อาจลองเข้าร่วม Skool 308 00:15:50,695 --> 00:15:53,320 community ของผม ชื่อ Agentic Labs 309 00:15:53,320 --> 00:15:56,660 คุณจะได้เข้าถึง Agentic Coding Masterclass 310 00:15:56,660 --> 00:16:00,079 ของผม เป็นชั่วโมงวิดีโอสอนใช้ coding agents 311 00:16:00,079 --> 00:16:03,339 อย่างมีประสิทธิภาพ และสร้างโปรเจกต์จริง ๆ 312 00:16:03,339 --> 00:16:06,838 เรามี live coffee session ที่คุณถามอะไรก็ได้ 313 00:16:06,838 --> 00:16:10,417 และมี deep dive session รายสัปดาห์ อันที่จริง 314 00:16:10,417 --> 00:16:13,518 พฤหัสนี้เราจะ deep dive เรื่อง Jev พอดี 315 00:16:13,518 --> 00:16:17,017 คุณไม่ควรพลาด session นั้นเลยนะ ผมจะแปะลิงก์ 316 00:16:17,017 --> 00:16:20,039 Agentic Labs ไว้ในคำอธิบายของวิดีโอนี้ 317 00:16:20,039 --> 00:16:23,538 ขอบคุณมากที่รับชม แล้วเจอกันคลิปหน้าครับ บาย 318 00:16:23,538 --> 00:16:24,633 บาย