วิธีลดค่าใช้จ่ายโทเค็นเอเจนต์จาก CLI (คู่มือปี 2026)

INEZA Felin-Michel

INEZA Felin-Michel

20 May 2026

วิธีลดค่าใช้จ่ายโทเค็นเอเจนต์จาก CLI (คู่มือปี 2026)

Apidog สำหรับองค์กร

ติดตั้งภายในองค์กร

SSO & RBAC

รองรับ SOC 2

สำรวจ Apidog Enterprise

เอเจนต์เขียนโค้ด CLI รู้สึกอิสระจนกระทั่งบิลมาถึง คุณชี้ Claude Code หรือ Codex ไปที่ repo ขอให้มันปรับโครงสร้างโมดูลใหม่ และสิบนาทีต่อมามันก็อ่านไฟล์ไปสี่สิบไฟล์ รันชุดทดสอบสามครั้ง และใช้โทเค็นจำนวนมากไปกับบริบทที่คุณไม่เคยต้องการให้มันเห็น คูณสิ่งนั้นด้วยทีมวิศวกรแปดคนที่รันเอเจนต์ตลอดทั้งวัน แล้วบิลก็จะไม่ใช่แค่ค่าผิดพลาดเล็กน้อยอีกต่อไป การใช้โทเค็นบนเอเจนต์เขียนโค้ดส่วนใหญ่เป็นความสิ้นเปลือง และความสิ้นเปลืองส่วนใหญ่นั้นสามารถแก้ไขได้จากบรรทัดคำสั่งโดยไม่ต้องเปลี่ยนโมเดลหรือยอมรับผลลัพธ์ที่แย่ลง

สรุปสั้นๆ (TL;DR)

ลดค่าใช้จ่ายโทเค็นของเอเจนต์โดยการตัดแต่งบริบทก่อนที่จะส่งไปยังโมเดล: จำกัดขอบเขตการทำงาน, เก็บไฟล์หน่วยความจำให้สั้น, และบีบอัดเซสชันที่ยาวนาน เปิดใช้การแคชพรอมต์สำหรับส่วนนำที่เสถียร (ลดค่าใช้จ่ายประมาณ 90% สำหรับการอ่านซ้ำ) ส่งงานย่อยราคาถูกไปยังโมเดลขนาดเล็ก จำกัดเอาต์พุตของเครื่องมือ วัดต้นทุนต่อการรันเพื่อให้คุณทราบว่ามีการเปลี่ยนแปลงอะไรไปบ้าง

บทนำ

ปัญหานี้ปรากฏขึ้นสองทาง ไม่ว่าคุณจะชนกำแพงกลางงานเพราะใช้เกินขีดจำกัดรายสัปดาห์หรือเซสชัน หรือบิล API รายเดือนมาถึงแล้วมีคนถามว่าทำไม "ผู้ช่วย AI" ถึงมีค่าใช้จ่ายมากกว่าผู้รับเหมา junior ทั้งสองกรณีมาจากสาเหตุเดียวกัน: เอเจนต์ CLI เป็นพวกหิวโทเค็นโดยค่าเริ่มต้น พวกมันอ่านทั้งไฟล์เมื่อต้องการเพียงสิบบรรทัด เล่นซ้ำการสนทนาทั้งหมดในทุกเทิร์น ทิ้งเอาต์พุตคำสั่งดิบกลับไปในบริบท และส่งพรอมต์ระบบและแผนผัง repo เดิมซ้ำแล้วซ้ำเล่าวันละหลายพันครั้ง

ไม่มีสิ่งใดในนั้นเป็นสิ่งที่จำเป็นต่องาน การปรับโครงสร้างที่ต้องการใช้เหตุผลกับโค้ด 2,000 โทเค็นอย่างแท้จริง ไม่จำเป็นต้องใช้บริบท 180,000 โทเค็นเพื่อทำสิ่งนั้น ช่องว่างระหว่างตัวเลขสองจำนวนนั้นคือเงินที่คุณประหยัดได้ และเกือบทั้งหมดสามารถกู้คืนได้ด้วยแฟล็ก ไฟล์คอนฟิก และนิสัยที่คุณสามารถนำมาใช้ได้ตั้งแต่วันนี้

