Knowledge Hub

ตัดสินใจ 5 จุดใน coding agent ด้วยโมเดลเล็ก

เทิร์นส่วนใหญ่ของ coding agent เป็นการตัดสินใจที่มีคำตอบแค่ไม่กี่แบบ ไม่ใช่การเขียนโค้ด ถ้าแยก 5 จุดนี้ออกมาเป็นคำถามแบบมีชนิดคำตอบ (Score, Choice, Noul) แล้วถามโมเดลเล็กที่เห็นแค่สถานะที่ตัดมาแล้ว ต้นทุนต่อการตัดสินใจในตัวอย่างตกจาก $0.130 เหลือ $0.0001

AI Agentsอ่าน 11 นาทีเผยแพร่ 14 ตุลาคม 2569

แก่นของเรื่อง

แนวคิดหลัก. ใน coding agent มีสถานีเดียวที่เขียนโค้ดจริง อีกห้าจุดเป็นการตัดสินใจที่ตอบได้ด้วยตัวเลือกจำนวนน้อย: อ่านไฟล์ไหน ส่งงานให้โมเดลระดับไหน คำสั่งนี้รันได้ไหม งานเสร็จหรือยัง และผลลัพธ์ของ tool ตัวไหนควรเก็บไว้ ถ้าให้โมเดลใหญ่ตัวเดียวตอบทั้งหมดในบริบทยาว ก็จ่ายราคาแพงเพื่อเลือกข้อหนึ่งจากสี่ข้อ

ทำไมถึงได้ผล. ต้นทุนของการเรียกโมเดลคือขนาดบริบทที่ต้องอ่านซ้ำคูณราคาต่อโทเคน การตัดสินใจที่ตัดสถานะให้เล็กลงก่อน (เฉพาะส่วนที่เกี่ยวกับคำถามนั้น) แล้วส่งให้โมเดลเล็กจึงถูกลงทั้งสองตัวคูณ นอกจากนี้ชนิดของคำตอบถูกกำหนดไว้ล่วงหน้า (ให้คะแนน เลือก 1 ใน N หรือตอบแบบใช่/ไม่ใช่) ระบบจึงไม่ต้องแกะคำตอบจากร้อยแก้วกลับมาเป็นค่าที่ใช้ต่อได้

20% ที่สำคัญที่สุดในทางปฏิบัติ (ตีความ ไม่ได้ระบุในภาพ):

ลำดับ จุด เหตุผล
ทำก่อน "รันได้ไหม" (ลบไฟล์, ใช้เครือข่าย, เขียนประวัติ git ใหม่) พลาดแล้วย้อนไม่ได้ ภาพไฮไลต์ประโยคเกี่ยวกับจุดนี้ไว้ด้วย
ทำต่อ "ใช้โมเดลระดับไหน" ลดต้นทุนทุกขั้นที่ตามมา
รอได้ "เก็บหรือทิ้ง" ผลลัพธ์ของ tool สำคัญเมื่อรันนานเท่านั้น

ช่วยให้ดีขึ้นอย่างไร

สถานการณ์ ไม่ใช้วิธีนี้ ใช้วิธีนี้ วัดอย่างไร หลักฐาน
ต้นทุนต่อการตัดสินใจ 1 ครั้ง $0.130 (โมเดลใหญ่, cache ติด) $0.0001 ดอลลาร์ต่อครั้ง ตามตารางราคาในภาพ ค่าหลังปัดเศษ วัดแล้ว (ตัวเลขจากภาพ ยังไม่ยืนยันกับผู้ให้บริการ)
ต้นทุนต่อเดือน $1,716 $1 ดอลลาร์ต่อเดือน วัดแล้ว (ตัวเลขจากภาพ)
ต้นทุนต่อเดือน เมื่อโมเดลใหญ่ cache พลาด (prefix เปลี่ยน) $15,972 $1 ดอลลาร์ต่อเดือน วัดแล้ว (ตัวเลขจากภาพ)
ความถูกต้องของคำตอบ โมเดลใหญ่ตอบ โมเดลเล็กตอบ อัตราตรงกันของคำตอบกับโมเดลใหญ่ ยังไม่ทดสอบ (ภาพไม่มีตัวเลขความแม่นยำ)
โอกาสรันคำสั่งทำลายข้อมูลโดยไม่มีคนเห็น ขึ้นกับว่าโมเดลเขียนคำเตือนไว้หรือไม่ มีจุดตรวจเฉพาะ ถ้าย้อนไม่ได้ต้องรอคนอนุมัติ จำนวนคำสั่งทำลายที่ผ่านโดยไม่ผ่านจุดตรวจ ตีความ
เวลารอต่อการตัดสินใจ ไม่ระบุ ไม่ระบุ วินาทีต่อครั้ง ยังไม่ทดสอบ

