
เปรียบเทียบ AI Coding ฉบับคนเป็น Dev
Introduction
บทความนี้จะไม่ได้เป็นการ Review Agent หรือ ความสามารถของ AI แต่ละตัว แต่จะเน้นไปที่ประสบการณ์ของผู้เขียน และ ความคิดเห็นเป็นส่วนใหญ่ ซึ่งอาจจะไม่ได้รีดประสิทธิภาพของการใช้ Agent ให้ได้ 100% เพราะเป็นการลองผิดลองถูกไปเรื่อย ๆ จนได้เป็น Web App ออกมาซะเป็นส่วนใหญ่
การเปรียบเทียบ AI Coding ที่ทำเหมือนพวก Agentic Coding ได้แล้ว โดยตัวที่จะทดสอบมีดังนี้
- Claude Sonnet 4.5 ใช้งานผ่าน Claude Code
- Google Gemini 3 Pro (low) ใช้งานผ่าน Antigravity
- GLM 4.6 ใช้งานผ่าน Kilo Code
- GLM 4.7 ใช้งานผ่าน Kilo Code
เปรียบเทียบราคา Subscription ที่ใช้งาน
| Subscription | Price |
|---|---|
| Claude Pro | $20/month |
| Google AI Pro | 750 บาท/เดือน |
| GLM Coding Plan Lite | $27/year (Black Friday Promotion) |
ถ้ามองจากราคาจะเห็นว่า GLM Coding Plan ถูกที่สุดและ Claude Pro กับ Google AI Pro มีราคาที่ใกล้เคียงกัน
ค่า API
| LLM | Input | Output | Context Windows |
|---|---|---|---|
| Claude Sonnet 4.5 | $3/M input tokens | $15/M output tokens | 1,000,000 context |
| Gemini 3 Pro | $2/M input tokens | $12/M output tokens | 1,048,576 context |
| GLM 4.6 | $0.39/M input tokens | $1.90/M output tokens | 204,800 context |
| GLM 4.7 | $0.40/M input tokens | $1.50/M output tokens | 202,752 context |
ราคาอ้างอิงจาก OpenRouter
สิ่งที่จะให้ทำและเป็น Challenge ของผู้เขียน
การตั้งค่า Environment Variable ที่เป็นข้อมูลที่ Sensitive จะให้ user เป็นการตั้งเอง
การอนุญาตให้ใช้คำสั่งต่าง ๆ ต้องทำแบบ Manual เท่านั้น ป้องกันการทำคำสั่งแปลก ๆ ที่ส่งผลต่อระบบได้
ใช้ภาษาอังกฤษเสมอ (ซึ่งปกติทำอยู่แล้ว)
Web Application ที่สร้างขึ้นมา
เป็น Web Application ที่ให้ทำการลบลายน้ำ AI Video จาก Sora 2 ซึ่งมี API ที่สามารถทำงานแบบ Local ได้อยู่แล้วซึ่งนำมาจาก https://github.com/linkedlist771/SoraWatermarkCleaner และสิ่งที่ให้ทำเป็นดังนี้
ซึ่งอันนี้เป็น Prompt ตั้งต้น
Create a Sora 2 AI video watermark remover by using these tech stack
Requirements : You have to read entire reuquirements and showing my plan if I accept then you will implement it.
# Front end Tech Stack
- bun as javascript runtime
- Next.JS 16 + Typescript
- Zustand as stage management
- CSS framework : Tailwind CSS + DaisyUI
- axios as http client
- This frontend will be connect with these backend.
- backend will be connect by reading Backend section
# Backend
- This backend will be this and this is reference https://github.com/linkedlist771/SoraWatermarkCleaner
- explore their endpoints and connect with frontend
# User Journey
- When user enter your website user will see a upload video section
- User click "Remove Watermark!" and it will be send to Backend
- Polling to get result
- if success show a removed watermark sora 2 video if failed show a alert modal
แปลให้เข้าใจง่าย ๆ
- มีการกำหนด Tech Stack, Framework ให้ชัดเจน
- มี User Journey ที่เป็นภาพรวมของการใช้งาน
- ใน prompt ยังพอมีให้อิสระในการ design บ้าง
สิ่งที่เจอในทุก ๆ AI
การค้นหาข้อมูลบน internet นั้นไม่สามารถทำได้แบบสำเร็จเลย ตั้งแต่การค้นหาของใน github และดึงออกมาเป็น API เพื่อทำการเชื่อมต่อ หน้าบ้าน กับ หลังบ้าน
วิธีการแก้ปัญหา