คู่มือนี้จะอธิบายว่าโทเค็นไปอยู่ที่ใดในการรันเอเจนต์ CLI จากนั้นจะให้กลยุทธ์ที่เป็นรูปธรรมเพื่อลดแต่ละส่วน: การดูแลบริบทและไฟล์หน่วยความจำ, การแคชพรอมต์, การกำหนดเส้นทางโมเดล, การตัดแต่งเอาต์พุตและการเรียกใช้เครื่องมือ, และการวัดต้นทุนต่อการรัน เพื่อให้การประหยัดเป็นจริงไม่ใช่แค่การคาดเดา ตัวอย่างนี้ใช้ Claude Code และ Codex เป็นหลัก แต่กลไกเหล่านี้สามารถใช้ได้กับเอเจนต์ใดๆ ที่สื่อสารกับ API ที่คิดค่าบริการตามโทเค็น

ค่าใช้จ่ายข้างเคียงที่ควรกล่าวถึงตั้งแต่เนิ่นๆ: การใช้โทเค็นของเอเจนต์จำนวนมากหมดไปกับการดีบัก เอเจนต์ที่เรียกใช้ API ภายในที่ไม่เสถียรจะพยายามใหม่, อ่านข้อความข้อผิดพลาด, อ่านเอกสารซ้ำ, และวนซ้ำ โดยทุกการวนซ้ำจะเสียค่าโทเค็นเต็มจำนวน

💡
หากเอเจนต์ของคุณใช้งาน API การออกแบบ, การจำลอง (mock), และการทดสอบ API เหล่านั้นใน Apidog ก่อนที่คุณจะให้เอเจนต์ทำงานกับมัน จะช่วยขจัดความผิดพลาดจากการลองผิดลองถูกที่มีค่าใช้จ่ายสูงออกไปได้ทั้งหมด เอเจนต์จะทำงานตามสัญญาที่มีพฤติกรรมที่คาดเดาได้ ไม่ใช่ปลายทางจริงที่อาจสร้างความประหลาดใจ เราจะกลับมาพูดถึงเรื่องนี้ในกรณีการใช้งาน
ปุ่ม

โทเค็นไปอยู่ที่ใดในการรันเอเจนต์ CLI จริงๆ

ก่อนที่คุณจะปรับให้เหมาะสม คุณต้องมีภาพในหัวเกี่ยวกับบิลค่าใช้จ่าย "เทิร์น" เดียวของเอเจนต์จะส่งเพย์โหลดอินพุตไปยังโมเดลและรับเพย์โหลดเอาต์พุตกลับมา คุณจ่ายสำหรับทั้งสองอย่าง และผู้ให้บริการส่วนใหญ่คิดค่าเอาต์พุตแพงกว่าอินพุตสามถึงหกเท่าต่อโทเค็น สำหรับโมเดลระดับแนวหน้าตระกูลหนึ่งในช่วงกลางปี 2026 อินพุตอยู่ที่ประมาณ $3 ต่อล้านโทเค็น และเอาต์พุตอยู่ที่ประมาณ $15; โมเดลที่ถูกกว่าในตระกูลเดียวกันอยู่ที่ประมาณ $1 อินพุต และ $5 เอาต์พุต ถือว่าสิ่งเหล่านี้เป็นตัวอย่าง ไม่ใช่ราคาที่อ้างอิงได้ โปรดตรวจสอบหน้าเว็บราคาปัจจุบัน เนื่องจากผู้ให้บริการอาจมีการแก้ไข ประเด็นโครงสร้างยังคงอยู่ไม่ว่าตัวเลขจะแน่นอนแค่ไหน: เอาต์พุตมีราคาแพง และปริมาณอินพุตคือสิ่งที่ทำให้ค่าใช้จ่ายสูงขึ้น

นี่คือสิ่งที่เติมเต็มเพย์โหลดอินพุตในการรันทั่วไป:

เพย์โหลดเอาต์พุตคือเหตุผลของโมเดล, การแก้ไขโค้ด, และคำอธิบาย มีขนาดเล็กกว่าอินพุตในการรันส่วนใหญ่ แต่มีราคาสูงที่สุดต่อโทเค็น ดังนั้นพฤติกรรมการอธิบายอย่างละเอียด "ให้ฉันอธิบายแผนของฉันในหกย่อหน้า" จึงมีค่าใช้จ่ายสูง

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

