logo
เปรียบเทียบ AI Coding ฉบับคนเป็น Dev

เปรียบเทียบ 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 ที่ใช้งาน

SubscriptionPrice
Claude Pro$20/month
Google AI Pro750 บาท/เดือน
GLM Coding Plan Lite$27/year (Black Friday Promotion)

ถ้ามองจากราคาจะเห็นว่า GLM Coding Plan ถูกที่สุดและ Claude Pro กับ Google AI Pro มีราคาที่ใกล้เคียงกัน

ค่า API

LLMInputOutputContext Windows
Claude Sonnet 4.5$3/M input tokens$15/M output tokens1,000,000 context
Gemini 3 Pro$2/M input tokens$12/M output tokens1,048,576 context
GLM 4.6$0.39/M input tokens$1.90/M output tokens204,800 context
GLM 4.7$0.40/M input tokens$1.50/M output tokens202,752 context

ราคาอ้างอิงจาก OpenRouter

สิ่งที่จะให้ทำและเป็น Challenge ของผู้เขียน

  1. การตั้งค่า Environment Variable ที่เป็นข้อมูลที่ Sensitive จะให้ user เป็นการตั้งเอง

  2. การอนุญาตให้ใช้คำสั่งต่าง ๆ ต้องทำแบบ Manual เท่านั้น ป้องกันการทำคำสั่งแปลก ๆ ที่ส่งผลต่อระบบได้

  3. ใช้ภาษาอังกฤษเสมอ (ซึ่งปกติทำอยู่แล้ว)

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 ทั้งหมด

บทส่งท้าย

อย่าลืมป้องกันการอ่าน หรือ เขียน ENVIRONMENT VARIABLE เช่น .env หรือ ข้อมูลที่ sensitive ใด ๆ ก่อนทำการ AI Coding กันนะครับ และ การ execute คำสั่งใด ๆ ให้ถามเราก่อนทุกครั้ง