{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/api/v1/get_queue_status":{"get":{"summary":"Get Queue Status","operationId":"get_queue_status_api_v1_get_queue_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueStatusResponse"}}}}}}},"/api/v1/submit_remove_task":{"post":{"summary":"Submit Remove Task","operationId":"submit_remove_task_api_v1_submit_remove_task_post","parameters":[{"name":"cleaner_type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/CleanerType","default":"lama"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_remove_task_api_v1_submit_remove_task_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/get_results":{"get":{"summary":"Get Results","operationId":"get_results_api_v1_get_results_get","parameters":[{"name":"remove_task_id","in":"query","required":true,"schema":{"type":"string","title":"Remove Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WMRemoveResults"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/download/{task_id}":{"get":{"summary":"Download Video","operationId":"download_video_api_v1_download__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assets/{asset_path}":{"get":{"summary":"Get Asset","operationId":"get_asset_assets__asset_path__get","parameters":[{"name":"asset_path","in":"path","required":true,"schema":{"type":"string","title":"Asset Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{full_path}":{"get":{"summary":"Spa","operationId":"spa__full_path__get","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_submit_remove_task_api_v1_submit_remove_task_post":{"properties":{"video":{"type":"string","format":"binary","title":"Video"}},"type":"object","required":["video"],"title":"Body_submit_remove_task_api_v1_submit_remove_task_post"},"CleanerType":{"type":"string","enum":["lama","e2fgvi_hq"],"title":"CleanerType"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"QueueStatusResponse":{"properties":{"summary":{"$ref":"#/components/schemas/QueueSummary"},"current_task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Task Id","description":"当前正在运行的任务ID"},"waiting_queue":{"items":{"$ref":"#/components/schemas/QueueTaskInfo"},"type":"array","title":"Waiting Queue","description":"排队中的任务列表"}},"type":"object","required":["summary"],"title":"QueueStatusResponse"},"QueueSummary":{"properties":{"is_busy":{"type":"boolean","title":"Is Busy","description":"当前是否正在处理任务"},"queue_length":{"type":"integer","title":"Queue Length","description":"当前排队等待的任务数量"},"total_active":{"type":"integer","title":"Total Active","description":"活跃任务总数 (进行中 + 排队中)"}},"type":"object","required":["is_busy","queue_length","total_active"],"title":"QueueSummary"},"QueueTaskInfo":{"properties":{"id":{"type":"string","title":"Id"},"status":{"type":"string","title":"Status"},"percentage":{"type":"integer","title":"Percentage"},"video_path":{"type":"string","title":"Video Path"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"任务创建时间"}},"type":"object","required":["id","status","percentage","video_path"],"title":"QueueTaskInfo"},"Status":{"type":"string","enum":["UPLOADING","QUEUED","PROCESSING","FINISHED","ERROR"],"title":"Status"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WMRemoveResults":{"properties":{"percentage":{"type":"integer","title":"Percentage"},"status":{"$ref":"#/components/schemas/Status"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"}},"type":"object","required":["percentage","status"],"title":"WMRemoveResults"}}}}
- เปิด swagger ซึ่งเป็นหน้าคู่มือการใช้งาน API และ export json ออกมาเป็นเป็น spec ให้ AI อ่านแทน ซึ่ง AI มีความเข้าใจทั้งหมด
ทำไมถึงต้อง Plan ก่อนเขียน ทำไมถึงไม่ทำไปสั่ง AI ไป
สาเหตุหลัก ๆ คือ AI ถ้ามีแบบแผน หรือ ขั้นตอนที่ชัดเจน ไม่ได้มีสิ่งที่คลุมเครือ จะทำได้อาการ หลอน มั่วทรงใส่ น้อยลงไปมาก (แต่ก็ยังมีอยู่) แม้จะเปลือง context windows และ usage เป็นจำนวนมาก แลกกับการทำ Task ที่ยาว ๆ ได้
ผลลัพธ์หน้าแรก (หน้า Upload VIdeo )
GLM 4.7

- การเข้าใจการจัด layout ui ยังไม่ค่อยสวยงาม และ ต้องมีการสั่งแก้ เช่น ตัวอักษรล้น
- มีการสร้าง svg ที่ไม่จำเป็นออกมาเช่นปุ่ม information ขวาบน แต่ไม่มี effect ใด ๆ เลย
Claude Sonnet 4.5

- การออกแบบค่อนข้างเรียบง่าย สบายตา แต่ไม่ได้มีสีสันใด ๆ
Gemini 3 Pro (low)

- มี Gradient ที่เป็นสียอดฮิตในการ Vibe Coding
GLM 4.6

- ตอนแรกไม่มี Dark Theme ด้วยซ้ำ ต้องมาทำให้มีด้วยการ plan แล้วทยอยแก้เข้าไป
เมื่อ Upload Video และทำการกดประมวลผล
GLM 4.7

- มี Video Preview, ปุ่มกด และ มี emoji เป็นองค์ประกอบ
Claude Sonnet 4.5

- ค่อนข้าง Plain และ Minimal มาก ๆ
Gemini 3 Pro (low)

- โทนสีม่วงตามสไตล์ Vibe Coding
GLM 4.6

- มี Video Preview ก่อน แต่เรื่องของการเข้าใจ text บน JSX อาจจะยังไม่ดี
ขณะประมวลผล
GLM 4.7

- มีแค่ progress bar ซึ่งแสดง % ถูกต้อง
- การ polling มีการ double ซึ่งให้
Claude Sonnet 4.5

- มีแค่ progress bar ซึ่งแสดง % ถูกต้อง
Gemini 3 Pro (low)

- มีแค่ progress bar ซึ่งแสดง % ถูกต้อง
GLM 4.6

- มี video ขึ้นตลอด และ การดึง API ทำให้หน้าเว็บกระพิบ เพราะ Component มันเหมือนถูกสร้างใหม่ตลอด
เมื่อเสร็จสิ้นการทำงาน
GLM 4.7

- มี Processed Video ที่กดปุ่ม play แต่กด skip หรือกรอไม่ได้
Claude Sonnet 4.5

- มีคลิปเปรียบเทียบ before และ after และสามารถกรอ video ได้ปกติ
Gemini 3 Pro (low)

- มี Processed Video ที่กดปุ่ม play แต่กด skip หรือกรอไม่ได้
GLM 4.6

- มี tab ให้ดู before, after ได้ และมีรายละเอียดครบถ้วน แต่กรอไม่ได้
ประสบการณ์ของการใช้งาน Agentic AI Coding Tools
- ความรู้ใหม่ ๆ เช่น ต้องมีความรู้ใหม่ล่าสุด อันนี้ หลอน มั่วทรง แน่นอน และมีอาการปนมั่วด้วยซ้ำ เช่น TailwindCSS 3 กับ TailwindCSS 4 ซึ่งการแก้ปัญหานี้แก้ได้จากให้ทำการ setup project เอง แล้วใช้ MCP มาช่วย เพื่อให้ AI เข้าใจความรู้ล่าสุดได้
- LLM ตัวเดียวกัน แต่ AI Coding Tools ต่างกัน ก็ได้ผลลัพธ์ต่างกันได้ เพราะว่า System Prompt + Tools ต่าง ๆ ที่มีให้ใช้อาจจะแตกต่างกันได้
- โมเดล GLM ทั้ง 4.6 และ 4.7 ยังมีอาการหลอนที่แก้ไขไม่ได้ เช่น สั่งแก้แต่แก้ไม่ได้จริง หรือ การที่ context windows ขึ้น 1 แสนขึ้นไปจะมีอาการรวนได้
- MCP, Context Engineering สำคัญมาก และ การรู้ว่าจะแก้ปัญหายังไง จะช่วยทำให้การแก้ไข code ได้ง่ายขึ้นโดยไม่ต้องลงมือทำ
- ติด CORS -> ซึ่งการแก้ CORS นั้นถ้า API นั้นไม่ได้เรียกผ่าน Browser โดยตรงก็จะไม่มีปัญหา ซึ่งการแก้คือ ต้องให้เรียกผ่าน API Route ของ NextJS อีกทีเพื่อทำให้เรียก API SoraWatermarkCleaner ได้โดยไม่ติด CORS โดยการ implement แรก ๆ จะทำแบบเรียกโดยตรงแล้วติด CORS
วิธีที่จะช่วยทำให้การใช้งาน AI Coding ทำงานได้ดีขึ้น
- การขึ้น Project เราอาจจะให้คุยกับ AI ที่เก่งมาก ๆ เช่น Claude Opus 4.5, GPT 5.2 เป็นต้น เพื่อให้มันสร้าง plan ขึ้นมาจาก prompt ของเรา
- เมื่อขึ้น Project เสร็จแล้ว ใส่ Feature ระดับนึงให้บันทึกการทำงานและสร้าง context overview ผ่าน markdown 1 file เสมอ และ หมั่น update overview ก่อนจบการ AI Coding
- อย่าให้มันทำทีเดียว ให้ค่อย ๆ ทำทีละส่วน หาก Project นั้นมีความซับซ้อน
- การแยก context ให้กับแต่ละ feature นั้นจะช่วยลด context windows ไปได้มหาศาล ซึ่งถ้าเป็น claude code จะใส่เป็น skill ได้
- ถ้าเข้าใจพื้นฐานในการออกแบบระบบต่าง ๆ ตั้งแต่ต้นจนปลาย จะช่วยทำให้การทำ AI Coding ทำง่ายขึ้นมาก
- ถ้าปัญหานั้นใหญ่พอ แนะนำให้ Plan ก่อนเริ่ม Code เสมอ
มี MCP เฉพาะทาง แล้วจะช่วยอะไรได้บ้าง
- ลดความผิดพลาดในการเขียน code ที่ปนระหว่างความรู้เก่าที่ล้าสมัยไปแล้ว กับ ความรู้ใหม่ที่พึ่งมี แต่ต้องมีการทำ context เรื่องการเรียก MCP ไว้ก่อนก็จะดีมาก
- ปัจจุบัน MCP มีให้ใช้เกือบทุก Agentic Coding แล้ว เลยทำให้เลือก AI Coding Tools ตามใจชอบได้เลย
ถ้า AI Coding ให้ผลลัพธ์ได้ใกล้เคียงกันแล้ว จะเลือกตัวไหนดี
- สำหรับผมยังคงเลือก Claude Code + Claude 4.5 Sonnet เพราะว่ามีการใช้งานเป็นทีม มี MCP และ ฟีเจอร์ที่ทำให้บริหาร context ได้แบบมีประสิทธิภาพ
- ถ้าเน้นความคุ้มค่า ถ้า code อย่างเดียวเลือก GLM 4.7 แต่มี Trade Off ตรงที่ไม่มี Vision ทำให้การใช้งาน reference อาจจะยากต่อการ vibe coding ได้
Source Code ที่ทำการทดสอบ Vibe Coding ทั้งหมด
- Claude 4.5 Sonnet - https://github.com/vjumpkung/vjump-sora-2-watermark-remover-app-claude
- Gemini 3 Pro - https://github.com/vjumpkung/vjump-sora-2-watermark-remover-app-gemini
- GLM 4.6 - https://github.com/vjumpkung/vjump-sora-2-watermark-remover-app-glm-4-6
- GLM 4.7 - https://github.com/vjumpkung/vjump-sora-2-watermark-remover-app-glm-4-7
บทส่งท้าย
อย่าลืมป้องกันการอ่าน หรือ เขียน ENVIRONMENT VARIABLE เช่น .env หรือ ข้อมูลที่ sensitive ใด ๆ ก่อนทำการ AI Coding กันนะครับ และ การ execute คำสั่งใด ๆ ให้ถามเราก่อนทุกครั้ง