หากคุณต้องการเจาะลึกว่าการนับเซสชันและขีดจำกัดทำงานอย่างไรในทางปฏิบัติ รายละเอียดใน วิธีการรีเซ็ตหน้าต่างโทเค็นของ Claude Code เป็นข้อมูลเสริมที่เป็นประโยชน์สำหรับส่วนนี้ มันอธิบายว่าทำไมเซสชันที่ "รู้สึกสั้น" จึงยังคงใช้ทรัพยากรจนหมดได้

การดูแลบริบทและไฟล์หน่วยความจำ

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

กำหนดขอบเขตการทำงานก่อนเริ่ม อย่าเปิดเอเจนต์ที่ root ของ repo แล้วพูดว่า "ปรับโครงสร้างตรรกะการเรียกเก็บเงิน" มันจะทำงานช้า ให้ระบุไฟล์ที่เกี่ยวข้องอย่างชัดเจนแทน:

# แทนที่จะเป็นพรอมต์ที่คลุมเครือซึ่งกระตุ้นการสำรวจที่กว้างขวาง:
claude "refactor the retry logic so it uses exponential backoff,
only in src/payments/retry.ts and its test file"

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

เก็บไฟล์หน่วยความจำให้สั้นและเสถียร ไฟล์ CLAUDE.md (หรือไฟล์หน่วยความจำโปรเจกต์ที่เทียบเท่า) จะถูกโหลดเข้าสู่บริบทในทุกเทิร์น ทีมงานปฏิบัติต่อมันเหมือนวิกิและปล่อยให้มันเติบโตจนมีเนื้อหาสำหรับการเริ่มต้นใช้งานถึง 4,000 โทเค็น สมมติว่ามีการทำงาน 50 เทิร์นต่อวันสำหรับวิศวกร 8 คน ไฟล์หน่วยความจำที่ใหญ่เกินไปจะถูกส่งซ้ำหลายร้อยครั้งต่อวันโดยไม่มีประโยชน์เพิ่มเติม ตรวจสอบมัน:

# การตรวจสอบโทเค็นโดยประมาณในไฟล์หน่วยความจำของคุณ (อักขระ / 4 เป็นค่าประมาณที่ดี):
wc -c CLAUDE.md | awk '{print "≈", int($1/4), "tokens per turn"}'

ตั้งเป้าที่จะให้ไฟล์กระชับ: คำสั่ง build/test, ข้อกำหนดที่เข้มงวด, และตัวชี้ไปยังตำแหน่งเอกสารเชิงลึก ไม่ใช่ตัวเอกสารเอง หากส่วนใดส่วนหนึ่งเกี่ยวข้องกับงานเพียงงานเดียวต่อเดือน ไม่ควรอยู่ในไฟล์ที่ถูกโหลดตลอดเวลา ย้ายไปไว้ในเอกสารที่เอเจนต์อ่านเมื่อจำเป็น

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

# ใน Claude Code เมื่อการสนทนายาวนาน:
/compact     # สรุปประวัติลงในบทสรุปสั้นๆ และทิ้งประวัติแบบดิบ
# หรือ สำหรับการเริ่มต้นใหม่ในงานใหม่:
/clear       # เริ่มต้นใหม่ บริบทเก่าจะไม่ถูกส่งซ้ำอีกต่อไป

โดยทั่วไป /compact จะแทนที่ประวัติแบบดิบหลายหมื่นโทเค็นด้วยบทสรุปที่มีขนาดเหลือเพียงหนึ่งในสิบ และส่วนนำหน้าที่เล็กลงนั้นคือสิ่งที่ทุกเทิร์นที่ตามมาจะพกพาไป หลักปฏิบัติง่ายๆ: หนึ่งงานตรรกะต่อหนึ่งเซสชัน บีบอัดหรือล้างข้อมูลระหว่างงาน รูปแบบเวิร์กโฟลว์ใน เวิร์กโฟลว์ของ Claude Code พึ่งพานิสัยการกำหนดขอบเขตนี้อย่างมาก และควรนำมาใช้ทั้งหมด