ข้อสังเกต: ตัวเลขที่วัดได้ในภาพมีแต่ต้นทุน ไม่มีตัวเลขที่บอกว่าคุณภาพของการตัดสินใจเท่าเดิม ตัวเลข $1 ต่อเดือนจึงบอกได้แค่ว่า "ถ้าคำตอบใช้ได้ ราคาเป็นเท่านี้"

ลองใช้

คำนวณซ้ำตารางต้นทุน

ราคาในภาพ (ต่อล้านโทเคน): โมเดลใหญ่ input $10, cached input $1, output $50 ส่วน Jev input $0.042 ภาพระบุบริบท 120,000 โทเคนต่อการเรียกโมเดลใหญ่ ส่วน output ประมาณ 200 โทเคน ภาพไม่ได้ระบุไว้ ตัวเลขนี้คำนวณย้อนจากตาราง (ตีความ)

ขั้นคำนวณ cache ติด cache พลาด
อ่านบริบท 120,000 โทเคน 120,000 x $1 / 1,000,000 = $0.12 120,000 x $10 / 1,000,000 = $1.20
output 200 โทเคน 200 x $50 / 1,000,000 = $0.01 $0.01
ต่อการตัดสินใจ 1 ครั้ง $0.13 $1.21
x 15 ครั้งต่อเซสชัน $1.95 $18.15
x 880 เซสชันต่อเดือน $1,716 $15,972

ตัวเลข 15 ครั้งและ 880 เซสชัน ภาพไม่ได้ระบุ แต่เป็นค่าที่ทำให้ทั้งสองคอลัมน์ในตารางของภาพตรงกันพอดี จึงใช้เป็นสมมติฐานของการคำนวณ (ตีความ)

ตัวอย่างโครงสร้างคำถาม (ถอดจากภาพ)

r = client.system_one(state=step, questions={
    "tier": Choice(
        instructions="Which model should do this step?",
        criteria={
            "cheap":    "Mechanical edit, local, low risk.",
            "mid":      "Bounded change across a few files.",
            "frontier": "Design change or unknown code.",
            "ask":      "Brief unclear; a person decides.",
        },
    ),
    "destructive": Noul(
        instructions="Does this delete or overwrite data?"),
})

อ่านโครงสร้าง: ส่ง state ของขั้นปัจจุบันพร้อมชุดคำถามที่ตั้งชื่อไว้ แต่ละคำถามมีชนิดคำตอบกำกับ ชื่อ system_one และคลาสเหล่านี้เป็นตามที่ปรากฏในภาพ ยังไม่ได้ตรวจว่ามีไลบรารีจริงหรือไม่

เมื่อไรควรและไม่ควรใช้

เงื่อนไข ใช้ ไม่ใช้
ปริมาณการตัดสินใจ หลายสิบครั้งต่อเซสชันและหลายร้อยเซสชันต่อเดือน ใช้ agent สัปดาห์ละไม่กี่ครั้ง ต้นทุนเดิมยังต่ำ
ชนิดคำถาม ตัวเลือกแน่นอน ตอบจากสถานะที่ตัดมาได้ ต้องเข้าใจทั้ง codebase จึงจะตอบได้
ความเสียหายเมื่อพลาด มีจุดย้อนกลับหรือมีคนอนุมัติท้ายทาง ไม่มีใครตรวจ และผลเสียแรง
ข้อกำหนดก่อนเริ่ม log การตัดสินใจเดิมของ agent ให้เทียบคำตอบได้ ไม่มี log และไม่มีทางวัดความถูกต้อง

