การสร้างเทสต์จากสเปก OpenAPI ไม่ใช่ปัญหาทางเทคนิคมาระยะหนึ่งแล้ว โมเดลที่อ่าน path item แล้วสร้างคำขอที่สมเหตุสมผลได้มีให้ใช้มาสองปีแล้ว ปัญหาคือค่าใช้จ่าย การสร้างเทสต์มีต้นทุนต่อการรันสูงพอที่ทีมต่างๆ มองมันเป็นการย้ายระบบครั้งเดียว: สร้างชุดเทสต์ครั้งเดียว คอมมิต แล้วดูแลด้วยมือตลอดไป เพราะการสร้างใหม่ทุกครั้งที่สเปกเปลี่ยนจะไปโผล่เป็นรายการค่าใช้จ่ายที่ใครสักคนจะถามถึง
GPT-6 Luna ที่เปิดตัวเมื่อวันที่ 22 กันยายน 2026 ในราคา $0.10 ต่อโทเคนอินพุตหนึ่งล้านโทเคน และ $0.50 ต่อโทเคนเอาต์พุตหนึ่งล้านโทเคน ผลักงานนี้ไปอีกฝั่งของเส้นนั้น การรันเต็มรอบบนสเปก 42 เอนด์พอยต์คิดออกมาได้ราว $0.29 หากไม่ใช้แคช และต่ำกว่า $0.10 หากใช้ ถูกพอที่จะเลิกดูแลชุดเทสต์ที่สร้างขึ้น และเพียงสร้างใหม่ทุกครั้งที่มีการ merge
นี่คือตัวเลขคณิตศาสตร์ รูปร่างของคำขอ ความหน่วงที่คุณต้องวางแผนรับมือ และสองสิ่งที่โมเดลยังทำผิด
ราคาที่ขยับ
GPT-6 Luna เป็นโมเดลใหม่ในตระกูล GPT-6 ไม่ใช่ระดับ GPT-5.6 ที่เปลี่ยนชื่อ OpenAI กล่าวว่า Sol และ Luna ถูกฝึกด้วยวิธีที่คล้ายกับ GPT-6 Astra และทั้งคู่ถูกกว่าราคาโปรโมชันของ GPT-5.6 อยู่ 50% คำกำกับนั้นเป็นของ OpenAI เอง และมันสำคัญ: การเปรียบเทียบนั้นเทียบกับราคาโปรโมชัน ไม่ใช่ราคาปกติ ดูสายเลือดแบบเต็มได้ใน สรุปรวมสงครามราคาโมเดล AI ของเรา
| GPT-6 Luna | |
|---|---|
| รหัส API | gpt-6-luna |
| อินพุต | $0.10 ต่อโทเคนหนึ่งล้านโทเคน |
| เอาต์พุต | $0.50 ต่อโทเคนหนึ่งล้านโทเคน |
| การอ่านอินพุตจากแคช | ส่วนลด 90% |
| หน้าต่างบริบท | 1,000,000 โทเคน |
| ดัชนี Artificial Analysis | 37 |
สำหรับงานนี้ หน้าต่างบริบทสำคัญกว่าราคาที่พาดหัว หนึ่งล้านโทเคนหมายความว่าสเปกทั้งหมด ธรรมเนียมการเขียนเทสต์ของทีมคุณ และชุดตัวอย่างคำขอ ใส่ในพรอมป์เดียวได้แบบเหลือที่ คุณไม่ต้องแบ่งเป็นชิ้น และไม่ต้องเขียนลอจิกดึงข้อมูลเพื่อหาว่า operation หนึ่งพึ่งพาสคีมาใด อ่านเพิ่มเติมเกี่ยวกับโมเดลได้ใน GPT-6 Luna คืออะไร
กำหนดรูปร่างของงานก่อนคิดราคา
สองรูปร่าง ต้นทุนต่างกันมาก
แบบครั้งเดียว (one shot) ใส่สเปกทั้งหมดลงในบริบท แล้วขอทั้งชุดเทสต์ในการตอบกลับครั้งเดียว ถูกกว่าในด้านอินพุต แต่แย่กว่าในด้านเอาต์พุต: การตอบกลับที่ครอบคลุม 42 operation จะบางลงอย่างเห็นได้ชัดเมื่อถึงอันดับที่ยี่สิบ โดยเอนด์พอยต์ช่วงต้นได้ห้าเคสแต่ละอัน ส่วนช่วงท้ายได้แค่ happy path กับอาการยักไหล่ และทั้งการรันก็มีหน่วยลองใหม่แค่หน่วยเดียว
แบบแยกตาม operation จะส่งบริบทสเปกที่ใช้ร่วมกันบวกกับหนึ่ง operation จำนวน 42 ครั้ง อินพุตเพิ่มขึ้นเพราะบริบทที่ใช้ร่วมกันถูกส่งซ้ำ แต่คุณภาพเอาต์พุตคงที่ แต่ละครั้งเรียกสามารถลองใหม่ได้อย่างอิสระ และแต่ละไฟล์เทียบความต่าง (diff) กับการรันครั้งก่อนได้สะอาด แคชดึงต้นทุนอินพุตส่วนเกินกลับมาได้เกือบหมด ซึ่งทำให้รูปร่างนี้เป็นแบบที่ควรใช้คิดราคา
งบสำหรับหนึ่งครั้งเรียก โดยใช้สเปกขนาดกลาง:
| ส่วนของคำขอ | โทเคน |
|---|---|
| System prompt และธรรมเนียมการเขียนเทสต์ของทีม | 4,000 |
| บริบทสเปกที่ใช้ร่วมกัน: components, security schemes, servers | 48,000 |
| operation เดียวที่กำลังทดสอบ บวกตัวอย่างของมัน | 1,500 |
| ไฟล์เทสต์ที่สร้างขึ้น ส่งกลับมา | 3,000 |
สองแถวแรกเหมือนกันทุกไบต์ในทุกครั้งที่เรียก คำนำหน้า 52,000 โทเคนนั้นคือสิ่งที่แคชเข้าไปทำงานด้วย และการวางส่วนที่ไม่เปลี่ยนแปลงไว้ข้างหน้าคือการตัดสินใจที่ให้ leverage สูงสุดในการตั้งค่า
หนึ่งรอบมีต้นทุนเท่าไร
ด้วย 42 operation ตามงบนั้น การรันจะใช้ 2,247,000 โทเคนอินพุต และ 126,000 โทเคนเอาต์พุต
ที่เรตของ Luna นั่นคืออินพุต $0.2247 และเอาต์พุต $0.0630 ดังนั้น $0.2877 ต่อรอบ ต่ำกว่าเจ็ดในสิบของหนึ่งเซนต์ต่อเอนด์พอยต์เล็กน้อย โปรไฟล์โทเคนเดียวกันเทียบกับโมเดลอื่นที่เปิดตัวหรือปรับราคาในช่วงสองสัปดาห์เดียวกัน:
| โมเดล | อินพุต / เอาต์พุต ต่อล้าน | ต้นทุนสำหรับการรันนี้ |
|---|---|---|
| GPT-6 Luna | $0.10 / $0.50 | $0.29 |
| GPT-5.6 Luna ราคาปกติ | $1 / $6 | $3.00 |
| Grok 4.7 | $2 / $6 | $5.25 |
| GPT-6 Sol | $2 / $10 | $5.75 |
| Claude Opus 5.5 | $4 / $20 | $11.51 |
| Claude Opus 5 | $5 / $25 | $14.39 |
| GPT-6 Astra | $10 / $50 | $28.77 |
Astra มีเรตสูงกว่า Luna 100 เท่าพอดีทั้งอินพุตและเอาต์พุต ดังนั้นมันจึงมีต้นทุน 100 เท่าพอดีสำหรับงานนี้ ส่วน Claude Opus 5.5 คือ 40 เท่า
ช่วงห่างนั้นคือการตัดสินใจทั้งหมด ที่ $28.77 ต่อรอบ คุณจะสร้างลอจิกแบบส่วนเพิ่ม: ติดตามว่า operation ใดเปลี่ยน แฮชแต่ละ path item สร้างใหม่เฉพาะส่วนที่ต่าง แล้วดีบักกลไกนั้นเมื่อมันหลุดซิงก์กับสเปก ที่ $0.29 คุณลบลอจิกแบบส่วนเพิ่มทิ้ง ยี่สิบ merge ต่อเดือนคือ $5.75 น้อยกว่านาที CI ที่ใช้รันเทสต์ที่โมเดลเขียนเสียอีก เพื่อให้เห็นขนาด OpenAI รายงานว่านักวิจัยค่ามัธยฐานของบริษัทใช้จ่ายมากกว่า $600 ต่อวันกับ coding agent โดยเปอร์เซ็นไทล์ที่ 90 อยู่เหนือ $7,000
prompt caching พาไปถึงตรงไหน
GPT-6 มาพร้อมการอัปเดตแคชของจริงควบกับการเปลี่ยนราคา: ส่วนลด 90% สำหรับการอ่านอินพุตจากแคช อัตราการแคชฮิตสูงขึ้นโดยค่าเริ่มต้น แดชบอร์ดและเครื่องมือวินิจฉัย จุดตัด (breakpoint) ที่ระบุชัดเจนเพื่อให้คุณเลือกได้ว่าคำนำหน้าที่แคชจะสิ้นสุดตรงไหน และแคชที่อยู่รอดข้ามการเปลี่ยนแปลงของ reasoning effort และชุดเครื่องมือที่มี GitHub รายงานว่าโทเคนพรอมป์ที่ต้องประมวลผลใหม่ลดลงมากกว่า 50% จากคำขอหลายพันล้านครั้ง รายละเอียดอยู่ใน prompt caching ของ GPT-6
เมื่อนำมาใช้กับการรันข้างต้น โดยหัก 90% จากเรตอินพุต $0.10 เหลือ $0.01 ต่อล้านโทเคนสำหรับการอ่านจากแคช:
| รายการ | โทเคน | ต้นทุน |
|---|---|---|
| การเรียกครั้งแรก คำนำหน้า 52,000 โทเคนที่เรตเต็ม | 52,000 | $0.0052 |
| อีก 41 ครั้งที่เหลืออ่านคำนำหน้าจากแคช | 2,132,000 | $0.0213 |
| เนื้อหาต่อ operation ที่ไม่เคยถูกแคช | 63,000 | $0.0063 |
| เอาต์พุต ไม่ได้รับผลจากแคช | 126,000 | $0.0630 |
| รวม | $0.096 |
ประมาณหนึ่งในสามของต้นทุนที่ไม่ใช้แคช ต่ำกว่าหนึ่งในสี่ของเซนต์ต่อเอนด์พอยต์เล็กน้อย สองสิ่งที่อย่าไปสมมติ OpenAI ระบุส่วนลด 90% แต่ในแหล่งข้อมูลของเรา ไม่ได้พิมพ์เรตการอ่านจากแคชเป็นตัวเลขดอลลาร์สำหรับ Luna ดังนั้น $0.01 ข้างต้นจึงเป็นการคำนวณ ไม่ใช่เรตที่ประกาศ และไม่มีแหล่งใดของเราที่อ้างอิงอายุของแคช ดังนั้นยิง 42 คำขอติดกันไปเลย แทนที่จะกระจายมันไปทั่วคิว CI ที่เชื่องช้า และยืนยันอัตราการฮิตในแดชบอร์ด
คำขอ
ไม่มีอะไรแปลกพิสดาร ลำดับนั่นแหละที่คุ้มค่า:
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"reasoning_effort": "high",
"messages": [
{ "role": "system",
"content": "You write API tests. Emit one test file. Assert on status, response schema and error shape. Never assert on a field absent from the supplied schema." },
{ "role": "user",
"content": "Shared spec context:\n<components, securitySchemes, servers>" },
{ "role": "user",
"content": "Operation under test:\nPOST /orders\n<path item and examples>" }
]
}'
system prompt และบล็อกสเปกที่ใช้ร่วมกันเหมือนกันทุกไบต์ในการเรียกทั้ง 42 ครั้ง และอยู่ข้างหน้า ส่วน operation แตกต่างกันและอยู่ท้ายสุด สลับสองส่วนนี้แล้วคุณจะไม่ได้แคชอะไรเลย การรันจึงมีต้นทุน $0.29 แทนที่จะเป็น $0.096 นั่นคือกลไกทั้งหมด
การตั้งค่า effort เป็น high นั้นจงใจ การเพิ่มขึ้นที่ Luna ทำได้เหนือรุ่นก่อนซึ่งประกาศไว้นั้นวัดที่ effort สูงกว่า และเนื่องจากแคชของ GPT-6 อยู่รอดข้ามการเปลี่ยน effort คุณจึงปรับมันเป็นราย operation ได้โดยไม่ต้องสร้างคำนำหน้าใหม่ เก็บการตั้งค่าสูงสุดไว้ให้เอนด์พอยต์ที่เกี่ยวกับเงินหรือการยืนยันตัวตน
วางงบเป็นเวลา ไม่ใช่เงิน
ถูกไม่ได้แปลว่าเร็ว Artificial Analysis ซึ่งเป็นบุคคลที่สาม วัดรุ่น max reasoning ของ Luna ได้ 153.9 โทเคนเอาต์พุตต่อวินาที โดยมีเวลาถึงโทเคนแรกที่ 124.23 วินาที ตัวเลขทั้งสองเป็นของพวกเขา ไม่ใช่ของ OpenAI ทั้งคู่ใช้เฉพาะกับรุ่น max และ AA ให้คะแนนใหม่ตลอดเวลา ดังนั้นให้ถือเป็นตัวเลขบอกทิศทาง
ถ้ารับตามตัวเลข หนึ่งครั้งเรียกที่ max effort จะรอราว 124 วินาที บวกอีกประมาณ 20 วินาทีในการสตรีม 3,000 โทเคน เรียกได้ว่า 144 วินาที ถ้าทำ 42 ครั้งเรียงกันจะใช้เวลาราว 101 นาที ถ้าทำพร้อมกันแปดทางจะใช้ราว 13 นาที ซึ่งเป็นสเตจ CI ธรรมดา ๆ
เรื่องนี้ตัดไปคนละทางกับข้อโต้แย้งเรื่องการเลือกโมเดลส่วนใหญ่ ซึ่งเป็นเหตุผลที่การจับคู่นี้ได้ผล: เวลาถึงโทเคนแรกเป็นหายนะสำหรับผู้ช่วยแบบอินเทอร์แอกทีฟ และแทบไม่มีความหมายสำหรับงานแบตช์ที่เขียนไฟล์ เทรดออฟแบบเดียวกันนี้เกิดขึ้นกับรุ่นพี่ที่ใหญ่กว่าใน เวลาถึงโทเคนแรกของ GPT-6 Sol
สิ่งที่มันทำได้ดี และสองสิ่งที่มันยังทำไม่ได้
ผลลัพธ์ที่ OpenAI ประกาศสำหรับ Luna นั้นแข็งแกร่งกว่าที่ราคาบ่งบอก บน DeepSWE 1.1 มันทำได้ 66.6% ที่ max effort ซึ่ง OpenAI จัดให้อยู่ในระดับเดียวกับ Claude Opus 5 และ Fable 5 ที่ effort ปานกลาง ขณะที่มีต้นทุนต่องานต่ำกว่า Opus 5 อยู่ 93% และต่ำกว่า Fable 5 อยู่ 96% บน AutomationBench มันเอาชนะรุ่นก่อนได้ 5.4 จุดเปอร์เซ็นต์ ที่ต้นทุนต่องานต่ำกว่า 58% ทั้งหมดเป็นผลที่ OpenAI รันบนฮาร์เนสของ OpenAI เอง และไม่มีอันใดวัดการสร้างเทสต์จากสเปก
โหมดความล้มเหลวสองแบบสำคัญที่นี่มากกว่า benchmark ใด ๆ
โมเดลทดสอบได้เฉพาะสิ่งที่สเปกบอก ถ้าสเปกของคุณระบุ 200 และ 400 สำหรับ POST /orders แต่บริการยังคืน 409 เมื่อมี idempotency key ซ้ำ คุณจะไม่ได้เทสต์กรณีขัดแย้งเลย และชุดเทสต์ก็ยังดูสมบูรณ์ คุณภาพการสร้างถูกจำกัดด้วยคุณภาพของสเปก ซึ่งทำให้สเปกเป็นสิ่งที่มีค่าแก่การลงทุน ไม่ใช่พรอมป์
การสร้างแบบถูก ๆ ล้มเหลวด้วยการดูเหมือนถูก ข้อผิดพลาดที่เป็นเอกลักษณ์ไม่ใช่เทสต์ที่พัง แต่เป็นเทสต์ที่ผ่านโดยตรวจสอบฟิลด์ที่การตอบกลับไม่เคยมี หรือรหัสสถานะที่เอนด์พอยต์ไม่เคยส่งออกมา พวกนี้ผ่านการรีวิวได้ง่ายเพราะอ่านแล้วเหมือนเทสต์ ตรวจสอบทุก assertion ที่สร้างขึ้นเทียบกับสคีมาแบบอัตโนมัติก่อนที่มันจะถูกรวมเข้าไป โดยปฏิเสธอันใดที่อ้างถึงฟิลด์ที่ไม่มีอยู่ใน components การตรวจสอบนั้นไม่มีค่าใช้จ่ายและกำจัดข้อผิดพลาดประเภทนี้ได้ทั้งหมด
ทำให้เอาต์พุตรันได้
ไฟล์เทสต์ที่สร้างขึ้นมีค่าเท่ากับฮาร์เนสที่มันรันอยู่พอดี เก็บสเปกไว้เป็นแหล่งความจริง สร้างโดยอ้างอิงจากมัน แล้วนำเคสไปไว้ที่ที่มันจะถูกรันทุกครั้งที่ push
Apidog ครอบคลุมครึ่งหลังของวงจรนั้น มันนำเข้าสเปกที่คุณใช้สร้าง ซึ่งทำให้บริบทที่ใช้ร่วมกันในพรอมป์ของคุณและนิยามคำขอในตัวรันของคุณมาจากเอกสารเดียวและไม่สามารถคลาดเคลื่อนกันได้ เคสที่สร้างขึ้นกลายเป็น test scenario ที่ assertion ตรวจสอบเทียบกับสคีมาที่นำเข้า ทำให้การตรวจสอบข้างต้นกลายเป็นประตูกลไก แทนที่จะเป็นงานรีวิวที่น่าเบื่อ Smart mock ให้บริการตามสเปกในขณะที่แบ็กเอนด์ยังเขียนไม่เสร็จ ดังนั้นชุดเทสต์ที่สร้างขึ้นจึงล้มเหลวอย่างซื่อตรงได้ก่อนที่จะมีของจริงให้ยิงใส่ และ scenario เหล่านั้นรันใน CI ซึ่งเป็นที่เดียวที่เวิร์กโฟลว์สร้างใหม่ทุกครั้งที่ merge จะคุ้มค่า
นี่คุ้มค่าที่จะส่งงานไปให้ Luna ไหม?
คุ้ม แต่มีข้อแม้ ต้นทุนไม่ใช่เหตุผลที่จะข้ามมันอีกต่อไป: $0.29 ต่อรอบ หรือต่ำกว่า $0.10 หากใช้แคช น้อยกว่าค่าการประชุมที่คุณเถียงกันว่าจะสร้างใหม่หรือไม่เสียอีก ความหน่วงนั้นมีจริง แต่มันตกอยู่ในช่วงที่ไม่มีใครรออยู่ และผลลัพธ์ที่ประกาศของ Luna วางมันไว้ใกล้เคียงโมเดลที่มีต้นทุนสูงกว่า 40 ถึง 100 เท่าในงาน agentic coding
ไม่มีอะไรในนั้นทำให้เอาต์พุตเชื่อถือได้ทันทีที่มาถึง ใช้เงินที่ประหยัดได้ไปกับประตูตรวจสอบสคีมาและการที่มนุษย์อ่านผลการรันครั้งแรก และมองผลลัพธ์เป็นดราฟต์แรกที่ครอบคลุมพื้นผิวที่เขียนเอกสารไว้ครบถ้วน และไม่ครอบคลุมพื้นผิวที่ไม่ได้เขียนไว้เลย ก็ยังเป็นจุดเริ่มต้นที่ดีกว่าชุดเทสต์ที่เขียนด้วยมือซึ่งหยุดตามสเปกไปตั้งแต่สี่รีลีสก่อน