ใช้ไฟล์ ignore ของโปรเจกต์ เก็บไฟล์ที่สร้างขึ้น, lockfiles, เอาต์พุตการ build, และ dependency ที่รวมมาออกจากขอบเขตการทำงานของเอเจนต์ หากเอเจนต์ไม่เคยเห็น dist/ หรือ node_modules/ มันก็จะไม่เสียโทเค็นในการอ่านหรือเปรียบเทียบไฟล์เหล่านั้น เอเจนต์ส่วนใหญ่จะเคารพไฟล์ ignore; กำหนดค่าเพียงครั้งเดียวและการประหยัดก็จะคงอยู่ถาวร

การแคชพรอมต์: หยุดจ่ายราคาเต็มสำหรับส่วนนำหน้าเดิมๆ

นี่คือปัจจัยที่สำคัญที่สุดสำหรับการรันซ้ำๆ และมันเป็นกลไกมากกว่าพฤติกรรม การแคชพรอมต์ช่วยให้ผู้ให้บริการจัดเก็บส่วนนำหน้าของคำขอของคุณ (เครื่องมือ, พรอมต์ระบบ, บริบทที่เสถียร) เพื่อให้คำขอถัดไปที่ใช้ส่วนนำหน้านั้นสามารถอ่านกลับมาได้ในราคาที่ลดลงอย่างมาก แทนที่จะต้องประมวลผลใหม่

เศรษฐศาสตร์ ตามเอกสารการแคชพรอมต์ของ Anthropic: การเขียนแคชมีค่าใช้จ่ายสูงกว่าโทเค็นอินพุตปกติ (ประมาณ 1.25 เท่าของอินพุตพื้นฐานสำหรับแคช 5 นาทีเริ่มต้น, ประมาณ 2 เท่าสำหรับแคช 1 ชั่วโมง) แต่การอ่านแคชมีค่าใช้จ่ายประมาณ 0.1 เท่าของอินพุตพื้นฐาน นั่นคือส่วนลดประมาณ 90% สำหรับส่วนที่แคช เนื่องจากการเขียนเพิ่มเติมมีค่าน้อยและส่วนลดการอ่านมีมาก การแคชจึงคุ้มทุนหลังจากแคชฮิตเพียงครั้งเดียวบนแคชที่มีอายุสั้น และหลังจากประมาณสองครั้งบนแคชที่มีอายุยาวนาน อายุการใช้งานแคชเริ่มต้นสั้น (ประมาณ 5 นาที, รีเฟรชทุกครั้งที่มีการเรียกใช้) โดยมีตัวเลือก 1 ชั่วโมงให้เลือก มีขนาดแคชขั้นต่ำ โมเดลขนาดเล็กและโมเดลที่ใหญ่ที่สุดต้องใช้โทเค็นหลายพันโทเค็นก่อนที่ส่วนนำหน้าจะมีสิทธิ์แคช ดังนั้นการแคชจึงช่วยได้มากที่สุดในจุดที่สำคัญที่สุด: ส่วนนำหน้าที่มีขนาดใหญ่และเสถียร

กฎโครงสร้างคือการวางเนื้อหาที่เสถียรไว้ก่อนและเนื้อหาที่เปลี่ยนแปลงบ่อยไว้ทีหลัง จากนั้นแคชที่ขอบเขต ลำดับคือ เครื่องมือ → ระบบ → ข้อความ และการเปลี่ยนแปลงใดๆ จะทำให้ระดับนั้นและทุกสิ่งที่อยู่หลังจากนั้นไม่ถูกต้อง ดังนั้น คุณต้องการให้ timestamp, ข้อความเข้าของผู้ใช้, และเนื้อหาไฟล์ที่ดึงมาใหม่ อยู่หลังจุดพักแคชของคุณ ไม่ใช่ก่อนหน้านั้น

หากคุณขับเคลื่อนโมเดลโดยตรงจาก CLI wrapper ของคุณเอง คุณจะตั้งค่านี้อย่างชัดเจน:

# แคชส่วนนำหน้าที่มีความเสถียร (ระบบ + คำจำกัดความเครื่องมือ + ข้อตกลงของ repo)
# เทิร์นของผู้ใช้ที่เปลี่ยนแปลงบ่อยจะตามมาและไม่ได้เป็นส่วนหนึ่งของส่วนนำหน้าที่แคชไว้
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    system=[
        {
            "type": "text",
            "text": SYSTEM_PROMPT + REPO_CONVENTIONS,   # เสถียรตลอดการรัน
            "cache_control": {"type": "ephemeral"},       # จุดพักแคชที่นี่
        }
    ],
    messages=[{"role": "user", "content": user_task}],     # เปลี่ยนแปลงทุกครั้งที่รัน
)

