บทที่ 02 · ปัญหา & คำศัพท์ · Script vs One-Shot Call
Script & การเรียกครั้งเดียว
เราเริ่มจากของที่ง่ายที่สุดเท่าที่จะเป็นไปได้: script ที่ส่งรายงานแล็บตอนกลางคืนแบบอัตโนมัติ —
มั่นคงสุด ๆ แต่ทำได้งานเดียว พอมีคนอยากถามเป็นภาษาคนบ้าง เราเลยลองแปะ การเรียก LLM ครั้งเดียว (one-shot call) เข้าไป
มันยืดหยุ่นขึ้นจริง แต่กลายเป็น “prompt-and-pray” — เดา ลืม และค้นอะไรไม่ได้ บทนี้ทำให้เห็นเส้นแบ่งระหว่างสองสิ่งนี้ชัด ๆ
พูดแบบเข้าใจง่าย
Script คือ ลำดับขั้นที่ตายตัว ทำตามทุกครั้งเป๊ะ ๆ: ถึงเวลา → อ่านการจองของวันนี้ → จัดเป็นตาราง → ส่งอีเมล
มันคาดเดาได้ 100% ไม่เคยมั่ว และไม่ต้องใช้ AI เลย — แต่ทำได้ เฉพาะ งานที่เราเขียนไว้ ถามนอกสคริปต์ไม่ได้
การเรียก LLM ครั้งเดียว คือ ป้อนข้อความเข้า ได้ข้อความตอบกลับ จบในช็อตเดียว
มันเข้าใจภาษาที่ยืดหยุ่น แต่ตัวมันเอง ไม่มีความจำข้ามครั้ง ไม่มี “มือ” ไปค้นข้อมูล และไม่มีรอบที่สองให้แก้ตัว
ถ้าข้อมูลที่มันต้องใช้ไม่ได้อยู่ในข้อความที่เราป้อนให้ มันจะ แต่งคำตอบที่ดูสมเหตุสมผลขึ้นมาอย่างมั่นใจ
เปรียบเทียบ: ตู้กดน้ำ กับ อัจฉริยะที่ไม่ยอมเปิดดูอะไรเลย
script คือ ตู้กดน้ำ — กด B4 ได้ B4 ทุกครั้ง เชื่อถือได้แต่ทำได้แค่ที่ตั้งไว้
ส่วน one-shot call คือ คนเก่งมากที่ตอบจากความจำล้วน ๆ ไม่ยอมเปิดสมุดจอง ไม่ยอมบอกว่า “ไม่รู้”
ถามอะไรก็ตอบฉะฉานทันที — ฟังดูน่าเชื่อ จนกระทั่งคุณไปเช็คแล้วพบว่ามันเดา
ในระบบของเรา — รายงานกลางคืน (script) vs ถามเป็นภาษาคน (one-shot)
รายงานแล็บตอนกลางคืนเหมาะกับ script เป๊ะ ๆ เพราะ ทุกขั้นรู้ล่วงหน้าหมด ไม่มีอะไรต้องตัดสินใจ:
ตั้งเวลาทุกคืน 22:00
→
อ่านการจองของวันนี้
→
จัดรูปทำเป็นตาราง
→
ส่งอีเมลถึงเจ้าหน้าที่
แต่พอมีคนพิมพ์ถามอิสระว่า “Lab 3 ว่างพฤหัสบ่ายไหม” เราเลยแปะ one-shot call โดย
ก๊อปตารางการจองทั้งก้อนแปะลงไปในคำสั่ง แล้วให้มันตอบ ดูเหมือนได้ผล…จนกว่าโลกจริงจะขยับ:
คำถาม“Lab 3 ว่างพฤหัส 13:00 ไหม?”
→
แปะข้อมูลก๊อปตารางจอง (ภาพ ณ ตอนนั้น) ลงในพรอมป์ต์
→
เดาตอบจาก “ภาพแช่แข็ง” — ไม่ได้ค้นของจริง
→
ตอบมั่นใจเสมอ ถูกหรือผิดก็ฟังดูเหมือนกัน
| Script (รายงานกลางคืน) | One-shot call (ถามอิสระ) |
| ยืดหยุ่น | ไม่ — ทำได้งานเดียว | ใช่ — รับคำถามภาษาคนได้ |
| เชื่อถือได้ | มาก — คาดเดาได้ ไม่เคยมั่ว | เปราะ — เดาเมื่อข้อมูลไม่อยู่ในพรอมป์ต์ |
| ค้นข้อมูลจริง | ใช่ (อ่านตรงจากระบบ) | ไม่ — เห็นแค่ที่เราแปะให้ |
| จำเรื่องก่อนหน้า | ไม่จำเป็น | ไม่ — “แล้วพรุ่งนี้ล่ะ?” ไร้ความหมาย |
ทำพลาด vs ทำถูก
⚠️ แย่ · เรียกครั้งเดียวแล้วเรียกมันว่า “agent”
แปะข้อมูลทั้งก้อนแล้วหวังผล
one-shot call ที่แปะตารางจองลงไปไม่ใช่ agent — มัน ค้นอะไรไม่ได้และแก้ตัวเองไม่ได้
ถ้าห้องที่ถามไม่อยู่ในก้อนที่แปะ มันจะตอบ “ว่าง” แบบมั่นใจ ทั้งที่ไม่มีข้อมูลด้วยซ้ำ
ดูดีในเดโม พังทันทีที่ข้อมูลจริงเปลี่ยน
✅ ดี · ใช้ script กับงานที่รู้ขั้นตอนหมด
รายงานกลางคืน = script ล้วน
เมื่อ ทุกขั้นรู้ล่วงหน้า ให้เขียนเป็นโค้ด ไม่ใช่ยกให้โมเดล — มันเร็ว ฟรี ไม่มีวันมั่วตัวเลข
และถ้าพังก็พังแบบเห็นชัด (เช่นส่งอีเมลไม่ออก) ไม่ใช่ตอบผิดแบบเนียน ๆ
🌱 จุดเริ่มของทางแก้
เก็บความยืดหยุ่นไว้ แต่เติม “มือ” กับ “ลูป”
ความสามารถด้านภาษาของ LLM มีค่า — แต่จะเชื่อถือได้ก็ต่อเมื่อมันไป ค้นของจริงได้
และมี รอบที่สองให้ตรวจแล้วแก้ นั่นคือสิ่งที่บทถัดไปจะเติมเข้าไป
ลองเอง — ใส่ “ความจริงที่เปลี่ยนไป” แล้วดูมันเดา
กิจกรรม · กดสลับแล้วดูผล
Prompt-and-Pray
one-shot call ตอบ “Lab 3 ว่างพฤหัส 13:00 ไหม?” จาก ภาพตารางจองที่เราแปะให้ เท่านั้น
ลองเปิด “fault” ทีละอัน แล้วดูว่าคำตอบที่ มั่นใจเท่าเดิม กลายเป็นผิดได้ยังไง —
ไม่ใช่เพราะโมเดลโง่ลง แต่เพราะมันค้นอะไรไม่ได้
เปิด/ปิด fault แล้วสังเกตคำตอบ
มองไปข้างหน้า — ทางออกไม่ใช่ “โมเดลที่แพงกว่า”
สังเกตว่าทุก fault ที่คุณเปิด แก้ด้วยการเปลี่ยนเป็นโมเดลที่ฉลาดกว่าไม่ได้เลย —
มันขาด มือไปค้น ขาด ลูปให้ทำซ้ำ และขาด ความจำ บทที่ 03 เราจะใส่ “ลูป” เข้าไป
แล้วของชิ้นเดิมนี้จะเริ่มกลายเป็น agent จริง ๆ
สรุปบทที่ 02
- Script = ขั้นตอนตายตัว เชื่อถือได้แต่ทำได้งานเดียว เหมาะกับงานที่ รู้ทุกขั้นล่วงหน้า
- One-shot call = ยืดหยุ่นด้านภาษา แต่ค้นไม่ได้ จำไม่ได้ แก้ตัวไม่ได้ → “prompt-and-pray”
- การเรียกครั้งเดียว ไม่ใช่ agent เพราะลงมือกับโลกจริงไม่ได้และตรวจงานตัวเองไม่ได้
- ความผิดพลาดแบบ “มั่นใจแต่ผิด” คือโหมดที่อันตรายที่สุด เพราะหน้าตาเหมือนคำตอบที่ถูกเป๊ะ
Harness Scorecard · มิติของบทนี้: “ค้นของจริง หรือเดาเอา?”
one-shot call ❌ ตก — มันเดาจากภาพแช่แข็ง บทนี้สอนให้แยกงานที่ควรเป็น script (ไม่ใช้ AI)
ออกจากงานที่ต้องการความยืดหยุ่น (แต่ยังต้องเติมเครื่องมืออีกหลายชิ้นกว่าจะเชื่อได้)
📋 build-your-harness checklist · บรรทัดที่ 2
“แยกงานที่ขั้นตอนตายตัว (เขียนเป็น script — ไม่ใช้ LLM) ออกจากงานที่ต้องใช้ภาษายืดหยุ่น”