บทที่ 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

Harness Scorecard · มิติของบทนี้: “ค้นของจริง หรือเดาเอา?” one-shot call ❌ ตก — มันเดาจากภาพแช่แข็ง บทนี้สอนให้แยกงานที่ควรเป็น script (ไม่ใช้ AI) ออกจากงานที่ต้องการความยืดหยุ่น (แต่ยังต้องเติมเครื่องมืออีกหลายชิ้นกว่าจะเชื่อได้)

📋 build-your-harness checklist · บรรทัดที่ 2 “แยกงานที่ขั้นตอนตายตัว (เขียนเป็น script — ไม่ใช้ LLM) ออกจากงานที่ต้องใช้ภาษายืดหยุ่น”