# ตรวจสอบสิ่งที่ถูกแคชจริง:
u = response.usage
print("cache write:", u.cache_creation_input_tokens)
print("cache read :", u.cache_read_input_tokens)   # โทเค็นเหล่านี้ถูกเรียกเก็บเงิน ~10%
print("fresh input:", u.input_tokens)

เอเจนต์ปรับโครงสร้างรายวันที่รันพรอมต์ระบบและบล็อกข้อตกลงของ repo ขนาด 8,000 โทเค็นแบบเดียวกันถึง 60 ครั้งต่อวัน ถือเป็นกรณีตัวอย่างที่ชัดเจน หากไม่มีการแคช คุณจะต้องจ่ายค่าอินพุตเต็มราคาสำหรับบล็อก 8,000 โทเค็นนั้น 60 ครั้ง ด้วยการแคช คุณจะจ่ายค่าเขียนเพิ่มเติมเพียงครั้งเดียว (หรือหนึ่งครั้งต่อการหมดอายุแคช) และราคาอ่านประมาณ 10% ในครั้งอื่นๆ สำหรับบล็อกข้อตกลงเพียงอย่างเดียว นั่นคือการลดลงเกือบ 90% และสามารถใช้ร่วมกับกลยุทธ์อื่นๆ ในที่นี้ได้

ข้อสังเกตในการปฏิบัติงานสองประการ ประการแรก รักษา prefix ของคุณให้ byte-stable; การเปลี่ยนแปลงอักขระเพียงตัวเดียวก่อนจุดพักจะทำให้แคชเสียและคุณจะต้องจ่ายค่าเขียนอีกครั้ง ตรึงพรอมต์ระบบและข้อตกลงของคุณไว้; อย่าใส่ timestamp ลงไปในนั้น ประการที่สอง แคชมีอายุสั้นโดยค่าเริ่มต้น ดังนั้นการจัดกลุ่มการรันที่เกี่ยวข้องเข้าด้วยกัน (แทนที่จะกระจายไปตลอดทั้งวัน) จะช่วยให้คุณเข้าถึงแคชที่ "อุ่น" อยู่เสมอ API ของ OpenAI ใช้ส่วนลดที่คล้ายกันสำหรับอินพุตที่แคชโดยอัตโนมัติบนโมเดลที่รองรับ หลักการเหมือนกันแม้ว่ารายละเอียดจะแตกต่างกัน เทคนิค free-tier และการกำหนดเส้นทางใน การรัน GPT-5.5 ฟรีผ่าน Codex เป็นส่วนเสริมที่มีประโยชน์เมื่อการแคชอย่างเดียวไม่เพียงพอ

การกำหนดเส้นทางโมเดล: โมเดลราคาถูกสำหรับงานราคาถูก

ไม่ใช่ทุกการกระทำของเอเจนต์ที่ต้องใช้โมเดลระดับแนวหน้า การเปลี่ยนชื่อตัวแปรในสามไฟล์, การเขียน commit message, การสรุป diff, หรือการสร้าง boilerplate test ไม่จำเป็นต้องใช้โมเดลเดียวกับที่ออกแบบสถาปัตยกรรม แต่พฤติกรรมเริ่มต้นของเอเจนต์ CLI ส่วนใหญ่คือการรันทุกอย่างผ่านโมเดลราคาแพงเพียงตัวเดียวตลอดทั้งเซสชัน

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

วิธีปฏิบัติในการกำหนดเส้นทางจาก CLI:

# 1. เลือกโมเดลต่อการเรียกใช้ตามงาน
claude --model haiku   "write a conventional-commit message for the staged diff"
claude --model sonnet  "redesign the caching layer for the payments service"

# 2. ใช้โมเดลราคาถูกสำหรับงานที่มีความถี่สูงและมีความเสี่ยงต่ำ
#    (commit message, รายการ changelog, คำอธิบาย lint ด่วน)
#    และโมเดลที่แข็งแกร่งเฉพาะเมื่อคุณเรียกใช้งานที่ยากอย่างชัดเจน

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

