803 คำ
4 นาที
เมื่อผมอยากทำซอฟต์แวร์ใช้เอง ภาค 2 ตอนที่ 10: agent ใช้เงินแทนเรา
สารบัญ

ตอนที่แล้ว ถ้าระบบพังตอนตีสาม ระบบบอกเราก่อนลูกค้าเมื่อพัง

ตอนนี้เราจะได้เพดานเงิน บันทึกของ agent และปุ่มหยุด

ตอนหน้าเมื่อลูกค้าขอให้ลบข้อมูลหรือขอเงินคืน เราจะมีเอกสารที่ตอบได้

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

เราอยู่ตรงไหนของแผนที่#

บนแถบ 5 ขั้น คราวนี้ Deploy/Run สว่าง

ชิ้นจิ๊กซอว์ที่ 9 agent ใช้เงินแทนเรา คือเรื่องที่ 20 บันทึกว่า agent ทำอะไรไปบ้าง เรื่องที่ 21 ค่าใช้จ่ายและเพดานเงิน และเรื่องที่ 22 ความปลอดภัย รวมถึงของ agent

ชิ้นนี้เปิดช่วงที่ 3 เมื่อบริษัทโต

หัวใจของตอนนี้#

agent ที่ใช้เงินได้ต้องมีเพดาน มีบันทึก มีปุ่มหยุด และมีชื่อคนรับผิดชอบ

ทำไมเรื่องนี้สำคัญ?#

ตอน 5 ให้ agent ทุกตัวมีกุญแจของตัวเอง

ตอน 9 ทำให้ระบบเตือนเมื่อพัง

แต่ยังไม่มีอะไรเตือนเมื่อ agent ใช้เงิน หรือทำเกินหน้าที่

ถ้าไม่มีสี่อย่างนี้ loop ทั้งคืนหรือกุญแจรั่วจะกลายเป็นบิลที่ไม่มีใครหยุด

และไม่มีใครตอบได้ว่าใครทำ

หลัก 5 ข้อข้างล่างคือวิธีไปถึงประโยคในกล่องหัวใจ

บิลเช้าวันจันทร์#

agent-research ของต้นมี routine ที่รันทุกชั่วโมง

คืนวันเสาร์ retry ที่เขียนผิดทำให้มันเรียก model API วนไม่หยุด (ตัวอย่าง)

เช้าวันจันทร์ บิลเดือนนี้ขึ้นเป็น ฿18,000 จากปกติ ฿1,500 (ตัวอย่าง)

ต้นบอกไม่ได้ว่า key ไหนเป็นคนใช้

เพราะมี agent สองตัวใช้ key เดียวกันมาตั้งแต่ก่อนตอน 5

เรื่องจริง: Tony Dinh กับเพดานที่ตั้งไว้#

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

OpenCode แจ้งว่า “We had a security breach last night related to a large scale distillation attack that impacted 1.4% of OpenCode Console users”

ผู้ที่โดนคือ “a subset of users who had external providers linked”

Tony Dinh ยกโพสต์นั้นมาแล้วเขียนว่า “$1.7k gone 😩 Luckily I set a limit.”

วันต่อมาเขาเขียนว่า “I got full refund!!” หลังทีม OpenCode ติดต่อมาขอข้อมูล

เงินที่หายไปมีขอบเขต เพราะเขาตั้งเพดานไว้ก่อน ส่วนเงินคืนมาจากผู้ให้บริการ ไม่ใช่จากเพดาน

บัตรใบเดียวแยกเป็นกุญแจสามดอก agent-build agent-ops agent-research แต่ละดอกมีมิเตอร์เงินและเส้นเพดานของตัวเอง เพดาน 150 ฿1,000 และ 150 เป็นตัวอย่าง

มี alert เรื่องพังแล้ว ทำไมยังไม่มี alert เรื่องเงิน?#

ตอน 9 ให้ alert เมื่อระบบพัง แต่ระบบที่ใช้เงินเกินไม่ได้พัง มันยังทำงานปกติ

ตอน 5 ให้ key แยกต่อ agent ค่าใช้จ่ายจึงชี้กลับไปหาตัวที่ใช้ได้

runbook ของตอน 9 ได้ขั้นใหม่หนึ่งขั้น: ค่าใช้จ่ายพุ่ง ให้กดปุ่มหยุดตามหลัก 4

