Tool คืออะไร AI Agent เรียกใช้อย่างไร

บทความชุดถัดจากนี้จะพาไปเจาะลึกทีละ tool ของแต่ละผลิตภัณฑ์ ก่อนเข้าเรื่องนั้น บทความนี้อธิบายพื้นฐานก่อนว่า “tool” ในบริบทของ AI agent คืออะไร และ agent ตัดสินใจเรียกใช้ tool อย่างไร — เข้าใจตรงนี้ก่อน จะอ่านบทความเจาะลึกแต่ละ tool ต่อไปได้ลื่นขึ้นมาก
LLM เดี่ยวๆ ทำอะไรได้แค่ “ทายคำถัดไป”
โมเดลภาษา (LLM) ไม่ว่าจะใหญ่แค่ไหน โดยพื้นฐานแล้วทำอย่างเดียวคือรับข้อความเข้า แล้วทายว่าคำ/token ถัดไปควรเป็นอะไร ทำซ้ำไปเรื่อยๆ จนได้คำตอบ — มันไม่มีทาง “ไปเปิดไฟล์ในเครื่องคุณดู” หรือ “ไปเช็คราคาหุ้นตอนนี้” ได้ด้วยตัวเอง เพราะมันไม่มีมือไม่มีตา มีแค่ข้อความเข้า-ข้อความออก
นี่คือข้อจำกัดที่แท้จริงของ LLM: ความรู้ของมันหยุดอยู่ที่วันที่เทรนโมเดลเสร็จ และไม่รู้อะไรเลยเกี่ยวกับเครื่องหรือข้อมูลของคุณ
Tool คือสะพานเชื่อมระหว่างโมเดลกับโลกจริง
“Tool” (บางที่เรียก “function calling”) คือกลไกที่ให้โค้ดรอบๆ โมเดลทำงานแทน แล้วส่งผลลัพธ์กลับเข้าไปในบทสนทนาให้โมเดลอ่านต่อ ตัวอย่างที่เข้าใจง่าย:
ผู้ใช้ถาม: "ไฟล์ contract.pdf อยู่ไหน"
1. โมเดลตัดสินใจ: "ต้องค้นไฟล์ ไม่ใช่ทายเอง" → เรียก tool rag_search(query="contract.pdf")
2. โค้ด (ไม่ใช่โมเดล) รันคำสั่งค้นหาจริงในเครื่อง
3. ผลลัพธ์ (path ของไฟล์ที่เจอ) ถูกส่งกลับเข้า context ให้โมเดลอ่าน
4. โมเดลตอบผู้ใช้โดยอ้างอิงผลลัพธ์จริงที่เพิ่งได้มา ไม่ใช่เดา
จุดสำคัญ: โมเดลไม่เคยรันคำสั่งเอง มันแค่ “ขอ” ให้โค้ดรันให้ ด้วยการส่งชื่อ tool + argument ที่ต้องการออกมาเป็นข้อความที่มีรูปแบบตายตัว (structured call) — โค้ดฝั่งแอปเป็นคนตรวจสอบ อนุญาต/บล็อก แล้วรันจริง
Tool แต่ละตัวมี “schema” ที่บอกโมเดลว่ามันคืออะไร
ทุก tool ต้องประกาศตัวเองด้วย schema (แบบ OpenAI function-calling format) ที่มีอย่างน้อย:
- ชื่อ (เช่น
rag_search,bash,web_search) - คำอธิบาย (description) — บอกโมเดลว่า tool นี้ใช้ทำอะไร และเมื่อไรควรเรียก (ส่วนนี้สำคัญมาก มักมีตัวอย่าง ✅/❌ กำกับไว้ให้โมเดลเทียบ)
- พารามิเตอร์ที่ต้องส่งมา (เช่น
rag_searchต้องการqueryเป็น string)
โมเดลเห็น schema ของ tool ทั้งหมดที่ agent มีให้ใช้ พร้อมกับคำถามของผู้ใช้ในทุกรอบสนทนา แล้วตัดสินใจเองว่าจะเรียก tool ไหน (ถ้ามี) จากคำอธิบายที่อ่านได้ — นี่คือเหตุผลที่คำอธิบายใน schema ต้องเขียนอย่างระมัดระวังมาก โมเดลอ่านผิดหรือ description กำกวม จะเรียก tool ผิดตัวได้จริง
วงจร ReAct: คิด → เรียก tool → ดูผล → คิดต่อ
รูปแบบที่ agent ส่วนใหญ่ในเว็บนี้ใช้เรียกว่า ReAct (Reason + Act) วนเป็นลูป:
- โมเดลคิดว่าต้องทำอะไรต่อจากคำถามและบริบทที่มี
- ถ้าต้องการข้อมูล/การกระทำที่ตัวเองทำเองไม่ได้ → เรียก tool (ส่ง tool name + arguments)
- โค้ดรัน tool จริง แล้วส่งผลลัพธ์กลับเข้า context เป็นข้อความใหม่
- โมเดลอ่านผลลัพธ์ แล้วตัดสินใจต่อ — เรียก tool ตัวอื่นอีก หรือสรุปคำตอบสุดท้ายให้ผู้ใช้
วนซ้ำได้หลายรอบในคำถามเดียว จนกว่าจะได้คำตอบสุดท้าย หรือชนเพดานจำนวนรอบที่ตั้งไว้ (กันไม่ให้วนไม่รู้จบ)
ทำไมต้อง “โค้ดคุมเข้ม” ไม่ใช่ปล่อยให้โมเดลตัดสินใจเอง 100%
จุดที่น่าสนใจของ 4 ผลิตภัณฑ์ในเว็บนี้คือ ไม่มีตัวไหนปล่อยให้โมเดลเรียก tool ได้อย่างอิสระเต็มที่ — มีชั้นโค้ดคอยตรวจสอบก่อน-ระหว่าง-หลังการเรียกทุกครั้งเสมอ ด้วยเหตุผลจริง 2 ข้อ:
- ความปลอดภัย — tool อย่าง
bashเข้าถึงไฟล์/คำสั่งจริงในเครื่องได้ ถ้าปล่อยให้โมเดล (ที่บางทีก็ทายผิดหรือถูกหลอกจากข้อความในผลค้นเว็บ) ตัดสินใจเองล้วนๆ ความเสี่ยงสูงเกินไป จึงต้องมี allow-list, deny-list, และ sandbox ระดับ OS คอยกำกับ - ความแม่นยำ — โมเดลขนาดเล็กมีโอกาสเรียก tool ผิด, ใส่ argument ผิดรูปแบบ, เรียกซ้ำไม่จบ หรือลืมแนบแหล่งอ้างอิง — โค้ดจึงมีชั้นตรวจสอบ (guardrail) คอยจับพฤติกรรมพวกนี้และแก้ไขแบบตรวจสอบได้ ไม่ปล่อยให้เป็นดวง
อ่านต่อ: เจาะลึกแต่ละ tool จริง
บทความถัดไปในชุดนี้จะพาไปดู tool จริงทีละตัวของแต่ละผลิตภัณฑ์ในเว็บนี้ — schema จริง, เงื่อนไขที่ agent ใช้ตัดสินใจว่าจะเรียกเมื่อไร, และกลไกป้องกันภายในของแต่ละตัว เริ่มจาก ENDEAVOR AGENT LITE ซึ่งมี 6 tools
ความคิดเห็น
กำลังโหลดความคิดเห็น...