แกนการกำหนดเส้นทางที่สองคือ sub-agents (เอเจนต์ย่อย) หากเฟรมเวิร์กเอเจนต์ของคุณรองรับการมอบหมายงานย่อยที่แคบให้กับ child agent (เอเจนต์ลูก) ให้ child agent นั้นใช้โมเดลราคาถูกและบริบทขนาดเล็ก child agent จะทำงานหนัก (ค้นหา, สรุป, ร่าง) ด้วยค่าใช้จ่ายเพียงเล็กน้อยและรายงานผลลัพธ์สั้นๆ กลับไปยัง parent agent (เอเจนต์แม่) ที่มีราคาแพง แทนที่จะให้ parent agent ที่มีราคาแพงทำงานหนักด้วยตัวเองในราคาเต็มพร้อมบริบทเต็ม รูปแบบ autonomous-loop ใน คำสั่ง goal ใน Codex และ Claude Code แสดงให้เห็นถึงวิธีการจัดโครงสร้างการมอบหมายดังกล่าว เพื่อให้โมเดลราคาแพงเห็นเฉพาะผลลัพธ์ที่กลั่นกรองแล้วเท่านั้น

ข้อสังเกตเกี่ยวกับขีดจำกัด ไม่ใช่แค่เรื่องเงินดอลลาร์ หากคุณใช้แผนที่มีการจำกัดการใช้งาน แทนที่จะเป็นแบบจ่ายตามการใช้งานจริง การกำหนดเส้นทางจะช่วยยืดระยะเวลาการใช้งานของคุณได้อีกด้วย การใช้จ่ายงบประมาณโมเดลพรีเมียมไปกับ commit messages คือสาเหตุที่ทำให้ทีมงานชนกำแพงได้ภายในวันพฤหัสบดี การ เพิ่มขีดจำกัดรายสัปดาห์ของ Claude Code ล่าสุดช่วยได้ แต่การกำหนดเส้นทางก็ยังคงเป็นสิ่งที่ทำให้การใช้งานยาวนานขึ้น

การตัดแต่งเอาต์พุตเครื่องมือและการดึงข้อมูล

เอาต์พุตของเครื่องมือคือตัวฆ่างบประมาณที่เงียบเชียบ เพราะมันมองไม่เห็นจนกว่าคุณจะมองหา ทุกคำสั่งที่เอเจนต์รันจะส่งคืนข้อความ และข้อความนั้นจะถูกส่งกลับไปยังบริบทโดยตรง ซึ่งจากนั้นจะถูกเล่นซ้ำในทุกเทิร์นถัดไป การเรียกใช้ npm install เพียงครั้งเดียวสามารถส่งคืนได้หลายพันบรรทัด การทดสอบที่เปิดการบันทึกแบบละเอียดสามารถส่งคืนได้หลายหมื่นโทเค็น git diff ที่รวม lockfile ที่สร้างขึ้นใหม่สามารถมีขนาดใหญ่มาก เอเจนต์ไม่ค่อยต้องการทั้งหมดนั้น มันต้องการแค่ผลลัพธ์ผ่าน/ไม่ผ่านและความล้มเหลวที่เกี่ยวข้อง

กลยุทธ์ที่ช่วยลดสิ่งนี้ได้อย่างมีประสิทธิภาพ:

ทำให้คำสั่งเงียบที่ต้นทาง เอเจนต์จ่ายสำหรับทุกสิ่งที่คำสั่งพิมพ์ออกมา กำหนดค่าเครื่องมือให้สั้นกระชับ:

# ดัง (เอเจนต์จ่ายสำหรับทุกบรรทัด):
npm test

# เงียบ (เฉพาะความล้มเหลวและสรุปกลับมา):
npm test --silent -- --reporter=dot

# ดัง:
npm install

# เงียบ:
npm install --silent --no-audit --no-fund

กรองก่อนที่เอเจนต์จะเห็น เมื่อคุณควบคุมคำสั่งที่เอเจนต์รัน ให้ส่งเสียงรบกวนออกไป เพื่อให้เหลือเพียงสัญญาณที่ต้องการกลับมา:

# เฉพาะบรรทัดที่สำคัญเท่านั้นที่จะกลับมาอยู่ในบริบท:
pytest -q 2>&1 | tail -n 30

# สถิติ Diff แทนที่จะเป็น full diff 4,000 บรรทัด:
git diff --stat

