15 ก.ย. 2026 บริษัท TypeSafe AI (ก่อตั้งโดยอดีตนักวิจัย OpenAI) เปิดตัวโมเดลชื่อ Jev พร้อมคำโฆษณาแรงๆ: “เร็วกว่า LLM 40–200 เท่า” “ถูกกว่า 100 เท่า” และ “hallucinate ไม่ได้” ภายใน 4 วัน GitHub มีโปรเจกต์ทำเลียนแบบเปิดโค้ดหลายสิบตัว บางตัวอ้างว่าเทียบเท่า Jev ได้ด้วยโมเดลขนาด 150 ล้านพารามิเตอร์ที่เทรนบน Colab ฟรี 30 นาที บทความนี้จะอธิบายว่า Jev คืออะไรจริงๆ ทำไมมันเร็วขนาดนั้น คำว่า “hallucinate ไม่ได้” หมายความว่าอะไรกันแน่ แล้วไล่ดูวิธีทำเลียนแบบทั้ง 3 ท่าที่ชุมชนใช้ พร้อมข้อสรุปว่าอันไหนเอามาใช้บนเครื่องของเราได้เลยวันนี้
ตอนที่ 1: LLM ทำงานยังไง (ทวนสั้นๆ เพื่อให้เห็นว่า Jev ต่างตรงไหน)
โมเดลภาษาที่เราใช้กันทุกวัน (Qwen, DeepSeek, Claude, GPT) ทำงานแบบ autoregressive แปลว่า “ผลิตทีละคำ โดยเอาคำที่เพิ่งผลิตไปเป็นอินพุตของรอบถัดไป”
ลองนึกภาพเราถามว่า “ข้อความนี้เป็นสแปมไหม” โมเดลจะทำแบบนี้:
- อ่านทั้ง prompt หนึ่งรอบ (เรียกว่า prefill) — ขั้นนี้เร็ว เพราะทุกคำถูกประมวลผลพร้อมกันขนานได้
- ผลิตคำตอบทีละ token: “ข้อ” → “ความ” → “นี้” → “เป็น” → “สแปม” → “ครับ” (เรียกว่า decode) — ขั้นนี้ช้า เพราะแต่ละ token ต้องรอ token ก่อนหน้า และแต่ละรอบต้องอ่านน้ำหนักทั้งโมเดลจากหน่วยความจำอีกครั้ง
ถ้าโมเดล 27B ตอบ 30 token บนเครื่อง DGX Spark ก็ประมาณ 1.5–2 วินาที ทั้งที่ข้อมูลที่เราต้องการจริงๆ คือ บิตเดียว: ใช่ หรือ ไม่ใช่
แล้วยังมีปัญหาซ้อน: คำตอบเป็นข้อความอิสระ โมเดลอาจตอบว่า “น่าจะเป็นสแปมนะครับ แต่ไม่แน่ใจ” แล้วโปรแกรมเราต้องมาแกะเอาเองว่าตกลงใช่หรือไม่ใช่ ถ้าโมเดลตอบนอกรูปแบบ โปรแกรมพัง นี่คือสิ่งที่นักพัฒนาเจอทุกวันเวลาเอา LLM มาใส่ในซอฟต์แวร์
ตอนที่ 2: Jev คืออะไร
TypeSafe เรียก Jev ว่า System One Model ยืมคำจากหนังสือ Thinking, Fast and Slow ของ Kahneman: System 1 คือความคิดแบบเร็ว อัตโนมัติ ไม่ต้องไตร่ตรอง (เห็นหน้าคนแล้วรู้ว่าโกรธ) ส่วน System 2 คือคิดช้าๆ เป็นขั้นตอน (คูณเลขสามหลัก) LLM ปกติคือ System 2 ส่วน Jev ตั้งใจเป็น System 1
สิ่งที่ Jev รับและตอบต่างจาก LLM ตรงนี้:
อินพุต = “state” (ข้อความอะไรก็ได้ที่บรรยายสถานการณ์ เช่น อีเมลหนึ่งฉบับ, ประวัติแชต, สถานะเกม) + รายการคำถามแบบมี type ซึ่งมีแค่ 3 ชนิด:
| ชนิด | ตัวอย่าง | สิ่งที่ได้กลับ |
|---|---|---|
| ใช่/ไม่ใช่ (TypeSafe เรียก “noul”) | “อีเมลนี้เป็นสแปมไหม” | ความน่าจะเป็น เช่น 0.93 |
| เลือกจากตัวเลือก (choice) | “เรื่องนี้เป็นหมวด: บิล / เทคนิค / ยกเลิก / อื่นๆ” | ความน่าจะเป็นของแต่ละตัวเลือก |
| คะแนน (score) | “ความเร่งด่วน 1–5” | การกระจายความน่าจะเป็นบนสเกล |
เอาต์พุต = คำตอบของ ทุกคำถามพร้อมกันใน forward pass เดียว ไม่มีการผลิตข้อความเลย โมเดลไม่เคย “พูด” มันแค่ “ชี้”
เพราะฉะนั้น 3 คำโฆษณาจึงมีที่มา:
- “เร็ว 40–200 เท่า” เพราะมีแต่ขั้น prefill (ขั้นที่ขนานได้) ไม่มีขั้น decode ที่ต้องวนทีละ token ถ้าถาม 20 คำถามกับ state เดียวกัน ก็ยังเป็น pass เดียว
- “ถูก 100 เท่า” เพราะคิดเงินเฉพาะ input token ($0.042 ต่อล้าน token) ส่วน output ฟรี เพราะไม่มี output token
- “hallucinate ไม่ได้” เพราะโมเดลเลือกได้เฉพาะตัวเลือกที่เรากำหนด มันตอบ “หมวด: ค้างคาว” ไม่ได้ถ้าเราไม่ได้ให้ตัวเลือกนั้น และไม่มีทางตอบผิดรูปแบบ (type error) — แต่ มันยังเลือกผิดได้ตามปกติ คำว่า hallucinate ไม่ได้ในที่นี้จึงหมายถึง “ผิดรูปแบบไม่ได้” ไม่ใช่ “ตัดสินใจถูกเสมอ” อันนี้ต้องอ่านโฆษณาให้ขาด
อีกจุดที่ TypeSafe เน้นมากคือ calibration: ถ้า Jev บอกว่า 0.80 ของที่มันบอก 0.80 ควรถูกจริงราว 80% ไม่ใช่โมเดลมั่นใจเกินจริงแบบ LLM ทั่วไปที่ตอบว่า “แน่นอน!” ทั้งที่ผิด เขาบอกว่าเทรนด้วยวิธีที่เรียกว่า RLCD (Reinforcement Learning for Calibrated Decisions) รายละเอียดไม่เปิดเผย
ข้อจำกัดใหญ่: Jev เป็นโมเดลปิด ใช้ผ่าน API ของ TypeSafe เท่านั้น ไม่มี weights ให้โหลด รันในเครื่องตัวเองไม่ได้ และตอนนี้ยังต้องต่อคิว waitlist
ตอนที่ 3: ทำไมเรื่องนี้น่าสนใจ (แม้จะไม่ได้ใช้ Jev)
เพราะงาน AI ในซอฟต์แวร์จริงส่วนใหญ่ ไม่ใช่การแชต แต่เป็นการตัดสินใจเล็กๆ จำนวนมาก:
- คัดแยกอีเมล/ตั๋วซัพพอร์ตเข้าหมวด
- ให้คะแนนความเสี่ยงของธุรกรรม
- ตัดสินว่าคำขอนี้ควรส่งให้โมเดลใหญ่ (แพง) หรือโมเดลเล็ก (ถูก) — นี่คือ routing
- ตรวจว่าคำตอบที่ AI อีกตัวสร้างมา ปลอดภัย/ตรงประเด็นไหม (guardrail)
- ในเกมหรือ agent: ตัดสินใจก้าวถัดไปจากสถานะปัจจุบัน
งานพวกนี้ถ้าใช้ LLM ตอบเป็นข้อความ ทั้งช้า ทั้งแพง ทั้งต้องแกะข้อความ Jev เลยเสนอว่า “แยกโมเดลสำหรับตัดสินใจออกจากโมเดลสำหรับพูด” ซึ่งเป็นแนวคิดที่ดี ไม่ว่า Jev เองจะเก่งจริงหรือไม่
และคำถามที่ชุมชนถามทันทีคือ: แนวคิดนี้ต้องมีโมเดลลับพิเศษจริงหรือ หรือทำได้จากของที่มีอยู่แล้ว? คำตอบคือทำได้ และมี 3 วิธี
ตอนที่ 4: วิธีที่ 1 — ใช้ LLM ที่มีอยู่แล้ว แต่ไม่ให้มันพูด (prompt-logprob)
นี่คือวิธีที่ฉลาดที่สุดและไม่ต้องเทรนอะไรเลย หลักการมีแค่นี้:
ตอน LLM ทำขั้น prefill มันคำนวณ การกระจายความน่าจะเป็นของ “token ถัดไป” ที่ทุกตำแหน่ง อยู่แล้ว ปกติเราใช้แค่ตำแหน่งสุดท้ายเพื่อผลิตคำต่อไป แต่จริงๆ ตำแหน่งอื่นก็มีค่าเหล่านี้ทั้งหมด แค่เราไม่เคยดู
วิธีทำ (ตามโปรเจกต์ open-alternative-jev ซึ่งเป็นตัวที่ทำได้เรียบร้อยที่สุด):
- เขียน state ไว้ข้างบน
- ต่อท้ายด้วยคำถามทุกข้อในรูปแบบ “คำถาม: … ตัวเลือก: A) … B) … C) … คำตอบ: X” โดยที่ X เป็น ตัวอักษรหลอก (placeholder) แล้วต่อคำถามถัดไปทันที
- ส่งทั้งก้อนเข้าโมเดล หนึ่งครั้ง ในโหมด prefill
- ที่ตำแหน่งของ X แต่ละตัว ไปอ่านค่า logit ของ token “A” “B” “C” แล้วทำ softmax เฉพาะตัวเลือกเหล่านั้น → ได้ความน่าจะเป็นของแต่ละตัวเลือกทันที
ทำไมถึงถูกต้อง: เพราะโมเดลตอนอยู่ที่ตำแหน่ง X ของคำถามข้อ 1 มันเห็น state และคำถามข้อ 1 ครบแล้ว การกระจายของ token ถัดไปที่ตำแหน่งนั้นก็คือ “ถ้าให้ตอบ จะตอบอะไร” นั่นเอง ส่วนคำถามข้อ 2 ที่ต่อท้าย ก็อ่านที่ตำแหน่ง X ตัวที่ 2 (ค่าหลอกที่เราใส่ในข้อ 1 อาจรบกวนข้อ 2 นิดหน่อย โปรเจกต์นี้วัดแล้วว่าน้อยมาก)
ผลที่เขาวัดได้ด้วย Qwen3.6-27B (8-bit) และ Qwen3.5-4B:
| ชุดทดสอบ | ความแม่น | ความเร็ว |
|---|---|---|
| RACE-H (อ่านจับใจความ 1,000 ข้อ state เดียวกัน) | 92.9% | 4.6 คำถาม/วินาที |
| MMLU (1,200 ข้ออิสระ แพ็กรวมกัน) | 84.2% | 6.7 คำถาม/วินาที |
และเรื่อง calibration ใช้เทคนิคเก่าแก่ชื่อ temperature scaling: เอาชุดข้อมูลที่รู้เฉลยมาปรับตัวเลขตัวเดียว (อุณหภูมิ) ให้ความมั่นใจของโมเดลตรงกับความถูกจริง ผลคือ ECE (ค่าที่บอกว่าความมั่นใจ “โกหก” แค่ไหน) ลดจาก 5.4% เหลือ 2.1%
ข้อดี: ใช้โมเดลอะไรก็ได้ที่มี (Qwen, Gemma, Llama) รองรับ vLLM ผ่านฟีเจอร์ prompt_logprobs ที่มีอยู่แล้ว ไม่ต้องเทรน ได้ความรู้ทั่วไปของ LLM เต็มๆ (zero-shot)
ข้อจำกัด: ยังต้องรัน LLM ทั้งตัวหนึ่งรอบ (แต่เป็น prefill ซึ่งเร็ว) ตัวเลือกต้องแทนด้วย token สั้นๆ ที่โมเดลมองเป็นหน่วยเดียว (A/B/C ทำงานดีกว่าคำเต็มยาวๆ) และคำถามหลายข้อในก้อนเดียวรบกวนกันได้เล็กน้อย
โปรเจกต์ตระกูลนี้: ikermoel/open-alternative-jev (pip ชื่อ so1), Abhi001vj/system-one-open, ekzhang/openjev-sglang (ใช้ SGLang แบบ prefill อย่างเดียว), bnsd55/openjev (Apple Silicon/MLX)
ตอนที่ 5: วิธีที่ 2 — โมเดลจิ๋ว + หัวให้คะแนน (เทรนเอง)
วิธีนี้ใกล้เคียง “สร้าง Jev ของตัวเอง” ที่สุด และเป็นกลุ่มที่ใช้ Gemma กันมาก:
- เอาโมเดลเล็กมาก เช่น Gemma 3 270M (270 ล้านพารามิเตอร์ ไฟล์ไม่ถึง 1 GB รันบน CPU ได้) หรือ encoder แบบ ModernBERT ขนาด ~150M
- ต่อ “หัวให้คะแนน” (scoring head) เป็นชั้น linear เล็กๆ ที่รับ hidden state ของ token สุดท้ายแล้วออกเป็นตัวเลขหนึ่งค่า
- ต่อ state + คำถาม + ตัวเลือกแต่ละตัวเป็นข้อความ ป้อนเข้าโมเดล ได้คะแนนต่อตัวเลือก แล้ว softmax
- เทรน head (และ LoRA ของโมเดลนิดหน่อย) ด้วยชุดข้อมูลหลาย task ที่มีเฉลย แล้ว calibrate ด้วย temperature scaling
ตัวอย่างจริง:
akash-kamat/system-one-gemma: Gemma 3 270M + LoRA rank 16 (พารามิเตอร์ที่เทรนแค่ 2.6 ล้าน) เทรนบน 12,913 ข้อ 6 งาน (จัดหมวดธนาคาร, อารมณ์, หัวข้อข่าว, MMLU, คะแนนรีวิว, routing ตั๋ว) ได้ ~50 ms ต่อการตัดสินใจ, ความแม่นรวม 64.4%, ECE 0.047intikhab49/open-jev-typed-decision-engine: encoder 150M เทรนบน Colab T4 ฟรี 30 นาที อ้างคะแนน 0.697 เทียบ Jev 0.727 บน benchmark ที่ทำขึ้นเอง และ calibrate ดีกว่า 2.5 เท่าHeman10x-NGU/openJev-verdict-2.0: ModernBERT 151M ได้ 77% acc, ECE 0.014 มี playground รันในเบราว์เซอร์ผ่าน WebGPUwfzyx/von: ต่ำกว่า 15 ms และทำ HTTP API ให้เข้ากับ Jev ตรงตัว (ใช้ SDK ของ TypeSafe ชี้มาได้เลย)- Laya: เทรนด้วยวิธีเลียน RLCD ตอบใน ~35 ms
ข้อดี: เร็วที่สุด ถูกที่สุด รันได้แม้บน CPU หรือในเบราว์เซอร์ เหมาะกับงานปริมาณมหาศาลที่โจทย์ตายตัว ข้อจำกัด: แม่นเฉพาะงานที่คล้ายชุดเทรน ความแม่น zero-shot ต่ำกว่า LLM ใหญ่มาก (64–77% กับ 84–93% ของวิธีที่ 1) และหลายตัวมีเงื่อนไขสัญญาอนุญาตของชุดข้อมูลเทรนติดมา (เช่น ใช้เชิงพาณิชย์ไม่ได้)
ที่น่าสังเกต: ไม่พบโปรเจกต์ที่ใช้ Nemotron เป็นฐาน ในกลุ่มนี้เลย ที่นิยมคือ Gemma 270M, Gemma 4 E2B, Qwen เล็ก และ ModernBERT
ตอนที่ 6: วิธีที่ 3 — ใช้โมเดล diffusion แทน (structured read)
วิธีนี้ต่างจากสองวิธีแรกตรงตัวโมเดล: ใช้ DiffusionGemma 26B-A4B ของ Google (Apache-2.0) ซึ่งเป็น LLM แบบ discrete diffusion — แทนที่จะผลิตข้อความซ้ายไปขวา มันเริ่มจาก “ผืนผ้าใบ” ที่เต็มไปด้วย token สุ่ม แล้ว “ลบ noise” ทั้งผืนพร้อมกันหลายรอบจนกลายเป็นข้อความ
โปรเจกต์ razorback16/openjev ใช้คุณสมบัตินี้อย่างชาญฉลาด:
- เขียนแม่แบบคำตอบเช่น “สแปม: [ช่องว่าง] หมวด: [ช่องว่าง] เร่งด่วน: [ช่องว่าง]” โดยช่องว่างคือ token noise
- ให้โมเดล denoise แค่ 1 รอบ
- อ่านการกระจายความน่าจะเป็นที่แต่ละช่องว่าง → ได้คำตอบทุกข้อพร้อมกัน
เพราะ diffusion model มองทั้งผืนผ้าใบด้วย attention สองทิศทาง ทุกช่องจึงเห็นทั้ง state และคำถามอื่นพร้อมกัน ไม่มีปัญหาคำถามข้อแรกรบกวนข้อหลังแบบวิธีที่ 1
ผลที่วัดบน RTX PRO 6000: 94 ms ต่อคำขอ (3 คำถาม) ที่ 1 ผู้ใช้ และ 57 คำขอ/วินาทีเมื่อ 64 ผู้ใช้พร้อมกัน API เข้ากันกับ Jev ตรงตัว (POST /v1/systemone) รับรูปภาพได้ถึง 8 ใบด้วย
ข้อดี: ได้ความรู้ระดับโมเดล 26B (แต่ active แค่ 3.8B เพราะเป็น MoE) รองรับ 35+ ภาษา รับภาพ ข้อจำกัด: ต้องมี VRAM 24 GB ขึ้นไป และต้องใช้ vLLM ที่แก้ให้รองรับ “structured read” (ยังไม่ใช่ของมาตรฐาน)
ตอนที่ 7: เทียบ 3 วิธี
| วิธีที่ 1 prompt-logprob | วิธีที่ 2 โมเดลจิ๋ว+head | วิธีที่ 3 diffusion | |
|---|---|---|---|
| ต้องเทรนไหม | ไม่ | ต้อง (30 นาที–ชั่วโมง) | ไม่ |
| ความรู้ทั่วไป (zero-shot) | สูง (ตามโมเดลที่ใช้) | ต่ำ | สูง |
| ความเร็ว/การตัดสินใจ | ~150–250 ms (27B บน GPU เดี่ยว) | 15–50 ms (CPU ได้) | ~100 ms |
| ฮาร์ดแวร์ | GPU ที่รัน LLM ตัวนั้นได้ | อะไรก็ได้ | VRAM ≥24 GB |
| ภาษาไทย | ตามโมเดลฐาน (Qwen ทำได้) | ต้องเทรนด้วยข้อมูลไทย | DiffusionGemma อ้าง 35+ ภาษา |
| ใช้บน DGX Spark ได้เลย | ได้ (vLLM มี prompt_logprobs) | ได้ | น่าจะได้ ต้องเทส |
ตอนที่ 8: บทเรียนและสิ่งที่เราจะทำต่อ
- “hallucinate ไม่ได้” = บังคับรูปแบบคำตอบ ไม่ใช่รับประกันความถูก ทุกวิธีข้างบนให้คุณสมบัตินี้เหมือน Jev เพราะแก่นคือ “อ่านความน่าจะเป็นเฉพาะตัวเลือกที่กำหนด” ไม่ได้อยู่ที่โมเดลลับ
- ความเร็วมาจากการตัดขั้น decode ไม่ใช่จากสถาปัตยกรรมพิเศษ LLM ที่คุณมีอยู่แล้วก็ทำได้ทันทีถ้าใช้ให้เป็น
- calibration คือของจริงที่ต้องลงแรง temperature scaling ง่ายและได้ผล แต่ต้องมีชุดข้อมูลที่มีเฉลยในโดเมนและภาษาของเรา ถ้าอยากใช้กับภาษาไทย ต้อง calibrate ด้วยข้อมูลไทย
- สำหรับเครื่อง DGX Spark ที่รัน AI Server Suite: วิธีที่ 1 ทำได้ทันทีกับโมเดลที่โหลดอยู่แล้วผ่าน vLLM แนวคิดคือเพิ่ม endpoint แบบ “ส่ง state + คำถาม → ได้ความน่าจะเป็น” ไว้ในเครื่อง ใช้คัดแยก/ให้คะแนน/ตัดสินใจก่อนส่งงานให้โมเดลใหญ่ ซึ่งเป็นหัวใจของเรื่อง routing ที่เราสอนในคอร์ส
- ของแถมที่น่าตื่นเต้นไม่แพ้กันคือ DiffusionGemma 26B-A4B เอง: โมเดลเปิดที่ผลิตข้อความเร็วกว่า 1,000 token/วินาทีบน H100 รองรับหลายภาษาและรับภาพ ถ้ารันบน GB10 ได้ดี จะเปลี่ยนโจทย์ “โมเดลเล็กที่เร็ว” ไปอีกแบบ เราจะเทสและมาเล่าให้ฟัง
สรุปประโยคเดียว: Jev พิสูจน์ว่าตลาดต้องการ “AI ที่ตัดสินใจ ไม่ใช่ AI ที่พูด” และชุมชนพิสูจน์ภายใน 4 วันว่าสิ่งนั้นสร้างได้จากโมเดลเปิดที่มีอยู่แล้ว — โมเดลลับไม่ใช่ส่วนที่สำคัญที่สุดของไอเดียนี้
แหล่งอ้างอิง: TypeSafe AI blog “Introducing System One Models & Jev” · latent.space AINews (Jev) · GitHub: ikermoel/open-alternative-jev, akash-kamat/system-one-gemma, intikhab49/open-jev-typed-decision-engine, razorback16/openjev, wfzyx/von, Heman10x-NGU/openJev-verdict-2.0 · Hugging Face Space multimodalart/jev-reproductions-tracker · Hugging Face google/diffusiongemma-26B-A4B-it