หลัก 1: เพดานต่อกุญแจ ไม่ใช่ต่อบัตร#

ถ้าจะมีเพดาน เพดานต้องอยู่ใกล้ตัวที่ใช้เงินที่สุด

OWASP Top 10 for LLM ข้อ LLM10 เรียกเรื่องนี้ว่า “Denial of Wallet (DoW)”

และอธิบายว่าผู้โจมตี “exploit the cost-per-use model of cloud-based AI services, leading to unsustainable financial burdens”

ทางแก้ข้อหนึ่งคือ “Apply rate limiting and user quotas”

Anthropic เขียนไว้ ว่า “Spend limits set a maximum monthly cost an organization can incur for API usage”

ถ้าผู้ให้บริการแยก workspace หรือ project ได้ ต้นให้ agent หนึ่งตัวต่อหนึ่ง workspace

เพดานจึงผูกกับตัวตนของตอน 5 พอดี

หลัก 2: รู้ว่าเพดานไหนหยุดจริง ไหนแค่เตือน#

เพดานที่แค่ส่ง email ไม่ได้หยุดอะไร ต้องรู้ให้ชัดว่าแต่ละที่ทำแบบไหน

GitHub เขียนไว้ ว่า “you can set budgets to prevent usage once the budget threshold is reached”

แต่ก็เตือนว่า “you may exceed your budget in the first billing cycle”

Google Cloud เขียนไว้ ว่า “the budget doesn’t automatically set a hard cap on spending” ส่วน spend cap มีให้เฉพาะ “if supported for your service”

ตารางของต้นจึงมีช่อง “หยุดจริง?” ที่ไหนแค่เตือน ปุ่มหยุดในหลัก 4 คือตัวหยุดจริง

ความถี่ก็สำคัญ lauren (@poteto) แนะนำไว้ ว่า “routines can be expensive if they fire too often. hourly is the most frequent interval i would recommend for scheduled ones”

มิเตอร์สองอัน อันซ้าย GitHub Actions $20 ชนกำแพง ป้าย หยุดจริง อันขวา Google Cloud ฿1,000 สั่นกระดิ่ง มีลูกศรชี้ไปปุ่มหยุดที่คนกด ป้าย แค่เตือน

หลัก 3: บันทึกที่ตอบได้ว่า agent ตัวไหนทำอะไร#

เพดานบอกว่าเงินหมดแล้ว บันทึกบอกว่าใครใช้ และใช้ไปกับอะไร

agent แต่ละตัวทำงานด้วยตัวตนของตัวเองจากตอน 5

log ของผู้ให้บริการ ประวัติ PR บน GitHub และ log การเรียก tool ของเราจึงตอบได้ว่าใครทำ

OWASP ข้อ LLM06 Excessive Agency แนะนำให้ “require a human to approve high-impact actions before they are taken”

บันทึกของต้นจึงเก็บด้วยว่าใครอนุมัติ ตามระดับความเสี่ยงของตอน 7

ต้นเก็บบันทึกไว้ 90 วัน (ตัวอย่าง)

ถ้าต้องเก็บตามกฎหมาย ให้ถามนักบัญชีหรือนักกฎหมาย

หลัก 4: ปุ่มหยุดที่กดได้ในหนึ่งนาที และซ้อมแล้ว#

เพดานที่แค่เตือนต้องมีคนกดหยุด และต้องกดได้เร็ว

EU AI Act มาตรา 14 เขียนไว้ ว่าคนกำกับต้องสามารถ “interrupt the system through a ‘stop’ button or a similar procedure that allows the system to come to a halt in a safe state”

มาตรานี้ใช้กับ AI ความเสี่ยงสูง ระบบของต้นน่าจะไม่อยู่ในข่ายนั้น แต่เป็นแนวคิดที่ดี

Jason Lemkin เคยเจอ agent ของ Replit ที่ไม่ทำตามคำสั่ง code freeze ในเดือนกรกฎาคม 2025 เขาเรียกมันว่า “database deletion and code freeze ignoring incident”

คำสั่งหยุดที่เขียนไว้ใน prompt ไม่ใช่ปุ่มหยุด การ revoke key คือปุ่มหยุด

