# ต้นทุน AI Token: ประมาณการบิล LLM รายเดือนของคุณ

> ต้นทุน AI token คือราคาของ input และ output token แต่ละล้าน token ประมาณการบิล LLM รายเดือนจากเวิร์กโหลด อัตราโมเดล การใช้ cache และ reasoning แล้วเปรียบเทียบกับ usage ที่วัดได้จริง

ต้นทุน AI token ดูเล็กน้อยจนกระทั่งฟีเจอร์หนึ่งส่งบริบทยาวเดิมซ้ำแล้วซ้ำเล่า เมื่อนั้นคำถามไม่ใช่ "หนึ่ง token ราคาเท่าไร?" แต่คือฟีเจอร์ของคุณสร้าง token ที่ต้องจ่ายกี่ token ในหนึ่งเดือน

**คำตอบสั้น ๆ:** คูณจำนวน token รวมของ uncached input, cached input, cache-write และ output ของเวิร์กโหลดด้วยอัตราต่อ token ที่ตรงกัน แล้วหารด้วยหนึ่งล้าน รวม reasoning token ไว้ใน output ในกรณีที่ผู้ให้บริการคิดค่าใช้จ่ายไว้ตรงนั้น และใช้อัตรา batch ที่มีสิทธิ์ถ้ามี สำหรับฟีเจอร์ตอบซัพพอร์ตแบบง่ายที่จัดการ 10,000 ตั๋วต่อเดือน ที่ 2,000 input และ 350 output token ต่อตั๋ว การประมาณการนี้อยู่ในช่วง $8.20 ถึง $75 ครอบคลุม API model ID ปัจจุบันสี่ตัวที่อัตรามาตรฐาน ก่อนรวมค่าใช้จ่ายที่ไม่ใช่ token หลังเปิดตัว ให้แทนที่สมมติฐานด้วย usage จาก response และกระทบยอดเทียบกับรายงานต้นทุนของผู้ให้บริการ

ราคาด้านล่างตรวจสอบเมื่อตุลาคม 2026 เป็นราคา list ของ API ในสกุล USD; เครื่องคำนวณต้นทุน AI token ในคู่มือนี้มีไว้เพื่อประมาณการ ไม่ใช่ใบเสนอราคาสำหรับผลิตภัณฑ์แบบโฮสต์หรือ endpoint ของผู้ขายต่อ

## หนึ่ง AI token ราคาเท่าไร?

ไม่มีต้นทุน AI token เดียวที่ใช้ได้ทั้งหมด ผู้ให้บริการตั้งอัตราต่างกันสำหรับ input token กับ output token และอาจคิดอีกอัตราสำหรับ cache read, cache write, บริบทยาว หรือ service tier ให้เปรียบเทียบราคาของ model ID และ endpoint ที่คุณวางแผนจะเรียกใช้จริง

นี่คือต้นทุนต่อ token ของโมเดลข้อความปัจจุบันสี่ตัว อ้างอิงต่อล้าน token:

| ผู้ให้บริการและ model ID ที่แน่นอน    | Input |     Cached input/read |                                     Cache write | Output |
| ------------------------------------- | ----: | --------------------: | ----------------------------------------------: | -----: |
| OpenAI `gpt-5.6-luna`                 | $0.20 |                 $0.02 |                                           $0.25 |  $1.20 |
| Anthropic `claude-sonnet-5-5`         | $2.00 |                 $0.20 |                            $2.50 (5m) / $4 (1h) | $10.00 |
| Anthropic `claude-haiku-4-5-20251001` | $1.00 |                 $0.10 |                            $1.25 (5m) / $2 (1h) |  $5.00 |
| Google `gemini-3.1-flash-lite`        | $0.25 | $0.025 cached context | เป็นไปตามเงื่อนไข cache/storage ของผู้ให้บริการ |  $1.50 |