ก้าวแรกที่เล็กที่สุดและวิธีตรวจว่าได้ผล

  1. เลือกคำถามเดียว คือ "คำสั่งนี้ลบหรือเขียนทับข้อมูลหรือไม่"
  2. ดึงคำสั่งจริง 50 คำสั่งจาก log ของ agent ให้โมเดลใหญ่และโมเดลเล็กตอบคนละรอบ
  3. วัดอัตราที่โมเดลเล็กตอบตรงกับโมเดลใหญ่ และจำนวนกรณี "ทำลายจริงแต่โมเดลเล็กตอบว่าไม่"
  4. เกณฑ์ผ่านที่ตั้งก่อนรัน (ค่าที่เราเลือกเอง ไม่ได้มาจากภาพ): ตรงกันอย่างน้อย 95% และกรณีพลาดฝั่งอันตรายเป็น 0 จาก 50

ทดสอบความเข้าใจ

คำถาม คำตอบ คำตอบที่มักผิด
ทำไมคำตอบแบบมีชนิด (Score, Choice, Noul) ถึงลดต้นทุนได้นอกจากราคาต่อโทเคน ไม่ต้องแกะร้อยแก้วกลับเป็นค่า และคำตอบสั้น จ่าย output น้อยลง "เพราะโมเดลเล็กฉลาดพอ" (ภาพไม่ได้พิสูจน์เรื่องนี้)
แก้ cache ($1.21 เป็น $0.13) หรือใช้โมเดลถูก ($0.0017) อย่างไหนลดมากกว่า โมเดลถูก: 0.13 / 0.0017 ราว 76 เท่า ส่วน cache: 1.21 / 0.13 ราว 9.3 เท่า "แก้ cache ให้ติดก็พอ" (ลดได้แค่ราว 9 เท่า และยังเป็นโมเดลใหญ่อยู่)
ตัวเลข $1 ต่อเดือนพิสูจน์ว่าวิธีนี้ดีกว่าหรือไม่ ไม่ พิสูจน์แค่ต้นทุน ยังต้องวัดว่าคำตอบถูกพอกัน "พิสูจน์แล้ว ถูกกว่า 1,700 เท่า"
จาก 5 จุด จุดไหนมีทางออกไปหาคนแทนที่จะวนลูปต่อ รันได้ไหม (ถ้าย้อนไม่ได้ รอคนอนุมัติ) กับ เสร็จหรือยัง (หยุดถามคน) "ทุกจุด"
"เสร็จหรือยัง" ควรตัดสินจากอะไร ผลทดสอบสดครั้งล่าสุด ไม่ใช่สรุปของ agent เอง "สรุปที่ agent เขียนเองว่าทำเสร็จแล้ว"
ทำไมจุด "เก็บหรือทิ้ง" ให้คะแนนผลลัพธ์ tool แต่ละชิ้นแทนการสรุปทั้งก้อน ชิ้นที่รอดถูกเก็บคำต่อคำ การสรุปเป็นย่อหน้าเดียวทำให้รายละเอียดหาย "เพราะสรุปแพงกว่า"

ภาพอ้างอิงและสิ่งที่อ่านได้จากภาพ

ลูปของ coding agent กับ 5 จุดตัดสินใจ

ภาพเป็นหน้าเอกสารเดียว มีแผนภาพวงจร (Fig. 1) ย่อหน้าสามส่วน บล็อกโค้ด และตารางต้นทุน ประโยคบางส่วนในภาพถูกไฮไลต์ ได้แก่ ประโยคเรื่องคำถามที่ตอบด้วยโมเดลใหญ่ตัวเดียวกัน ประโยคเรื่องคำสั่งที่รันได้ ประโยคเรื่องการลบไฟล์/ใช้เครือข่าย/เขียนประวัติใหม่ ย่อหน้าราคา และแถว frontier cached, frontier cold prefix กับ jev ในตาราง

