HYBRID MIND / AI ENGINEERING DEEP DIVE
Asana ลดต้นทุน AI Agent 76 เท่า: เบื้องหลังไม่ใช่แค่โมเดล แต่คือ Context Engineering
เจาะรายงาน 144 Runs ของ Asana/StackAI: เมื่อการเก็บประวัติให้ Cache ใช้ซ้ำได้ เปลี่ยนทั้งต้นทุน ความเร็ว และความน่าเชื่อถือของ Browser Agent
อ้างอิงตัวเลขจากการทดลองพัฒนาของ Asana/StackAI ไม่ใช่ผลทดสอบอิสระหรือผลประหยัดค่าใช้จ่าย Production ทั้งระบบ
01 / Executive Brief
อ่านสรุปภายใน 30 วินาที
ข่าวนี้ไม่ใช่เรื่อง “เปลี่ยนมาใช้โมเดลที่ถูกกว่าแล้วค่าใช้จ่ายลด 76 เท่า” เท่านั้น แต่เป็นเรื่องของ วิธีจัดการ Context ที่ส่งเข้าโมเดลทุกครั้งที่ Agent เรียกใช้งาน ทีม Asana พบว่า Browser Agent ของ StackAI ส่งประวัติการเปิดเว็บและภาพ Screenshot ซ้ำเป็นจำนวนมาก ขณะที่นโยบายลบภาพเก่าและตัดข้อความทำให้ Prefix ของ Prompt เปลี่ยนแทบทุก Step จน Cache ที่ควรประหยัดค่าใช้จ่ายไม่ค่อยได้ถูกใช้ซ้ำ
ทีมจึงทดลองแคชประวัติที่เพิ่มขึ้น เก็บ Context ให้นานพอ และค่อยลบ Screenshot เป็นชุด แทนการลบทีละรอบ ผลบน Model B ซึ่งเป็นโมเดลที่ใช้อยู่ในระบบเดิมลดต้นทุนโมเดลประมาณ 29 เท่า เมื่อใช้ Workflow ที่ปรับปรุงแล้วกับ GPT-6.1 Sol ตัวเลขเฉลี่ยเหลือราว $0.47 ต่อ Run จึงมีการรายงานการลดต้นทุนเทียบ Development Baseline ที่ประมาณ 76 เท่า พร้อมระยะเวลาทำงานสั้นลงประมาณ 5 เท่า [1–3]
02 / The Problem
ทำไม Browser Agent ยิ่งทำงานนาน ยิ่งจ่ายแพง
Browser Agent ไม่ได้อ่านเว็บแล้วตอบครั้งเดียวเหมือน Chatbot ปกติ งานหนึ่งอาจประกอบด้วยการเปิดหน้าเว็บ ดูภาพหน้าจอ อ่านข้อความ กดลิงก์ กรอกฟอร์ม ย้อนกลับ ตรวจข้อมูล และสรุปคำตอบ ในแต่ละ Step ระบบมักต้องส่ง System Prompt, รายการเครื่องมือ และประวัติสิ่งที่ทำก่อนหน้ากลับเข้าไปเพื่อให้โมเดลตัดสินใจว่าจะทำอะไรต่อ
ถ้าประวัติสะสมยาวขึ้นจาก 20,000 เป็น 50,000 และ 100,000 Tokens การเรียกโมเดลครั้งหลัง ๆ อาจมี Input มากกว่าครั้งแรกหลายเท่า ยิ่งแย่หากโมเดลต้องอ่านข้อมูลเดิมในราคา Input ปกติอยู่เรื่อย ๆ ค่าใช้จ่ายของทั้ง Run จึงไม่ได้เติบโตตามจำนวน Step เพียงอย่างเดียว แต่ขึ้นอยู่กับโครงสร้าง History และความสามารถในการ Reuse Cache ด้วย
ในระบบที่ Asana ตรวจพบ เดิมมีการ Cache ส่วนคำสั่งคงที่ เช่น System Prompt และ Tools แต่ไม่ได้ Cache ส่วน Browsing History ที่เพิ่มขึ้นอย่างมีประสิทธิภาพ ที่สำคัญประวัติถูกแก้ย้อนหลังเกือบทุก Step เมื่อภาพเก่าหรือข้อความเก่าถูกเอาออก การหวังให้ Cache ส่วน History กลับมาใช้ได้โดยไม่ปรับนโยบายเก็บประวัติจึงไม่เพียงพอ [1]
03 / The Mechanism
Prompt Caching คืออะไร และทำไม Cache จึงแตก
Prompt Caching คือกลไกให้ผู้ให้บริการโมเดลนำส่วนต้นของคำขอที่เหมือนเดิมกลับมาใช้ซ้ำ โดยคิดค่าอ่าน Cache ในอัตราที่ต่ำกว่า Input ปกติในเงื่อนไขที่รองรับ สิ่งสำคัญคือ ความเหมือนของ Prefix ไม่ใช่การที่คำขอสองครั้งมีเนื้อหาคล้ายกันประมาณหนึ่ง
ให้นึกถึง Prompt เป็นแถวของบล็อก เริ่มจาก Tools และ System Prompt ตามด้วยประวัติ Tool Calls, ข้อความหน้าเว็บ และ Screenshot หากคำขอใหม่มีส่วนหน้าเหมือนเดิม ระบบอาจอ่าน Prefix ที่ Cache ไว้ได้ แต่เมื่อแก้หรือลบบล็อกที่อยู่ก่อนหน้า จุดที่เปลี่ยนจะตัดการใช้ซ้ำส่วนถัดไป การลบ Screenshot เพียงภาพเดียวก็อาจทำให้ History Cache หลังจุดนั้นใช้ไม่ได้
Cache Read กับ Cache Write ไม่ใช่สิ่งเดียวกัน
การเขียน Cache อาจมีค่าใช้จ่ายสูงกว่า Input ธรรมดา ในรายงานนี้อัตราที่นำมาคำนวณคือเขียน Cache 1.25 เท่าของราคา Input, อ่าน Cache 0.10 เท่าสำหรับ Model A/B/C และ 0.05 เท่าสำหรับ GPT-6.1 Sol ดังนั้นถ้าเขียนไว้แต่ไม่มีการอ่านซ้ำก็อาจแพงขึ้นแทนที่จะถูกลง อัตราเหล่านี้เป็นอัตราของการทดลองช่วงกันยายน 2026 ไม่ใช่ราคาถาวรสำหรับทุก API [1]
การจัดตำแหน่ง Cache Marker จึงเป็นส่วนหนึ่งของ Architecture ไม่ใช่เพียงค่าที่เปิดใน Dashboard รายงานระบุว่า StackAI เพิ่ม Marker ไปยังผลลัพธ์จาก Tool ล่าสุด และต้องรักษาความตรงกันของข้อความก่อน Marker นั้น ผู้ให้บริการรายอื่นอาจมี Automatic Caching, Explicit Caching, TTL และราคาที่แตกต่างกัน จึงต้องตรวจเอกสาร API ของผู้ให้บริการที่ใช้จริงก่อนปรับระบบ
04 / Context Architecture
Asana แก้ด้วย 3 การเปลี่ยนแปลงที่ทำงานร่วมกัน
หนึ่ง — ขยาย Cache ให้ครอบคลุมประวัติที่กำลังเติบโต
เดิม Cache เก็บเพียงคำสั่งที่คงที่ แต่ Page Text และ Screenshot จาก Browser Agent เป็นส่วนใหญ่ของข้อมูลที่ส่งซ้ำ ทีมจึงย้ายขอบเขต Cache ไปยัง History ล่าสุด ไม่ปล่อยให้ประวัติทั้งหมดต้องถูกนับเป็น Input ใหม่ทุกครั้ง
สอง — ลดความถี่การเขียนทับ History
แทนที่จะลบ Screenshot เก่าทีละภาพในทุก Step ระบบยอมให้ภาพสะสม แล้วจึง Prune เป็นชุด เช่นนโยบาย 20:1 หมายถึงเมื่อถึงเงื่อนไขที่กำหนดจะลดภาพค้างเก่าให้เหลือภาพล่าสุดหนึ่งภาพ ช่วงระหว่างการ Prune ประวัติส่วนใหญ่จะถูก Append ต่อท้าย ทำให้ Cache ใช้ซ้ำได้ราว 19 Calls ก่อนช่วงตัดประวัติหนึ่งครั้ง ส่วน 20:10 เก็บภาพไว้มากกว่าเมื่อถึงรอบตัด
สาม — เพิ่มพื้นที่เก็บ History อย่างระมัดระวัง
เพิ่ม Text History Budget จาก 120,000 เป็น 480,000 characters เพื่อไม่ให้ข้อความเก่าถูกตัดออกทุกครั้งที่บริบทเริ่มแน่น Budget นี้นับข้อความและ Tool Calls แต่ไม่ได้นับ Screenshot, System Prompt และ Tool Definitions ทั้งหมด รายงานระบุว่าในงาน CAT32 ไม่มี Run ใดที่ใช้ Budget 480,000 characters จนต้องตัดข้อความ จึงทำให้ชุดใหญ่แทบไม่มีการ Trim Text เลย [1]
05 / Research Method
ทีมทดลองจริงอย่างไร: 144 Runs และ Follow-up อีก 12 Runs
ทีมใช้ Task ชื่อ CAT32 บนเว็บไซต์สาธิต books.toscrape.com ให้ Browser Agent เปิดข้อมูลหนังสือ 32 เล่ม เก็บรายการละ 6 Fields ได้แก่ ชื่อหนังสือ, URL, UPC, ราคา, สถานะว่าสินค้ามีหรือไม่ และจำนวนคงเหลือ รวม 192 Facts พร้อมตอบยอดรวมราคาและหนังสือที่ถูกหรือแพงที่สุด Reference Answer ทำแยกจากการทดลองและมีราคารวม £1,164.91 [1]
| ตัวแปรการทดลอง | รายละเอียด |
|---|---|
| โมเดล | 4 รุ่น: Model A, Model B, Model C และ GPT-6.1 Sol |
| นโยบาย History/Cache | 6 แบบ: Baseline, History-only, Batch 3:1, 10:1, 20:10, 20:1 |
| Context Budget | 2 ระดับ: 120,000 และ 480,000 characters |
| การทำซ้ำ | 3 Runs ต่อ Condition: 4 × 6 × 2 × 3 = 144 Runs |
| การวิเคราะห์ | 143 Runs อยู่ในชุดค่าเฉลี่ยที่พล็อต โดย Technical Failure ของ Model A หนึ่ง Run ถูกตัดออกจากกราฟ แต่ยังเก็บไว้ใน Ledger |
| Follow-up | 12 Runs เพิ่มเติม: ไม่ลบ Screenshot, Model B/C/Sol อย่างละ 4 Runs |
การทดลองแบ่งเป็นสอง Phase: Model A/B ระหว่างวันที่ 14–23 กันยายน 2026 ส่วน Model C/GPT-6.1 Sol วันที่ 30 กันยายน 2026 มีความแตกต่างทั้งการตั้งค่า Reasoning, Tool Choice และอายุ Cache จึงไม่ใช่การทดสอบข้ามโมเดลที่ควบคุมทุกอย่างเท่ากันทั้งหมด อีกทั้งบาง Run ชน Step Limit และมีความล้มเหลวทางเทคนิค รายงานไม่ได้ซ่อนความล้มเหลวเหล่านี้ไว้ [1]
06 / Anatomy of 76×
แกะต้นทุน $36.21 → $1.24 → $0.47 ให้เห็นว่าอะไรช่วยประหยัดจริง
ตัวเลขข่าวที่ดังที่สุดเริ่มจาก Development Baseline ของ Model B มี estimated model cost อย่างน้อย $36.21 ต่อ Run เพราะบาง Run ถูกจำกัดจำนวน Step ก่อนทำงานเสร็จ เมื่อลอง Workflow ที่ปรับปรุงบน Model B เดิม ต้นทุนเฉลี่ยของเงื่อนไขที่ดีที่สุดเหลือ $1.24 หรือประมาณ 29× จากนั้นใช้ Workflow ที่ปรับปรุงแล้วบน GPT-6.1 Sol ได้ $0.47 ต่อ Run ต่ำกว่า Model B ที่ Optimize แล้วประมาณ 2.6× [1,3]
| ช่วงเปรียบเทียบ | ต้นทุนเฉลี่ยต่อ Run | คำอธิบาย |
|---|---|---|
| Model B ก่อนปรับ → Model B หลังปรับ | ≥ $36.21 → $1.24 | ผลจากการแก้ Cache/History และลดการทำงานซ้ำในโมเดลเดียวกัน ~29× |
| Model B หลังปรับ → Sol หลังปรับ | $1.24 → $0.47 | ผลเปรียบเทียบ Model + Adapter + การตั้งค่าในสอง Phase ~2.6× |
| Model B ก่อนปรับ → Sol หลังปรับ | ≥ $36.21 → $0.47 | Headline ที่รายงาน ~76× เป็นค่าประมาณ/ขอบล่าง ไม่ใช่ผลจากการเปลี่ยนโมเดลอย่างเดียว |
ใน Best Condition ของงานหลัก ต้นทุนโมเดลเฉลี่ยแยกเป็น Model A $0.84, Model B $1.24, Model C $0.66 และ GPT-6.1 Sol $0.47 ต่อ Run ค่าเหล่านี้ไม่ใช่การจัดอันดับโมเดลแบบทั่วไป เพราะพฤติกรรม Agent และการตั้งค่าในแต่ละ Phase แตกต่างกัน รวมถึงเลือก Best Condition หลังเห็นผลทดลองแล้ว
ทำไม Input มากขึ้น แต่ค่ารวมกลับลดลง?
บน Model B รายงานยกตัวอย่าง Call ที่ 30 ซึ่ง Best Condition ส่ง Input มากขึ้นกว่า Baseline แต่ส่วนใหญ่กลับอ่านจาก Cache ในราคาที่ต่ำกว่า แถม Agent ยังกลับไปเปิดหน้าเดิมน้อยลงจนใช้ Calls โดยรวมลดลงด้วย ภาพรวมการประหยัดจึงเกิดจากทั้ง ต้นทุนเฉลี่ยต่อ Call และ จำนวน Calls ต่อ Run ไม่ใช่ Cache Hit เพียงตัวเดียว
เวลาทำงานของ Baseline บน Model B อยู่ที่ประมาณอย่างน้อย 22.5 นาที ขณะที่ Best Condition บน Sol ใกล้ 4 นาที จึงรายงานว่าทำงานเร็วขึ้นราว 5 เท่า แต่ข้อมูลนี้ไม่พิสูจน์ว่าการอ่าน Cache เพียงอย่างเดียวทำให้ Inference เร็วขึ้น 5 เท่า เพราะจำนวนการเปิดหน้าและการเรียก Tools ก็เปลี่ยนไปด้วย
07 / Cost Meets Reliability
Context Budget ไม่ได้ส่งผลแค่ราคา แต่เปลี่ยนโอกาสได้คำตอบ
ผลอีกส่วนที่ควรได้รับความสนใจมากกว่าพาดหัว คือการเพิ่ม History Budget เปลี่ยนพฤติกรรม Agent อย่างชัดเจน ที่ Budget 120,000 characters, GPT-6.1 Sol ส่งคำตอบได้เพียง 3 จาก 18 Runs ขณะที่ Model C ส่งคำตอบไม่ได้เลย 0 จาก 18 แต่เมื่อเป็น 480,000 characters ทั้งสองโมเดลส่งคำตอบได้ 18 จาก 18 Runs และตอบยอดรวมราคาถูกต้องทั้งหมด [1]
| โมเดล | 120k characters: ตอบได้ | 480k characters: ตอบได้ |
|---|---|---|
| Model C | 0/18 | 18/18 |
| GPT-6.1 Sol | 3/18 | 18/18 |
เหตุผลเชิงกลไกคือการตัด Text History อย่างถี่ทำให้ความรู้ที่เคยอ่านหายจาก Context ถึงแม้ Agent จะเคยเปิดครบ 192 Facts ไปแล้วก็ตาม หากข้อมูลที่ต้องใช้ตอบอยู่ในข้อความที่ถูกตัดออก Agent อาจกลับไปอ่านซ้ำหรือไปต่อไม่ไหว ในรายงาน 480k ทำให้ไม่มีการ Trim Text จึงช่วยให้ Agent เก็บหลักฐานไว้ถึงตอนตอบได้มากขึ้น
08 / Counterintuitive Result
ถ้าอย่างนั้นยังจำเป็นต้อง Prune History หรือไม่?
ผลทดลองเพิ่มเติมน่าสนใจมาก ทีมทดสอบ No-pruning โดยปล่อย Screenshot ทั้งหมดค้างไว้ในประวัติ และไม่ได้แก้ History เก่าเลย พบว่าในงาน CAT32 นี้ Cost per Call ต่ำกว่า Best Condition แบบ Batch Pruning ประมาณ 1.2× บน Model B และ Sol และต่ำกว่าบน Model C ราว 5% ผลดังกล่าวเกิดในชุด Follow-up 12 Runs ที่จัดทำหลังชุดหลัก [1,2]
ทำไมจึงเป็นไปได้? การ Prune แม้ทำเป็น Batch ก็ยังเป็นการเขียนทับส่วนเก่าของ Prompt หนึ่งครั้ง ซึ่งอาจต้องจ่าย Cache Write ใหม่จำนวนมาก หากงานจบก่อน Context เต็ม การไม่ Prune เลยอาจประหยัดกว่า ทั้งนี้การเก็บภาพทั้งหมดมีต้นทุนหน่วยความจำและข้อจำกัด Context ของโมเดล ซึ่งต่างกันไปตามงาน
| นโยบาย | ข้อดี | ความเสี่ยง |
|---|---|---|
| ลบทุก Step | ใช้ Context สั้นและควบคุมขนาดได้ง่าย | แก้ Prefix ถี่จน Cache Read ต่ำ อาจย้อนอ่านข้อมูลซ้ำ |
| Append-only + Batch Pruning | สร้างช่วงยาวที่ Cache ใช้ซ้ำได้ ขณะยังควบคุมภาพเก่า | ทุกครั้งที่ Prune มี Cache Rewrite; ต้องเลือก Threshold |
| No Pruning | Prefix ตรงกันต่อเนื่องสูงสุดในงานสั้นพอ | เสี่ยง Context โตจนเกินลิมิตและแพงมากเมื่อ Cache Miss |
| Compaction / Summary | ช่วยคุม Context ในงานยาวมาก | มีต้นทุนสรุปและความเสี่ยงสูญเสีย Fact; ไม่ได้ทดลองในงานนี้ |
บทเรียนจึงไม่ใช่ “ต้องตั้งค่า 20:1 ทุกที่” แต่ควรทดลองหลาย Policy ตามอายุงาน จำนวนภาพ ขนาด Context ความถี่ของ Tool Call และราคา Cache Read/Write ในงานที่ยาวกว่าหรือโมเดล Context แคบกว่า Batch Pruning หรือ Compaction อาจสำคัญกว่า
09 / AI Engineering Workflow
เบื้องหลังอีกชั้น: ให้ AI Coding Agent วิจัยระบบ Agent
Frank Hidalgo ซึ่งเป็น CTO ของ StackAI ในเครือ Asana มอบหมายให้ GPT-6 Astra ที่ทำงานใน Codex อ่าน Codebase, ตรวจเส้นทาง Request, เพิ่มการวัด Usage, สร้าง Harness สำหรับรันเงื่อนไขทดลองหลายแบบ และวิเคราะห์ Trace ที่ได้ เมื่อเครื่องมือเดิมไม่เหมาะกับ Controlled Experiment Agent ก็ช่วย Refactor โครงสร้างให้ทดลองหลาย Workflow ควบคู่กันโดยใช้ค่าตั้งค่าคนละชุด
ทุก Run มีการเก็บ Request, Provider Usage, Browser Actions และเหตุการณ์ Eviction ไว้ใน Command เพื่อให้ตรวจย้อนหลังได้ ทีมนำข้อค้นพบมาสร้าง Tickets และ Pull Requests ผ่านการ Review ก่อนส่งเข้า StackAI จริง มีทั้งการจับ Configuration Mismatch และ Evidence Capture Failure ระหว่างทาง ไม่ใช่ปล่อยให้ AI ทดสอบแล้วเชื่อผลโดยอัตโนมัติ
Hidalgo ประเมินว่าถ้าลงมือค้นหาและทดลองแบบนี้ด้วยตัวเองอาจใช้เวลาหนึ่งถึงสองเดือน แต่งานในรอบนี้ใช้ประมาณหนึ่งสัปดาห์ จุดนี้แสดงความสำคัญของระบบเก็บหลักฐาน: หาก Trace และ Receipt ไม่ครบ Agent ที่มาวิเคราะห์ภายหลังก็ไม่สามารถย้อนพิสูจน์ได้ว่า Cost ลดจริงจากสาเหตุใด
สำหรับการพัฒนาเว็บไซต์ที่ใช้ AI ช่วยสร้างบทความ แนวคิด Human → Research Agent → Evidence → Reviewer → Draft/PR สามารถนำมาใช้ได้เช่นกัน ดูเพิ่มเติมในบทความ Hybrid Mind เรื่อง อนาคตการสร้างบทความด้วย AI Agent โดยต้องคงขั้นตอนตรวจข้อเท็จจริงและอนุมัติจากมนุษย์
10 / Engineering Checklist
นักพัฒนา Agent ควรนำบทเรียนนี้ไปใช้อย่างไร
ก่อนจะลองเปลี่ยนเป็นโมเดลที่ถูกกว่า ให้เปิด Trace ของ Workflow ที่ใช้เงินสูงที่สุด แล้วถามว่า Model Call แต่ละครั้งส่งอะไรบ้าง ส่วน Tools/System เหมือนเดิมหรือไม่ History เก่าถูกแก้ตอนไหน มีภาพเก่าถูกลบก่อน Call ทุกครั้งหรือเปล่า และ Provider Receipt บอกว่ามี Cache Read จริงเท่าไร การตอบคำถามเหล่านี้สำคัญกว่าการดู Context Window สูงสุดบนหน้าขาย API
ขั้นตอนตรวจ Agent ก่อนเสียเงินเปลี่ยนโมเดล
- เก็บ Baseline: บันทึก Cost/Run, จำนวน Calls, Latency และ Success Rate โดยใช้ Task เดิม
- ตรวจ Prompt Prefix: ระบุ System, Tools, Browser History และส่วนที่เปลี่ยนระหว่าง Calls
- อ่าน Provider Usage: แยก Uncached Input, Cache Read, Cache Write และ Output; อย่าสรุปจาก Tokens รวม
- เปลี่ยนทีละ Policy: ทดลอง Cache Growing History, Append-only, Batch Pruning หรือ No Pruning โดยคงโมเดลและ Task เดิม
- วัดความน่าเชื่อถือ: ตรวจ Seen, Kept, Answered, Correct และกรณี Agent ต้องย้อนอ่านหน้าเดิม
- ตั้งเพดานและเกณฑ์รับงาน: คุม Steps, Tokens, Cost และ Timeout ก่อนนำ Workflow ที่ชนะไปทดสอบข้ามโมเดล
| สิ่งที่ควรวัดจริง | เหตุผล |
|---|---|
| Input: uncached, cache write, cache read, output | ต้องรู้ว่าจ่ายค่าข้อมูลแต่ละประเภทเท่าไร ไม่ใช่ดู Token รวม |
| Prompt Prefix / Payload Diff | หา Step ที่ History เดิมเปลี่ยนจน Cache Miss |
| จำนวน Calls และ Browser Revisit | แยกว่า Cost ลดเพราะ Call ถูกลงหรือเพราะ Agent ทำงานซ้ำน้อยลง |
| Seen / Kept / Answered / Correct | แยกความสำเร็จด้านการเก็บ Fact ออกจากความถูกต้องของผลลัพธ์ |
| Cost / Step / Token / Wall-time Limits | หยุด Run ที่วนลูปหรือเกินงบประมาณ |
| Provider Receipt + Run ID + Build SHA | ตรวจสอบย้อนหลังให้แต่ละผลผูกกับ Code และการตั้งค่าที่รันจริง |
แนวทางที่สมเหตุสมผลคือสร้าง Baseline ก่อน จากนั้นเปลี่ยนทีละตัวแปร เช่น เปิด Cache History โดยไม่เปลี่ยน Pruning, เพิ่ม Budget โดยไม่เปลี่ยนโมเดล และทดลอง Batch Pruning หลาย Threshold หากผลดีขึ้นค่อยทำการทดลองข้ามโมเดลอีกครั้ง เพราะการเปลี่ยนหลายตัวพร้อมกันทำให้ระบุสาเหตุได้ยาก
ในกรณี AI Newsroom เช่น Hybrid Mind กระบวนการค้นข่าวหลายเว็บและอ่านข้อความอาจเป็นงานที่นำแนวคิดนี้ไปทดลองได้ แต่ควรวัด Fact Retention, การอ้างอิงแหล่งข่าว และความถูกต้องของการสรุปควบคู่กัน ไม่ควรบีบ Context จนข้อเท็จจริงหรือหลักฐานอ้างอิงหายไป และไม่ควรนำผลวิจัย Asana ไปอ้างเป็นผลประหยัดจริงของระบบเราโดยยังไม่ Benchmark
ประเด็นเรื่อง Prompt Caching ต่างจาก KV Cache ที่ใช้เพิ่มความเร็วการประมวลผลภายใน Inference ซึ่งอธิบายเพิ่มเติมในบทความ Hybrid Mind LLM Inference Engineering และต่างจากความจำเชิงความหมายระยะยาวที่วิเคราะห์ในบทความ ResonanceDB / AI Memory
11 / Cost Model
แบบจำลองต้นทุน: ทำไม Cache Hit 89% ไม่ได้แปลว่าค่าใช้จ่ายทั้ง Run ลด 89%
หากแยก Token ของแต่ละ Call เป็น U = Uncached Input, W = Cache Write, R = Cache Read และ O = Output สูตรที่รายงานใช้คือ Estimated Model Cost = (U × ราคา Input + W × ราคา Write + R × ราคา Read + O × ราคา Output) ÷ 1,000,000 แล้วรวมทุก Call ในหนึ่ง Run [1]
ตัวอย่างสมมติแบบง่าย: หาก Input มี Cache Read 89% และทุก Cached Token อ่านในราคา 5% ของ Uncached Input ขณะที่ส่วนที่เหลือจ่ายราคา Input ปกติ และไม่คิด Cache Write จะได้ต้นทุน ส่วน Input ประมาณ 11% + (89% × 5%) = 15.45% ของการจ่าย Input ทั้งหมดแบบไม่ Cache หรือลดส่วน Input ประมาณ 84.55% เท่านั้น
แต่ต้นทุน ทั้ง Run ต้องรวมการเขียน Cache, Output Tokens, จำนวน Calls, Step ที่ล้มเหลว และโครงสร้าง Pricing ส่วนอื่นด้วย อีกทั้งสูตรนี้ไม่ได้คำนวณ Sandbox, Browser Execution หรือ Infrastructure ตามรายงาน Asana จึงห้ามนำ 84.55% ไปแทนข้อเท็จจริงการลดค่าใช้จ่ายทั้งหมด
Agent Cost Laboratory
ทดลองเปลี่ยนจำนวน Calls, Input/Output Tokens และสัดส่วน Cache Read/Write แล้วดูผลต่อค่าใช้จ่าย ทั้งต้นทุนโมเดลและค่าใช้จ่ายเครื่องมือจำลอง สูตรคำนวณใช้ข้อมูลที่ปรับได้ ไม่ใช่ Benchmark จริงของ Asana
หาก Input มี Cached Read 89%, Uncached Input 11%, ราคา Cached Read เท่ากับ 5% ของราคา Input และไม่นับ Cache Write ต้นทุนเฉพาะ Input จะเหลือ 15.45% หรือประหยัด Input ได้ 84.55% ทั้งนี้ยังไม่รวม Output, เครื่องมือ และต้นทุนการเขียน Cache
ตัวอย่างกรณีไม่มี Cache
100% ของ Input คิดราคาเต็ม จึงมีต้นทุน Input ตามปริมาณ Tokens ทั้งหมด แม้จะมีประวัติบางส่วนซ้ำกับ Call ก่อนหน้า
ตัวอย่าง Cache Read 89%
สมมติ Input ทั้งหมด 100 หน่วย มี 89 หน่วยอ่าน Cache ราคา 5% และ 11 หน่วยคิดราคาเต็ม ต้นทุนเทียบ Input แบบไม่มี Cache = (0.89 × 0.05) + (0.11 × 1) = 0.1545 หรือ 15.45%
ถ้ามี Cache Write ด้วยจะเกิดอะไรขึ้น?
ต้องแยก Input ที่อ่านจาก Cache, เขียนลง Cache และ Uncached ตามสัดส่วนที่รวมกันได้ 100% แล้วคูณราคาของแต่ละประเภท หากเขียน Cache มากแต่กลับไม่อ่านซ้ำ ก็อาจแพงขึ้นได้
เครื่องคิดเลขแบบเลื่อนค่าใช้ JavaScript; หากไม่ปรากฏแสดงว่าเบราว์เซอร์หรือระบบฝังเนื้อหาไม่เปิดให้ทำงาน แต่สูตรและตัวอย่างด้านบนยังอ่านได้
ใช้จำนวน Calls ของ Baseline และ Optimized คนละค่าเพื่อจำลองประโยชน์จากการลดขั้นตอน
ปรับราคา API และต้นทุนเครื่องมือ (USD)
Input $2.00 และ Cache Read $0.10 ต่อ 1M Tokens เป็นค่าที่อ้างในกรณีศึกษา Sol ส่วน Cache Write $2.50 มาจากสมมติ 1.25× Input; Output $8 และ Tool $0.002 เป็นค่าตัวอย่างที่แก้ไขได้ ไม่ใช่การยืนยันราคาของโมเดลปัจจุบัน
ผลลัพธ์จากค่าที่เลือก
| ค่าใช้จ่ายต่อ Run | Baseline | Optimized |
|---|---|---|
| Input Model | $1.440 | $0.156 |
| Output Model | $0.384 | $0.256 |
| Tool / Browser | $0.120 | $0.080 |
| รวม | $1.944 | $0.492 |
Input ฝั่ง Optimized: 89% Read, 3% Write, 8% Uncached · อัตราส่วนต้นทุน 3.96×
นี่คือการจำลองราคาและปริมาณงานด้วยสมมติฐานที่คุณปรับเอง ไม่ใช่การสร้างซ้ำผล 76× ของ Asana และไม่ได้ทำนายเวลาทำงานจริง ความสำเร็จของ Agent หรือค่าใช้จ่าย Production ทั้งระบบ
การคำนวณทำงานเฉพาะในเบราว์เซอร์ ไม่ส่งค่าที่ปรับไปยัง Server หรือบริการ AI ใด ๆ · สูตรและสมมติฐานอ้างถึงกรณีศึกษาวิศวกรรม ไม่ใช่ราคา API ณ วันที่คุณอ่านบทความ
12 / Interpretation
ข้อจำกัด: งานศึกษานี้บอกอะไร และยังบอกอะไรไม่ได้
รายงาน Asana เป็นกรณีศึกษาทางวิศวกรรมที่มี Raw Run Ledger, Provider Usage และคำอธิบายวิธีทดสอบจำนวนมาก จึงมีประโยชน์สูงในการเรียนรู้กลไก แต่ยังไม่ใช่การทดสอบ Benchmark อิสระที่ครอบคลุม Agent ทุกแบบ งานทั้งหมดใช้ Browser Agent Design เดียว และ Task เดียวคืออ่านข้อมูลหนังสือ 32 รายการ โมเดลสี่รุ่นมาจากสองผู้ให้บริการ และแต่ละ Condition มีเพียง 3 Runs เป็นหลัก [1]
นอกจากนี้ Baseline บางรอบติด Step Limit ก่อนทำงานเสร็จ จึงทำให้ตัวเลขต้นทุน Baseline เป็นเพียงขอบล่าง ไม่ใช่ค่าเฉลี่ยของงานที่สำเร็จทั้งหมด Phase 1 และ Phase 2 ใช้การตั้งค่าต่างกัน และการเลือก Best Condition ตามต้นทุนเฉลี่ยหลังเห็นผลอาจเกิด Selection Bias ตัวเลข 76× จึงควรอ่านเป็นผลที่รายงานสำหรับ Workflow/การตั้งค่านี้ ไม่ใช่ตัวคูณที่นำไปตั้งเป้าสำหรับทุกโครงการ
ส่วนเรื่องความเร็ว การรันพร้อมกันบนเครื่องและทรัพยากร Provider อาจกระทบเวลา และการลดจำนวน Calls ช่วยลดระยะเวลาได้โดยไม่จำเป็นต้องเกิดจาก Cache อย่างเดียว ดังนั้นบทความนี้แยกข้อค้นพบที่ทีมวัดจริงออกจากคำอธิบายเชิงกลไกและข้อเสนอประยุกต์ใช้ของ Hybrid Mind เสมอ
สุดท้าย การเพิ่ม History Budget ไม่ใช่การอนุญาตให้ Agent ใช้ Token ไม่จำกัด รายงานเองระบุว่าหาก Agent วนลูปและ Context โตมาก ค่าใช้จ่ายอาจพุ่งทันทีเมื่อ Cache แตก ต้องใช้เพดาน Step, Tokens, Cost และ Timeout ควบคู่กับการจัดการ Context
FAQ / Sources
คำถามที่พบบ่อยและแหล่งข้อมูล
Asana ลดต้นทุน AI Agent 76 เท่าจริงหรือ?
รายงานการทดลองระบุการลด estimated model cost เทียบ Development Baseline ประมาณ 76 เท่าใน Task ที่กำหนด ยังไม่ใช่หลักฐานว่าค่าใช้จ่ายรวมของ Asana ใน Production ลดลงเท่ากัน
ต้องใช้ GPT-6.1 Sol จึงจะประหยัดได้หรือไม่?
ไม่จำเป็น เพราะ Model B เดิมก็ลดค่าใช้จ่ายประมาณ 29 เท่าเมื่อแก้ Workflow ขณะที่ผลข้ามโมเดลขึ้นอยู่กับราคา API และการตั้งค่าเฉพาะช่วงเวลาทดลอง
Append-only History คืออะไร?
คือการเพิ่มข้อมูลใหม่ท้ายประวัติแทนการแก้หรือลบข้อความก่อนหน้าในทุก Step เพื่อรักษา Prefix เดิมให้ Cache นำไปใช้ซ้ำได้ ขณะที่ยังต้องมีนโยบายจำกัดความยาวเมื่อ Task ใหญ่เกิน Context
Batch Pruning 20:1 ดีกว่า No Pruning เสมอหรือไม่?
ไม่ งาน Follow-up ของ Asana พบว่า No Pruning อาจมี Cost per Call ต่ำกว่าใน Task เดียวกัน แต่ในงานยาวหรือ Context Window เล็กอาจต้อง Prune เพื่อไม่ให้ Run ล้มเหลว
89% Cache Read หมายถึง AI เร็วขึ้น 89% หรือไม่?
ไม่ใช่ 89% คือสัดส่วน Input Tokens ที่อ่านจาก Cache ในเงื่อนไข Best ของ Sol เท่านั้น ความเร็วรวมขึ้นอยู่กับจำนวน Calls, Browser Actions, Tool Latency, Output และปัจจัยอื่นด้วย
เอาแนวคิดนี้ไปใช้กับ Hybrid Mind AI Newsroom ได้อย่างไร?
เริ่มด้วยการวัด Prompt, Token Usage, Trace และความครบของหลักฐานในการค้นข่าว จากนั้นออกแบบ A/B Benchmark ของ History Policy ในระบบทดลอง โดยยังไม่แตะ Production และต้องคงเกณฑ์ Fact Check กับ Source Citation ให้ครบ
แหล่งอ้างอิงต้นฉบับ
[1] Frank Hidalgo (2026), How Asana used Codex to optimize browser agent costs and runtime — รายงานเทคนิค 32 หน้า ลงวันที่ 30 ก.ย. 2026; Methods, Results, Supplement, Run Ledger
[2] StackAI by Asana, How StackAI ... Reduce Browser Agent Costs — 8 ต.ค. 2026
[3] OpenAI, Asana cuts model costs 76x in browser tests — 9 ต.ค. 2026
เรียบเรียงและวิเคราะห์เชิงวิศวกรรมโดย Hybrid Mind · ตรวจแหล่งข้อมูล ณ 11 ตุลาคม 2026 · ตัวเลข Benchmark เป็นของ Asana/StackAI ไม่ใช่การทดสอบต้นทุน API ของ Hybrid Mind









ใส่ความเห็น