# Grep หาความล้มเหลวแทนที่จะ dump บันทึกทั้งหมด:
npm test 2>&1 | grep -E "(FAIL|✗|Error)" | head -n 20

เลือกการอ่านแบบเจาะจงมากกว่าการอ่านทั้งไฟล์ การอ่านไฟล์ 1,500 บรรทัดเพื่อเปลี่ยนฟังก์ชันเดียวเป็นความสิ้นเปลืองโดยเปล่าประโยชน์ กระตุ้นให้เอเจนต์ grep หาสัญลักษณ์และอ่านเฉพาะส่วนรอบๆ ไม่ใช่ทั้งไฟล์ เอเจนต์หลายตัวทำเช่นนี้เมื่อพรอมต์กระตุ้น ("ค้นหาและอ่านเฉพาะฟังก์ชันที่จัดการการลองใหม่ ไม่ใช่ทั้งไฟล์") สำหรับไฟล์ขนาดใหญ่ นั่นคือความแตกต่างระหว่าง ~18,000 โทเค็นและ ~800 โทเค็น

จำกัดขอบเขตการดึงข้อมูล หากเอเจนต์ของคุณทำการค้นหาโค้ดเบสหรือ RAG บนเอกสาร ให้จำกัดจำนวนส่วนที่ดึงกลับมาและขนาดของส่วนเหล่านั้น ข้อความสั้นๆ 200 โทเค็นจำนวนสิบชิ้นที่ตอบคำถามได้ดีกว่าข้อความสั้นๆ 800 โทเค็นจำนวนห้าสิบชิ้นที่ทำให้สับสน คุณจ่ายสำหรับโทเค็นที่ดึงมาทั้งหมด ไม่ว่าโมเดลจะใช้หรือไม่ก็ตาม

การเปลี่ยนแปลงเหล่านี้ส่วนใหญ่เป็นการกำหนดค่าเพียงครั้งเดียว (test reporters, install flags, ไฟล์ ignore) และจะให้ผลตอบแทนในการรันทุกครั้งตลอดไป ซึ่งทำให้สิ่งเหล่านี้เป็นหนึ่งในการลงทุนที่ให้ผลตอบแทนสูงสุดในรายการทั้งหมดนี้

การวัดและจัดสรรต้นทุนต่อการรัน

คุณไม่สามารถบริหารจัดการสิ่งที่คุณไม่ได้วัดผลได้ และ "บิลลดลง" ไม่ใช่การวัดผล เพื่อให้รู้ว่ากลยุทธ์ได้ผลหรือไม่ คุณต้องมีต้นทุนที่จัดสรรให้กับการรัน โดยเฉพาะอย่างยิ่งกับงาน

เริ่มต้นด้วยข้อมูลที่ API ให้คุณอยู่แล้ว ทุกการตอบสนองมีอ็อบเจกต์การใช้งาน เก็บข้อมูลนั้น:

u = response.usage
# ต้นทุนโดยประมาณเป็นดอลลาร์; แทนที่ด้วยอัตราปัจจุบันสำหรับโมเดลของคุณ
INPUT_RATE  = 3.00 / 1_000_000     # อินพุตพื้นฐาน $/โทเค็น (ตัวอย่าง)
OUTPUT_RATE = 15.00 / 1_000_000    # เอาต์พุต $/โทเค็น (ตัวอย่าง)
CACHE_READ  = 0.30 / 1_000_000     # ~10% ของอินพุตพื้นฐาน
CACHE_WRITE = 3.75 / 1_000_000     # ~1.25 เท่าของอินพุตพื้นฐาน (แคช 5 นาที)

cost = (
    u.input_tokens          * INPUT_RATE  +
    u.output_tokens         * OUTPUT_RATE +
    u.cache_read_input_tokens  * CACHE_READ +
    u.cache_creation_input_tokens * CACHE_WRITE
)
print(f"run cost ≈ ${cost:.4f}  "
      f"(in={u.input_tokens} out={u.output_tokens} "
      f"cr={u.cache_read_input_tokens})")

หากคุณใช้ Agent CLI แทน wrapper ของคุณเอง มีสามวิธีที่ใช้ได้:

# 1. CLI ของเอเจนต์ส่วนใหญ่จะมีคำสั่ง usage/cost สำหรับเซสชัน
#    ตรวจสอบหลังจากงานที่เป็นตัวแทนแล้วจดตัวเลขไว้
claude /cost