ลูปตามแผนภาพ (ทิศทางลูกศรเป็นการตีความ)

flowchart LR
    T["task: brief + repo"] --> S1{{"Score: which files?"}}
    S1 --> R["read: top chunks only"]
    R --> C{{"Choice: which model?"}}
    C --> W["write code: frontier model"]
    W --> N1{{"Noul: safe to run?"}}
    N1 -->|irreversible| A["you approve"]
    A --> RUN
    N1 -->|safe| RUN["run in a worktree"]
    RUN --> TEST["tests: fresh evidence"]
    TEST --> N2{{"Noul: done?"}}
    N2 -->|done or unclear| H["halt: ask you"]
    N2 -->|continue| S2{{"Score: keep or drop?"}}
    S2 --> T

5 จุดตัดสินใจ

จุด ชนิดคำตอบ ตัดสินอะไร แหล่งข้อมูลที่ใช้ตัดสิน
อ่านไฟล์ไหน Score ให้คะแนนชิ้นส่วนไฟล์ที่ค้นเจอ อ่านเฉพาะบนสุด ผลค้น (grep)
ใช้โมเดลระดับไหน Choice เลือกระดับตามลักษณะของขั้น เช่น เปลี่ยนชื่อไปโมเดลถูก งานออกแบบไปโมเดลใหญ่ ขั้นปัจจุบัน
รันได้ไหม Noul (หนึ่งข้อต่อความเสี่ยงที่นโยบายสนใจ) ลบไฟล์ แตะเครือข่าย เขียนประวัติใหม่ ถ้าย้อนไม่ได้ รอคน คำสั่งที่จะรัน
เสร็จหรือยัง Noul (อีกข้อถามว่า brief ชัดพอจะตัดสินหรือไม่) อ่านเทียบกับผลทดสอบสด ผลทดสอบล่าสุด
เก็บหรือทิ้ง Score ให้คะแนนผลลัพธ์ tool แต่ละชิ้นในการรันยาว เก็บที่รอดคำต่อคำ ผลลัพธ์ tool

ข้อเท็จจริงที่อ่านได้ชัดเจนกับสิ่งที่ไม่ชัด

ประเด็น สถานะ
ข้อความทั้งหมดในหน้า ตารางต้นทุน และบล็อกโค้ด อ่านได้ครบ
ความหมายของคำว่า Noul ภาพไม่นิยามไว้ ใช้กับคำถามใช่/ไม่ใช่ จึงตีความว่าเป็นชนิดคำตอบแบบนั้น
โหนดกลางชื่อ Jev ที่มีเส้นล้อมรอบ ภาพไม่อธิบายหน้าที่ รู้แค่ว่าเป็นชื่อระบบที่ถามคำถามเหล่านี้
ราคา "GPT-6 Astra" และการเปรียบเทียบที่อ้างว่าประกาศเดือนกันยายน 2026 ยังไม่ยืนยันกับผู้ให้บริการในรอบนี้
ที่มาของ 15 ครั้งต่อเซสชัน และ 880 เซสชันต่อเดือน ไม่มีในภาพ คำนวณย้อนจากตาราง
ความแม่นยำของโมเดลเล็กเมื่อเทียบกับโมเดลใหญ่ ไม่มีในภาพ

ความเสี่ยงและข้อจำกัด

Warning ตารางต้นทุนไม่มีตัวเลขคุณภาพ การเอาตัวเลข $1 ต่อเดือนไปตั้งเป็นเป้าโดยไม่วัดอัตราตรงกันของคำตอบ ทำให้ได้ระบบที่ถูกแต่ตัดสินผิดโดยไม่มีใครเห็น