ปุ่มหยุดของต้นมี 3 แบบต่อ agent:

  1. revoke key
  2. ปิด routine
  3. pause workflow

ต้นซ้อมกดทุกไตรมาส ในการซ้อมของตอน 9

หลัก 5: ทุกแถวมีชื่อคน#

เพดาน บันทึก และปุ่มหยุดจะไม่มีความหมาย ถ้า alert ไปไม่ถึงใคร

agent, key, budget และ routine ทุกตัวมีคนรับผิดชอบหนึ่งชื่อ

ตอนนี้ทุกแถวเป็นชื่อต้น ต่อไปบางแถวอาจเป็นผู้รับจ้าง

EU AI Act มาตราเดียวกันพูดถึงการกำกับโดย “natural persons” คือคนจริง ไม่ใช่ระบบ

ตารางของต้นหน้าตาเป็นยังไง?#

ตารางเพดานเงิน (ตัวอย่าง):

บริการagent / keyเพดานต่อเดือนalert ที่หยุดจริง?ใครได้ alertคนรับผิดชอบ
Anthropic APIagent-build (workspace build)$15050/80/100%หยุดจริงต้น email และโทรศัพท์ต้น
Anthropic APIagent-research (workspace research)$15050/80/100%หยุดจริงต้น email และโทรศัพท์ต้น
GitHub ActionsCI$2075/100%หยุดจริงต้นต้น
Google Cloudagent-ops฿1,00050/90%แค่เตือน ใช้ปุ่มหยุดต้นต้น

แถวหนึ่งใน audit log (ตัวอย่าง):

ช่องค่า
เวลา2026-11-01 02:20
agent identityagent-research (workspace research เพดาน $150)
ทำอะไรเรียก model API 4,812 ครั้ง
กับอะไรงาน research รายชั่วโมง
ผลalert 50% ดัง แล้ว revoke key
ค่าใช้จ่าย$96
ticket#73

แถวหนึ่งใน audit log 7 ช่อง เวลา 2026-11-01 02:20 agent identity agent-research (workspace research เพดาน 150) ทำอะไร เรียก model API 4,812 ครั้ง กับอะไร งาน research รายชั่วโมง ผล alert 50% ดัง แล้ว revoke key ค่าใช้จ่าย 96 ticket #73 ใต้ตารางมีปุ่มหยุด 3 แบบ revoke key ปิด routine pause workflow

ลองเล่นเช้าวันจันทร์ใหม่ (ตัวอย่าง):

ราว 02:00 ค่าใช้จ่ายของ agent-research แตะ $75 คือ 50% ของเพดาน alert ดังที่โทรศัพท์ต้น

02:20 ต้น revoke key ตาม runbook ยอดหยุดที่ $96

ไม่มีบิล ฿18,000 และต้นรู้ทันทีว่าเป็น agent ตัวไหน

ตารางเพดานเงินต่อ key 4 แถว agent-build agent-research CI และ agent-ops บอกเพดานต่อเดือน alert ที่ และหยุดจริงหรือไม่ agent-ops แค่เตือน ใช้ปุ่มหยุด กล่องต้นได้ alert และรับผิดชอบทุกแถว หัวภาพเขียนว่ารับมาจากตอน 5 7 9 ท้ายภาพเขียนว่าส่งต่อให้ตอน 11 12 13

มาตรฐานว่ายังไง

ISO/IEC 29110 ระดับ Basic เขียนไว้ว่า “A disciplined management process that provides project visibility and corrective actions of project problems and deviations is performed.” เรื่องนี้อยู่ในกระบวนการ Project Management

ISO/IEC/IEEE 12207 มี measurement, risk management และ quality assurance อยู่ในกลุ่ม Technical management

EU AI Act มาตรา 14 เรื่อง human oversight ใช้กับ AI ความเสี่ยงสูง

OWASP Top 10 for LLM มี LLM06 Excessive Agency และ LLM10 Unbounded Consumption

ผมเทียบเอง: บริษัทใหญ่มีทีม FinOps และรอบตรวจสิทธิ์ ต้นมีตารางเดียว และจะอ่านมันทุกสัปดาห์ในตอน 12

จิ๊กซอว์ชิ้นที่เติมแล้ว#