# 2. คอนโซลของผู้ให้บริการรายงานค่าใช้จ่ายต่อคีย์ API ออกคีย์ API เฉพาะ
#    สำหรับแต่ละเอเจนต์หรือแต่ละโปรเจกต์ เพื่อให้สามารถระบุที่มาของค่าใช้จ่ายได้
#    แทนที่จะรวมกันเป็นยอดรวมที่ไม่สามารถติดตามได้

# 3. ติดแท็กรัน ห่อการเรียกใช้เอเจนต์ในสคริปต์ที่บันทึก
#    timestamp, task label, และจำนวนโทเค็นที่รายงานลงในไฟล์ CSV
#    CSV หนึ่งสัปดาห์จะบอกคุณว่างานใดมีค่าใช้จ่ายสูง

ประเมินก่อนที่คุณจะรันงานขนาดใหญ่ วางพรอมต์และไฟล์ที่คุณตั้งใจจะรวมลงใน tokenizer (tokenizer สาธารณะของ OpenAI เป็นวิธีที่รวดเร็วในการตรวจสอบขนาด) และดูจำนวน หาก "รวมทั้งโมดูล" คือ 90,000 โทเค็น และเวอร์ชันที่กำหนดเป้าหมายคือ 6,000 โทเค็น คุณก็เห็นการตัดสินใจแล้วก่อนที่จะจ่ายเงินสำหรับมัน

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

การเปรียบเทียบกลยุทธ์

กลยุทธ์ การประหยัดโทเค็นโดยทั่วไป ความพยายาม
จำกัดขอบเขตการทำงาน (ระบุชื่อไฟล์ ไม่ใช่การสำรวจทั้งหมด) 30–60% ของอินพุตต่อการรัน ต่ำ
ไฟล์หน่วยความจำที่สั้นและเสถียร 5–15% ต่อเทิร์น, ทุกเทิร์น ต่ำ
/compact หรือ /clear ระหว่างงาน 40–80% สำหรับเซสชันที่ยาวนาน ต่ำ
การแคชพรอมต์บนส่วนนำหน้าที่มีความเสถียร ~90% สำหรับส่วนนำหน้าที่แคชไว้ ปานกลาง
การกำหนดเส้นทางโมเดล (โมเดลราคาถูกสำหรับงานราคาถูก) 50–80% สำหรับงานย่อยที่ถูกกำหนดเส้นทาง ปานกลาง
เอาต์พุตของเครื่องมือที่เงียบ/ถูกกรอง 20–50% สำหรับการรันที่ใช้เครื่องมือมาก ต่ำ (ทำครั้งเดียว)
การอ่านแบบเจาะจงมากกว่าการอ่านทั้งไฟล์ 70–95% สำหรับการแก้ไขไฟล์ขนาดใหญ่ ต่ำ
การจำกัดขอบเขตการดึงข้อมูล 30–60% สำหรับเอเจนต์ที่ใช้ RAG มาก ปานกลาง
การวัดต้นทุนต่อการรัน 0% โดยตรง; ช่วยให้ทั้งหมดข้างต้นเป็นไปได้ ต่ำ

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

บทสรุป

ค่าใช้จ่ายโทเค็นของเอเจนต์ส่วนใหญ่เกิดจากการกระทำของเราเอง และบรรทัดคำสั่งคือที่ที่คุณจะแก้ไขมันได้ ความสิ้นเปลืองเกิดจากบริบทที่คุณส่งซ้ำ, เอาต์พุตที่คุณไม่ได้อ่าน, และโมเดลที่มีราคาแพงเกินไปสำหรับงานที่ทำอยู่ จัดการสิ่งเหล่านั้นแล้วบิลจะลดลงโดยไม่กระทบต่อคุณภาพของงาน

ทำรายการที่ใช้ความพยายามน้อยก่อน; การกำหนดขอบเขต, เอาต์พุตที่เงียบ, และไฟล์หน่วยความจำที่กระชับ ไม่ต้องเสียค่าใช้จ่ายและจะให้ผลตอบแทนในการรันทุกครั้งนับจากนี้ เพิ่มการแคชและการกำหนดเส้นทางเข้าไปอีกชั้น แล้วความแตกต่างที่ได้จะเป็นแบบที่คุณสามารถนำไปใส่ในงบประมาณได้

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API