ความเสี่ยง เกิดเมื่อ ลดอย่างไร
โมเดลเล็กตอบ "ปลอดภัย" ทั้งที่คำสั่งทำลายข้อมูล ตัดสถานะจนไม่เหลือบริบทที่จำเป็นต่อคำถาม วัดกรณีพลาดฝั่งอันตราย ให้เป็น 0 ก่อนเปิดใช้ และให้คนอนุมัติเมื่อย้อนไม่ได้
ได้คำตอบผิดชนิด ไม่ตรวจชนิดของคำตอบก่อนใช้ ปฏิเสธคำตอบนอกชุดที่กำหนดแล้วส่งขึ้นระดับบน
ต้นทุนพุ่งเพราะ cache พลาด prefix เปลี่ยนทุกเทิร์น ดูหน้าเรื่อง cache ของโมเดลสามระดับ
ตัดสินว่าเสร็จจากคำพูดของ agent อ่านสรุปแทนผลทดสอบ บังคับให้ตัดสินจากผลทดสอบสดเท่านั้น

Decision / next steps

Recommendation เริ่มที่จุดเดียวคือ "รันได้ไหม" ทดลองกับคำสั่ง 50 รายการจาก log จริง ตั้งเกณฑ์ผ่านก่อนรัน และขยายไปจุด "ใช้โมเดลระดับไหน" ต่อเมื่อผ่านเกณฑ์

ตัวย่อที่ใช้ในหน้านี้

ตัวย่อ ชื่อเต็ม คืออะไร อ่านค่าอย่างไร
LLM Large Language Model โมเดลภาษาขนาดใหญ่ (ในภาพใช้คำว่า cheap llm หมายถึงโมเดลราคาถูก) "cheap llm $0.0017" = ต้นทุนต่อการตัดสินใจ 1 ครั้งของโมเดลถูก คือ 0.0017 ดอลลาร์
GPT Generative Pre-trained Transformer ชื่อตระกูลโมเดลภาษา ในภาพเป็นชื่อรุ่นของโมเดลใหญ่ในตารางราคา "GPT-6 Astra" = ชื่อรุ่นที่ภาพอ้าง ยังไม่ยืนยัน
API Application Programming Interface ช่องทางให้โปรแกรมเรียกบริการอื่น client.system_one(...) = ตัวอย่างการเรียกผ่าน API ตามภาพ
x เท่า (ตัวคูณ) ใช้คูณในตารางคำนวณ "15 ครั้ง x $0.13" = 15 คูณ 0.13

แถว GPT และ API เป็นความรู้ทั่วไป ภาพไม่ได้นิยามไว้

ศัพท์เฉพาะ

คำ ความหมาย
frontier model โมเดลระดับสูงสุดที่มี ราคาแพงที่สุด
cached / cold prefix cached = ส่วนต้นบริบทที่ใช้ซ้ำ อ่านราคาถูก, cold = ไม่ติด cache จ่ายเต็ม
worktree สำเนาทำงานแยกของ git สำหรับรันโดยไม่แตะงานหลัก
Noul ชนิดคำตอบสำหรับคำถามแบบใช่/ไม่ใช่ ภาพไม่นิยามไว้ (ตีความ)

Summary

  • เทิร์นส่วนใหญ่ของ coding agent เป็นการตัดสินใจ มีสถานีเดียวที่เขียนโค้ด
  • 5 จุดตัดสินใจ: อ่านไฟล์ไหน, โมเดลระดับไหน, รันได้ไหม, เสร็จหรือยัง, เก็บหรือทิ้ง
  • ตัวเลขในภาพ: $0.130 เหลือ $0.0001 ต่อครั้ง และ $1,716 เหลือ $1 ต่อเดือน (ยังไม่ยืนยันกับผู้ให้บริการ และไม่มีตัวเลขคุณภาพ)
  • เริ่มที่จุด "รันได้ไหม" วัดกับ 50 คำสั่งจริง ตั้งเกณฑ์ผ่านก่อนรัน
ตัวเลขสำคัญ ค่า
ต้นทุนต่อครั้ง โมเดลใหญ่ cache ติด $0.13
ต้นทุนต่อครั้ง Jev $0.0001
ต้นทุนต่อเดือน โมเดลใหญ่ cache พลาด $15,972
ต้นทุนต่อเดือน Jev $1
Facebook

ความรู้ที่เกี่ยวข้อง