ชิ้นที่ 9 เติมแล้ว agent ใช้เงินได้ แต่อยู่ในเพดาน มีบันทึก มีปุ่มหยุด และมีชื่อคน

สิ่งที่ผมได้จากตอนนี้#

ลองทำเอง#

ใช้เวลาราว 20 ถึง 30 นาที ไม่เสียเงิน ใช้ key ทดลองเท่านั้น (ตัวอย่าง)

  1. เปิดหน้า billing ของผู้ให้บริการ AI หรือ API ที่ใช้อยู่หนึ่งเจ้า แล้วตั้งเพดานรายเดือนกับ alert
  2. GitHub ไปที่ Billing แล้วไป Budgets ตั้ง budget ของ Actions ที่ 0หรือ0 หรือ 5 และเลือกหยุดการใช้งาน
  3. เขียนปุ่มหยุดของ agent หนึ่งตัว แล้วจับเวลาตอน revoke key ทดลอง

ผมลองแล้ว: __ นาที ฿0 เพดานที่ __ หยุดจริง/แค่เตือน revoke key ใช้ __ วินาที

เก็บศัพท์#

  • spend limit: ยอดเงินสูงสุดที่ยอมให้ใช้
  • budget: งบที่ตั้งไว้ อาจหยุดจริงหรือแค่เตือน
  • alert threshold: ระดับที่ให้ส่งเตือน เช่น 50%
  • quota: ปริมาณใช้งานสูงสุดที่ได้รับ
  • rate limit: จำนวนคำขอสูงสุดต่อช่วงเวลา
  • Denial of Wallet: การโจมตีที่ทำให้ค่าใช้จ่ายพุ่ง
  • audit log: บันทึกว่าใครทำอะไร เมื่อไหร่
  • kill switch: ปุ่มหรือขั้นตอนหยุด agent ทันที
  • human oversight: การมีคนกำกับระบบ
  • accountable: คนที่ต้องตอบเมื่อเกิดเรื่อง
  • excessive agency: agent ได้สิทธิ์หรือทำเกินที่จำเป็น

จดบันทึก#

agent ทุกตัวมีเพดาน บันทึก ปุ่มหยุด และชื่อคน

ถ้าต้นเริ่มใหม่#

ถ้าต้นเริ่มใหม่ เขาจะทำเรื่องนี้ตั้งแต่วันแรกไหม?

เพดานเงินกับ alert: ทำ วันเดียวกับที่ใส่บัตร ใช้ราว 10 นาที (ตัวอย่าง)

ปุ่มหยุด: ทำ ทันทีที่มี agent รันโดยไม่มีคนดู

audit log แบบตารางเต็ม: เมื่อมี agent ตั้งแต่ 3 ตัวขึ้นไป

ตอนต่อไป#

ลูกค้าคนหนึ่งส่ง email มาว่า “ขอลบข้อมูลของผมทั้งหมด และขอเงินคืนเดือนนี้” (ตัวอย่าง)

ต้นไม่มีเอกสารไหนบอกว่าต้องทำอะไร และทำได้แค่ไหน

ตอนหน้า เราจะเขียนสัญญาและเอกสารที่ตอบลูกค้าได้ รวมถึงว่าใครจ่ายเมื่อ agent ใช้เงิน

คำถามที่พบบ่อย#

ผู้ให้บริการไม่มีเพดานที่หยุดจริง ทำยังไง?

ใช้ระบบเติมเงินล่วงหน้าถ้ามี หรือใช้ alert คู่กับปุ่มหยุด

audit log ต้องเก็บนานเท่าไหร่?

ต้นเลือก 90 วัน (ตัวอย่าง) ถ้ามีข้อกำหนดตามกฎหมาย ให้ถามผู้เชี่ยวชาญ

ถ้า key ของ agent ถูกขโมย?

กดปุ่มหยุดก่อน แล้วเปลี่ยน key ตามตอน 5 จากนั้นติดต่อผู้ให้บริการ แบบที่ Tony Dinh ทำแล้วได้เงินคืน

ทำคนเดียว ทำไมต้องเขียนชื่อคน?

เพื่อให้ alert มีเจ้าของ และพร้อมไว้สำหรับวันที่จ้างคนเพิ่ม

Next → ภาค 2 ตอนที่ 11: สัญญาที่ต้องเขียน