Việc sinh test từ một đặc tả OpenAPI đã không còn là vấn đề kỹ thuật từ lâu. Các mô hình có thể đọc một path item và tạo ra một request hợp lý đã có sẵn từ hai năm nay. Vấn đề nằm ở hóa đơn. Chi phí sinh test đủ cao mỗi lần chạy đến mức các đội coi đó như một cuộc di trú một lần: sinh một bộ test một lần, commit nó, rồi bảo trì thủ công mãi mãi, bởi vì sinh lại mỗi khi đặc tả thay đổi sẽ xuất hiện như một mục chi phí mà ai đó sẽ thắc mắc.
GPT-6 Luna, được công bố ngày 22 tháng 9 năm 2026 với giá $0.10 mỗi triệu token đầu vào và $0.50 mỗi triệu token đầu ra, đưa công việc sang phía bên kia của ranh giới đó. Một lượt chạy đầy đủ trên đặc tả 42 endpoint tốn khoảng $0.29 nếu không dùng cache và dưới $0.10 nếu có. Như vậy đủ rẻ để ngừng bảo trì một bộ test đã sinh và chỉ cần sinh lại nó mỗi lần merge.
Dưới đây là phép tính, hình dạng request, độ trễ bạn phải tính đến, và hai điều mô hình vẫn làm sai.
Mức giá đã dịch chuyển
GPT-6 Luna là một mô hình mới trong gia đình GPT-6, không phải một bậc GPT-5.6 được đổi tên. OpenAI cho biết Sol và Luna được huấn luyện bằng các phương pháp tương tự GPT-6 Astra, và cả hai đều rẻ hơn 50% so với giá khuyến mãi của GPT-5.6. Định ngữ đó là của chính OpenAI và nó quan trọng: so sánh là với mức giá khuyến mãi, không phải giá niêm yết. Xem đầy đủ phả hệ trong bản tổng hợp cuộc chiến giá mô hình AI.
| GPT-6 Luna | |
|---|---|
| API id | gpt-6-luna |
| Đầu vào | $0.10 mỗi triệu token |
| Đầu ra | $0.50 mỗi triệu token |
| Đọc đầu vào từ cache | giảm giá 90% |
| Cửa sổ ngữ cảnh | 1,000,000 token |
| Chỉ số Artificial Analysis | 37 |
Với công việc này, cửa sổ ngữ cảnh quan trọng hơn mức giá được nhắc đến. Một triệu token nghĩa là toàn bộ đặc tả, các quy ước test nội bộ của bạn và một tập request mẫu vừa vặn trong một prompt mà vẫn còn dư chỗ. Bạn không phải chia nhỏ, và bạn không phải viết logic truy xuất để tìm ra thao tác phụ thuộc vào những schema nào. Tìm hiểu thêm về mô hình trong GPT-6 Luna là gì.
Định hình công việc trước khi định giá nó
Hai hình dạng, chi phí rất khác nhau.
Phiên bản một phát đặt toàn bộ đặc tả vào ngữ cảnh và yêu cầu toàn bộ bộ test trong một lần hoàn thành. Rẻ hơn về đầu vào, tệ hơn về đầu ra: một lần hoàn thành bao gồm 42 thao tác sẽ mỏng đi rõ rệt đến thao tác thứ hai mươi, khi các endpoint đầu nhận được năm case mỗi cái còn phần đuôi chỉ nhận được một happy path và một cái nhún vai. Cũng chỉ có một đơn vị thử lại cho cả lượt chạy.
Phiên bản theo từng thao tác gửi ngữ cảnh đặc tả dùng chung cộng với một thao tác, 42 lần. Đầu vào tăng lên vì ngữ cảnh dùng chung lặp lại, nhưng chất lượng đầu ra giữ được, mỗi lần gọi có thể thử lại độc lập, và mỗi file diff sạch sẽ so với lần chạy trước. Cache lấy lại phần lớn chi phí đầu vào tăng thêm, khiến đây là hình dạng đáng để định giá.
Ngân sách cho một lần gọi, dùng một đặc tả cỡ trung bình:
| Phần của lần gọi | Token |
|---|---|
| System prompt và các quy ước test nội bộ | 4,000 |
| Ngữ cảnh đặc tả dùng chung: components, security schemes, servers | 48,000 |
| Thao tác đơn lẻ đang được test, cùng các ví dụ của nó | 1,500 |
| File test được sinh, trả về | 3,000 |
Hai hàng đầu giống hệt nhau từng byte trong mọi lần gọi. Tiền tố 52,000 token đó là thứ mà cache tác động lên, và việc đặt phần bất biến lên trước là quyết định có đòn bẩy cao nhất trong toàn bộ thiết lập.
Một lượt chạy tốn bao nhiêu
Với 42 thao tác ở ngân sách đó, lượt chạy tốn 2,247,000 token đầu vào và 126,000 token đầu ra.
Với mức giá của Luna, đó là $0.2247 cho đầu vào và $0.0630 cho đầu ra, vậy $0.2877 cho lượt chạy, chỉ dưới bảy phần mười xu một endpoint. Cùng hồ sơ token đó so với các mô hình khác ra mắt hoặc đổi giá trong cùng hai tuần:
| Mô hình | Đầu vào / đầu ra mỗi triệu | Chi phí cho lượt chạy này |
|---|---|---|
| GPT-6 Luna | $0.10 / $0.50 | $0.29 |
| GPT-5.6 Luna, giá niêm yết | $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 có mức giá đúng gấp 100 lần Luna trên cả đầu vào và đầu ra, nên chi phí cho công việc này đúng gấp 100 lần. Claude Opus 5.5 gấp 40 lần.
Khoảng cách đó chính là toàn bộ quyết định. Ở mức $28.77 một lượt, bạn xây logic tăng dần: theo dõi thao tác nào đã thay đổi, băm từng path item, chỉ sinh lại phần diff, rồi gỡ lỗi cỗ máy đó khi nó lệch khỏi đặc tả. Ở mức $0.29, bạn xóa logic tăng dần đi. Hai mươi lần merge một tháng là $5.75, ít hơn số phút CI dùng để chạy các test mà mô hình đã viết. Để so sánh quy mô, OpenAI báo cáo rằng nhà nghiên cứu trung vị của họ chi hơn $600 một ngày cho các coding agent, với phân vị thứ 90 trên $7,000.
Prompt caching đưa nó đến đâu
GPT-6 đã phát hành một bản cập nhật cache thực sự song song với thay đổi giá: giảm giá 90% cho các lần đọc đầu vào từ cache, tỷ lệ trúng cache cao hơn theo mặc định, một dashboard và một công cụ chẩn đoán, các breakpoint tường minh để bạn chọn nơi tiền tố được cache kết thúc, và cache tồn tại qua các thay đổi về reasoning effort và tính khả dụng của công cụ. GitHub báo cáo giảm hơn 50% số prompt token cần xử lý mới trên hàng tỷ request. Chi tiết trong GPT-6 prompt caching.
Áp dụng cho lượt chạy ở trên, lấy 90% khỏi mức $0.10 cho đầu vào thành $0.01 mỗi triệu cho các lần đọc từ cache:
| Hạng mục | Token | Chi phí |
|---|---|---|
| Lần gọi đầu, tiền tố 52,000 token ở mức giá đầy đủ | 52,000 | $0.0052 |
| 41 lần gọi còn lại đọc tiền tố đã cache | 2,132,000 | $0.0213 |
| Nội dung theo từng thao tác, không bao giờ được cache | 63,000 | $0.0063 |
| Đầu ra, không bị ảnh hưởng bởi cache | 126,000 | $0.0630 |
| Tổng | $0.096 |
Khoảng một phần ba chi phí không cache, chỉ dưới một phần tư xu một endpoint. Hai điều đừng giả định. OpenAI nêu mức giảm 90% nhưng trong các nguồn của chúng tôi không công bố mức giá đô-la cho đọc từ cache của Luna, nên $0.01 ở trên là phép tính, không phải mức giá được công bố. Và không có gì chúng tôi có trích dẫn thời gian sống của cache, nên hãy bắn 42 lần gọi liên tiếp nhau thay vì rải chúng qua một hàng đợi CI chậm, và xác nhận tỷ lệ trúng cache trong dashboard.
Request
Không có gì lạ. Thứ tự mới là thứ đáng giá:
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 và khối đặc tả dùng chung giống hệt từng byte trong cả 42 lần gọi và đứng trước. Thao tác thay đổi và đứng cuối. Đảo hai thứ này thì bạn không cache được gì, nên lượt chạy tốn $0.29 thay vì $0.096. Đó là toàn bộ cơ chế.
Thiết lập effort high là có chủ đích. Những cải thiện được công bố của Luna so với bản tiền nhiệm được đo ở effort cao hơn, và vì cache của GPT-6 tồn tại qua thay đổi effort, bạn có thể điều chỉnh nó theo từng thao tác mà không cần dựng lại tiền tố. Hãy để dành các thiết lập cao nhất cho những endpoint liên quan đến tiền hoặc xác thực.
Dự trù thời gian, không phải tiền
Rẻ không có nghĩa là nhanh. Artificial Analysis, một bên thứ ba, đo biến thể reasoning tối đa của Luna đạt 153.9 token đầu ra mỗi giây với thời gian đến token đầu tiên là 124.23 giây. Cả hai con số là của họ chứ không phải của OpenAI, cả hai áp dụng riêng cho biến thể tối đa, và AA chấm điểm lại liên tục, nên hãy coi chúng là mang tính định hướng.
Nếu lấy nguyên giá trị, một lần gọi ở effort tối đa là khoảng 124 giây chờ cộng khoảng 20 giây để stream 3,000 token, tạm tính 144 giây. Bốn mươi hai lần tuần tự là khoảng 101 phút. Tám lần đồng thời là khoảng 13 phút, một giai đoạn CI bình thường.
Điều này cắt theo hướng ngược lại với hầu hết các lập luận chọn mô hình, đó là lý do sự kết hợp này hiệu quả: thời gian đến token đầu tiên là thảm họa với một trợ lý tương tác và gần như không liên quan với một job chạy theo lô viết ra file. Cùng sự đánh đổi đó ở người anh em lớn hơn trong thời gian đến token đầu tiên của GPT-6 Sol.
Những gì nó làm đúng, và hai điều nó không
Kết quả được công bố của OpenAI cho Luna mạnh hơn mức giá gợi ý. Trên DeepSWE 1.1, nó đạt 66.6% ở effort tối đa, mà OpenAI đánh giá ngang với Claude Opus 5 và Fable 5 ở effort trung bình trong khi chi phí mỗi tác vụ thấp hơn 93% so với Opus 5 và thấp hơn 96% so với Fable 5. Trên AutomationBench, nó vượt bản tiền nhiệm 5.4 điểm phần trăm với chi phí mỗi tác vụ thấp hơn 58%. Tất cả đều do OpenAI chạy trên các harness của OpenAI, và không có cái nào đo việc sinh test từ một đặc tả.
Hai kiểu thất bại quan trọng ở đây hơn bất kỳ benchmark nào.
Mô hình chỉ có thể test những gì đặc tả nói. Nếu đặc tả của bạn ghi 200 và 400 cho POST /orders nhưng dịch vụ còn trả về 409 khi trùng idempotency key, bạn không có test xung đột nào và bộ test vẫn trông có vẻ đầy đủ. Chất lượng sinh bị giới hạn bởi chất lượng đặc tả, điều đó khiến đặc tả trở thành thứ đáng đầu tư, không phải prompt.
Việc sinh rẻ tiền thất bại bằng cách trông có vẻ đúng. Lỗi đặc trưng không phải là một test hỏng, mà là một test pass khẳng định trên một trường mà response không bao giờ chứa, hoặc một mã trạng thái mà endpoint không bao giờ phát ra. Những cái đó qua được review vì chúng đọc như test. Hãy xác thực mọi assertion được sinh với schema một cách máy móc trước khi nó được đưa vào, loại bỏ bất kỳ cái nào tham chiếu đến một trường không có trong components. Việc kiểm tra đó không tốn gì và giết sạch cả lớp lỗi này.
Làm cho đầu ra có thể chạy được
Các file test được sinh đáng giá đúng bằng cái harness mà chúng chạy trong đó. Hãy giữ đặc tả làm nguồn chân lý, sinh dựa trên nó, rồi đưa các case vào nơi chúng thực thi mỗi lần push.
Apidog bao phủ nửa sau của vòng lặp đó. Nó import đặc tả mà bạn đang sinh từ đó, nên ngữ cảnh dùng chung trong prompt của bạn và các định nghĩa request trong runner của bạn đến từ một tài liệu duy nhất và không thể lệch nhau. Các case được sinh trở thành test scenario với các assertion xác thực với schema đã import, biến việc kiểm tra ở trên thành một cổng máy móc thay vì một việc review phiền hà. Smart mock phục vụ đặc tả trong khi backend vẫn đang được viết, nên một bộ test được sinh có thể thất bại một cách trung thực trước khi có bất cứ thứ gì thật để gọi. Và các scenario chạy trong CI, nơi duy nhất mà quy trình sinh lại mỗi lần merge thực sự có lợi.
Có đáng để định tuyến việc này sang Luna không?
Có, kèm một lưu ý. Chi phí không còn là lý do để bỏ qua: $0.29 một lượt, hoặc dưới $0.10 khi dùng cache, ít hơn cả cuộc họp nơi bạn tranh luận có nên sinh lại hay không. Độ trễ là thật nhưng rơi vào một khoảng thời gian mà không ai đang chờ. Và các kết quả được công bố của Luna đặt nó gần với các mô hình tốn kém hơn 40 đến 100 lần cho công việc coding dạng agent.
Không điều nào trong đó khiến đầu ra đáng tin ngay khi nhận được. Hãy tiêu số tiền bạn tiết kiệm được vào một cổng xác thực schema và một lần đọc thủ công lần chạy đầu tiên, và coi kết quả là bản nháp đầu tiên bao phủ hoàn toàn bề mặt được ghi tài liệu và hoàn toàn không bao phủ bề mặt không được ghi tài liệu. Vẫn là một vị trí xuất phát tốt hơn so với bộ test viết tay đã ngừng theo dõi đặc tả từ bốn bản phát hành trước.