อัตราเหล่านี้มาจากหน้าปัจจุบันของผู้ขาย: [ราคาโมเดล OpenAI](https://developers.openai.com/api/docs/models/gpt-5.6-luna), [หน้าโมเดล Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [หน้าโมเดล Claude Haiku 4.5](https://platform.claude.com/docs/en/models/haiku-4-5/overview) และ [ราคา Gemini API](https://ai.google.dev/gemini-api/docs/pricing) นี่ไม่ใช่การจัดอันดับความสามารถ ราคา input ที่ถูกกว่าไม่ได้บอกว่าคุณจะต้องใช้กี่ call หรือ output token เท่าไรสำหรับงานของคุณ

การแปลง token เป็นคำโดยประมาณสำหรับภาษาอังกฤษช่วยกะขนาด prompt แต่ไม่ได้ให้ราคาอย่างแม่นยำ: คู่มือของ OpenAI ประมาณว่า [100 token อยู่ที่ราว 75 คำ](https://help.openai.com/en/articles/4936856-understanding-and-counting-tokens) ขณะที่ Google บอกว่า [100 Gemini token อยู่ที่ราว 60–80 คำภาษาอังกฤษ](https://ai.google.dev/gemini-api/docs/tokens) ให้ถือเป็นช่วงสำหรับวางแผน สำหรับ prompt จริง ให้ใช้ตัวนับ token ของโมเดลที่เลือกหรือ usage ที่ผู้ให้บริการส่งกลับมา

## คำนวณต้นทุน AI token รายเดือนอย่างไร?

ใช้ bucket ของ token แยกกัน เพื่อที่ cache hit จะไม่ถูกคิดซ้ำในอัตรา input ปกติ สำหรับผู้ให้บริการที่อ้างอิงราคาต่อล้าน token:

```text
standard-rate token cost =
  (uncached_input × input_rate
 + cached_input × cache_read_rate
 + cache_write × cache_write_rate
 + billed_output × output_rate) / 1,000,000

eligible batch cost = eligible standard-rate token cost × batch_multiplier
```

`billed_output` รวม token ของคำตอบที่มองเห็นและ reasoning token ใด ๆ ที่ผู้ให้บริการคิดเป็น output ส่วน `batch_multiplier` คือ 1 สำหรับคำขอมาตรฐาน และ 0.5 ในกรณีที่ผู้ขายระบุส่วนลด batch 50% ไว้ในเอกสาร ให้ใช้กับค่าใช้จ่าย token ที่มีสิทธิ์ batch เท่านั้น ถ้าตัวปรับ cache และ batch มีผลต่อกัน ให้อัตราสุดท้ายของผู้ขายสำหรับแต่ละหมวด token แทนการคูณยอดรวมแบบผสม ให้บวกค่าธรรมเนียมคงที่ของ tool-call, search, storage, audio หรือ usage อื่น ๆ แยกต่างหาก ตัวอย่างเช่น OpenAI ระบุราคา Responses และ Chat Completions API ของตนตามอัตรา token ของโมเดลที่เลือก และตั้งราคาเครื่องมือในตัวบางตัวแยกไว้ใน [รายการราคา API](https://developers.openai.com/api/docs/pricing)

รูปแบบที่ขยายแล้วช่วยเลี่ยงข้อผิดพลาดง่าย ๆ สองอย่าง: การใช้อัตราผสมเดียวกับทั้ง input และ output และการถือว่า input ทั้งหมดเป็นของใหม่ทั้งที่บางส่วนถูกอ่านจาก cache

Claude แยกรายการ cache creation และ cache read อย่างชัดเจน [คู่มือราคา](https://platform.claude.com/docs/en/about-claude/pricing) ของตนให้ตัวคูณต่างกันสำหรับการเขียนแบบห้านาที การเขียนแบบหนึ่งชั่วโมง และ cache hit ส่วน prompt cache ของ OpenAI มีอัตรา cached-input แยกต่างหาก และระบุอัตรา cache-write สำหรับ GPT-5.6 ขึ้นไปใน [คู่มือ prompt caching](https://developers.openai.com/api/docs/guides/prompt-caching) ของตน Google แยกรายการ cached context ไว้ต่างหากใน [ราคา Gemini](https://ai.google.dev/gemini-api/docs/pricing)

## ซัพพอร์ตบอตรายเดือนจะมีต้นทุนเท่าไร?

ภายใต้สมมติฐานเหล่านี้ ค่าใช้จ่าย token รายเดือนของซัพพอร์ตบอตอยู่ที่ $8.20 ถึง $75 ขึ้นอยู่กับโมเดล ลองดูฟีเจอร์ตอบซัพพอร์ตที่มี 10,000 ตั๋วต่อเดือน สมมติว่ามีการเรียกโมเดลหนึ่งครั้งพอดีต่อตั๋ว, 2,000 input token ต่อการเรียก (รวมคำสั่งระบบ, snippet ที่ดึงมา และข้อความลูกค้า) และ 350 output token ที่ต้องจ่ายต่อการเรียก เท่ากับ 20 ล้าน input token และ 3.5 ล้าน output token ต่อเดือน

สมมติฐาน 350 output token รวม reasoning แล้วหาก API คิด reasoning ในจำนวน output สมมติว่าเป็นคำขอแบบ synchronous มาตรฐาน ไม่มี cache hit หรือ cache write ไม่มีการรีทรี ไม่มีเครื่องมือที่คิดเงินแยก และไม่มีส่วนลดภาษีหรือส่วนลดตามสัญญา

| Model ID                    | การคำนวณ                 | ต้นทุน token รายเดือนโดยประมาณ |
| --------------------------- | ------------------------ | -----------------------------: |
| `gpt-5.6-luna`              | 20 × $0.20 + 3.5 × $1.20 |                      **$8.20** |
| `gemini-3.1-flash-lite`     | 20 × $0.25 + 3.5 × $1.50 |                     **$10.25** |
| `claude-haiku-4-5-20251001` | 20 × $1 + 3.5 × $5       |                     **$37.50** |
| `claude-sonnet-5-5`         | 20 × $2 + 3.5 × $10      |                     **$75.00** |

ตัวคูณแต่ละตัวใช้หน่วยล้าน token: 20 ล้าน input token × $0.20 ต่อล้าน = $4; 3.5 ล้าน output token × $1.20 ต่อล้าน = $4.20; รวม $8.20 สำหรับ GPT-5.6 Luna แถวอื่นใช้ปริมาณเดียวกันกับอัตราของผู้ขายที่ลิงก์ไว้ นี่คือการเปรียบเทียบด้านการคิดเงิน ไม่ใช่ข้ออ้างว่าโมเดลต่าง ๆ ให้คำตอบที่เทียบเท่ากัน ให้รันเคสซัพพอร์ตที่เป็นตัวแทนชุดเดียวกันผ่านโมเดลผู้สมัครแต่ละตัว และวัดคุณภาพกับ usage ก่อนเลือก

สำหรับงานออฟไลน์ที่รองรับ batch ให้คำนวณใหม่ด้วยอัตรา batch ที่ระบุไว้ [หน้าโมเดล Claude](https://platform.claude.com/docs/en/models/sonnet-5-5/overview) ระบุส่วนลด batch 50% สำหรับ input และ output และ [เอกสาร Gemini Batch API](https://ai.google.dev/gemini-api/docs/batch-api) ของ Google ก็บอกว่าคิดครึ่งหนึ่งของต้นทุนโมเดลเทียบเท่าแบบมาตรฐาน อย่าใช้ส่วนลดนั้นกับคำขอแบบอินเทอร์แอกทีฟเพียงเพราะคุณจัดกลุ่มคำขอไว้ในโค้ดของตัวเอง

## 1,000 token คือข้อความปริมาณเท่าไร?

สำหรับภาษาอังกฤษทั่วไป 1,000 token อยู่ที่ราว 600–800 คำตามการประมาณของผู้ขายข้างต้น นี่เป็นการแปลงขนาดโดยประมาณ ไม่ใช่กฎสากล: โค้ด ตาราง เครื่องหมายวรรคตอน ข้อความที่ไม่ใช่ภาษาอังกฤษ และ tokenizer ของโมเดล ล้วนเปลี่ยนจำนวนนับ prompt หนึ่งหน้ายังอาจมี tool schema และข้อความก่อนหน้าซึ่งมองไม่เห็นจากข้อความที่ผู้ใช้พิมพ์

ก่อนเปิดตัว ให้นับรูปทรง prompt จริงด้วยเครื่องมือของผู้ให้บริการ: [คู่มือ token](https://ai.google.dev/gemini-api/docs/tokens) ของ Google อธิบาย `count_tokens` สำหรับ input และฟิลด์ usage บน response ให้ทำแบบนั้นกับตั๋วทั่วไปหลายใบและตั๋วที่ยาวผิดปกติ คูณค่าเฉลี่ยและเคสเปอร์เซนไทล์สูงด้วยปริมาณตั๋วรายเดือนที่คาดไว้ เคสสูงจะแสดงว่างบของคุณต้องมีเผื่อไว้เท่าไรหากคำขอยาวเป็นเรื่องปกติ

## ยืนยันการประมาณเทียบกับ usage จริงอย่างไร?

บันทึก log หนึ่งรายการต่อการเรียกโมเดลหนึ่งครั้ง ไม่ใช่แค่ยอดรวมหนึ่งรายการต่อการสนทนากับลูกค้าหนึ่งครั้ง เก็บ request ID, วันที่, ฟีเจอร์หรือ tenant key, model ID, หมวดของ input token, output token และต้นทุนที่รายงานมาเมื่อมี เอเจนต์อาจเรียกผู้ให้บริการหลายครั้งสำหรับคำตอบเดียวที่ผู้ใช้มองเห็น จึงต้องรวมทุกการเรียกของการสนทนานั้น

จากนั้นเปรียบเทียบ log ระดับคำขอกับมุมมอง usage และการเรียกเก็บเงินของผู้ให้บริการเอง:

| ผู้ให้บริการ | ฟิลด์ระดับคำขอที่ควรเก็บไว้                                                                                                       | การกระทบยอดรายเดือน                                                                                                                                   |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| OpenAI       | `input_tokens`, `input_tokens_details.cached_tokens`, `output_tokens`, `output_tokens_details.reasoning_tokens` เมื่อถูกส่งกลับมา | Organization Usage API และ Costs endpoint ของมัน (`GET /organization/costs`) หรือ Usage Dashboard                                                     |
| Anthropic    | `input_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens`, `output_tokens`                                         | Usage and Cost Admin API: `/v1/organizations/usage_report/messages` และ `/v1/organizations/cost_report`; ต้องใช้ Admin API credentials                |
| Gemini       | `total_input_tokens`, `total_output_tokens`, `total_thought_tokens`, `total_cached_tokens` เมื่อถูกส่งกลับมา                      | เปรียบเทียบ usage ของ response กับมุมมองการเรียกเก็บเงินของโปรเจกต์และช่วงวันที่เดียวกัน ใช้ `count_tokens` เป็นเพียงการประมาณ input ล่วงหน้าเท่านั้น |

schema และเส้นทางรายงานมีเอกสารไว้ใน [เอกสารอ้างอิง OpenAI Usage API](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/usage), [Anthropic Messages API](https://platform.claude.com/docs/en/api/messages/create), [Anthropic Usage and Cost API](https://platform.claude.com/docs/en/manage-claude/usage-cost-api) และ [คู่มือ token ของ Gemini](https://ai.google.dev/gemini-api/docs/tokens)

reasoning token ของ OpenAI ถูกคิดเป็น output แม้ API จะไม่แสดงข้อความของมัน ตามที่อธิบายไว้ใน [คู่มือ reasoning](https://developers.openai.com/api/docs/guides/reasoning) ของตน ส่วน Google รวม thinking token ไว้ในราคา output ของโมเดลอย่างชัดเจน อย่าบวกค่าใช้จ่าย reasoning แยกต่างหากบนยอด output ที่รวมมันไว้อยู่แล้ว

แดชบอร์ดของผู้ให้บริการให้มุมมองบัญชีของผู้ให้บริการแก่คุณ เกตเวย์สามารถเพิ่มการระบุที่มาต่อคำขอข้ามผู้เรียกได้ แต่ตัวเลขของมันจะน่าเชื่อถือได้เท่าอัตราโมเดลและการแยกวิเคราะห์ usage ของมันเท่านั้น LiteLLM มีเอกสาร spend log และเตือนเมื่อ deployment ไม่มีรายการราคา input/output ใน [คู่มือ cost-tracking](https://docs.litellm.ai/docs/proxy/cost_tracking) ของตน เราสร้าง OctoHub ที่ Muvon; มันจัดเก็บทุก completion พร้อม API key ที่เรียก, เซสชัน, โมเดลและผู้ให้บริการ และ usage ที่แยกเป็น input, output, cache read และ write และ reasoning token รวมถึงต้นทุนเมื่อทราบ ([ภาพรวม OctoHub LLM proxy](/blog/introducing-octohub-llm-proxy-for-observability)) แดชบอร์ดของผู้ให้บริการและพร็อกซีอื่นที่มีเอกสารเป็นทางเลือกที่สมเหตุสมผลหากเข้ากับสแตกของคุณ

## ควรทำอย่างไรเมื่อบิลจริงต่างออกไป?

ก่อนอื่นให้แยกความคลาดเคลื่อนของปริมาณ token ออกจากความคลาดเคลื่อนของอัตราหรือการระบุที่มา เปรียบเทียบจำนวนคำขอ, usage เฉลี่ยของ input/output, bucket ของ cache, model ID และการรีทรี ในช่วงวันที่เดียวกันเป๊ะ ช่องว่างใน log คำขอมักหมายถึงการเรียกที่ข้ามพร็อกซีของคุณหรือฟิลด์ usage ไม่ถูกบันทึก ส่วนช่องว่างระหว่างต้นทุนที่ประมาณกับรายงานของผู้ขายอาจหมายถึงอัตราที่เก่าค้าง เครื่องมือที่ไม่ได้ตั้งราคา หรือ service tier ที่ต่างกัน

เก็บการประมาณกับบิลที่สังเกตได้ไว้เคียงข้างกันในเดือนแรก เมื่อปริมาณและต้นทุนต่องานเป็นของจริงแล้ว ขั้นถัดไปคือการเลือกโมเดลและเส้นทางใน [คู่มือ model-routing](/blog/running-one-ai-agent-across-many-models) ของเรา ถ้าคุณต้องการ trace ของคำขอที่กว้างขึ้น ดู [บันทึกเรื่อง observability ของเอเจนต์](/blog/debugging-ai-agents-the-observability-we-wanted) หรือ [บทเรียนจากชั้นผู้ให้บริการแบบรวมศูนย์](/blog/lessons-building-a-unified-llm-provider-layer-in-rust) ของเรา

— Don

---

_ถ้าคุณพบความไม่ตรงกันระหว่าง usage ที่ผู้ให้บริการส่งกลับมากับรายงานต้นทุนรายเดือนของมัน [เปิด issue บน OctoHub](https://github.com/Muvon/octohub/issues) พร้อมชื่อโมเดลและฟิลด์ที่เกี่ยวข้อง_
