Tool Calling คืออะไร

จาก 0 ถึง AI Agent — บันทึกการเรียนรู้ผ่านโปรเจกต์จริง

ตอนที่ 2: Tool Calling คืออะไร


ตอนที่แล้วเราเตรียม environment และเรียก Claude ครั้งแรกได้แล้ว ตอนนี้ก่อนจะดูโค้ดจริง ขอหยุดอธิบาย concept สำคัญมากก่อนสักตอนหนึ่ง

เพราะถ้าเข้าใจตรงนี้ โค้ดในตอนต่อๆ ไปจะ “คลิก” ทันทีเลย


ปัญหาของ AI แบบ “ถามตอบ” ธรรมดา

ลอง imagine ว่าเราจ้างพนักงานใหม่คนนึง เขาฉลาดมาก ความรู้กว้างขวาง แต่มีข้อจำกัดอย่างนึง —

เขารู้แค่สิ่งที่อยู่ในหัวตอนที่จ้างเข้ามา

ถ้าเราถามว่า “นโยบายลาพักร้อนของบริษัทเราคืออะไร?” — เขาตอบไม่ได้ เพราะมันอยู่ในคู่มือพนักงาน ไม่ได้อยู่ในหัวเขา

นี่คือปัญหาของ LLM (Large Language Model) อย่าง Claude เหมือนกัน — มันรู้เยอะมาก แต่รู้แค่สิ่งที่อยู่ใน prompt ที่เราส่งให้ ถ้าเอกสารของเราไม่ได้อยู่ใน prompt มันก็ตอบไม่ได้


วิธีแก้แบบเดิม: ยัดข้อมูลทั้งหมดเข้าไป

วิธีง่ายที่สุดคือ copy เนื้อหาเอกสารทั้งหมดใส่ใน prompt เลย

"ต่อไปนี้คือเอกสารทั้งหมด: [เนื้อหา 500 หน้า] ... ตอบคำถามนี้ให้หน่อย"

แต่มันมีปัญหาคือ:

  • AI มีขีดจำกัดว่ารับข้อมูลได้มากแค่ไหนต่อครั้ง (เรียกว่า context window)
  • ยิ่งข้อมูลเยอะ ยิ่งแพง เพราะ API คิดราคาตามปริมาณข้อมูล
  • ช้า และไม่ยืดหยุ่น

  • วิธีแก้แบบ Agent: ให้ AI “เลือก” สิ่งที่ต้องการเอง

    แทนที่จะยัดข้อมูลทั้งหมด — เราให้ AI เรียกใช้ฟังก์ชัน เพื่อดึงข้อมูลเองได้

    นี่คือ Tool Calling (บางทีเรียกว่า Function Calling)

    ลองนึกภาพแบบนี้:

    เราบอก Claude ว่า “คุณมีความสามารถพิเศษ 2 อย่าง: (1) ดูรายชื่อไฟล์ได้ และ (2) เปิดอ่านไฟล์ได้ ถ้าต้องการข้อมูลอะไร ใช้ความสามารถเหล่านี้เลย”

    แล้วพอเราถามว่า “Python คืออะไร?” — Claude จะคิดเองว่า:

    1. ขอดูก่อนว่ามีไฟล์อะไรบ้าง → เรียก list_files

    2. เห็นว่ามีไฟล์ python.txt น่าสนใจ → เรียก read_file("python.txt")

    3. ได้ข้อมูลแล้ว → ตอบคำถาม

    Claude ตัดสินใจเองทั้งหมด เราแค่ถาม


    Flow จริงๆ เป็นยังไง

    เราถาม
        ↓
    Claude คิด → "ต้องการข้อมูลเพิ่ม ขอเรียก tool"
        ↓
    บอกโปรแกรมเราว่า "เรียก list_files ด้วยนะ"
        ↓
    โปรแกรม Python ของเรารัน list_files จริงๆ แล้วส่งผลกลับให้ Claude
        ↓
    Claude คิดต่อ → "ต้องการอ่านไฟล์นี้" → เรียก read_file
        ↓
    โปรแกรมรัน read_file ส่งผลกลับ
        ↓
    Claude ได้ข้อมูลครบ → ตอบคำถาม

    สังเกตว่า Claude ไม่ได้รันโค้ดเอง — มันแค่ บอกเราว่าอยากเรียก tool อะไร แล้วเราเป็นคนรันให้ จากนั้นส่งผลกลับไปให้มัน

    เหมือนหัวหน้าสั่งลูกน้อง — หัวหน้าไม่ได้ทำเอง แต่เป็นคนตัดสินใจว่าต้องทำอะไร


    ทำไมถึงดีกว่า?

  • ประหยัด — Claude อ่านแค่ไฟล์ที่จำเป็น ไม่ต้องโหลดทั้งหมด
  • ยืดหยุ่น — เพิ่ม tool ใหม่ได้ตลอด เช่น ค้นเว็บ, เรียก database, ส่ง email
  • ตรวจสอบได้ — เราเห็นว่า Claude เรียก tool อะไรบ้าง ทำให้ debug ง่าย
  • ทำงานได้จริง — นี่คือพื้นฐานของ AI Agent ทุกตัวในโลก

  • Demo จาก Ask My Docs

    ลองดู output จริงของโปรเจกต์เรา:

    You: What is Python?
    Thinking...
      → list_files({})
      → read_file({'filename': 'python.txt'})
    Claude: Python is a high-level programming language...
    Sources:    ['python.txt']
    Confidence: high
    In docs:    True

    เห็นไหมครับ — บรรทัดที่ขึ้นต้นด้วย คือ tool ที่ Claude เรียกใช้ มันตัดสินใจเองว่าต้องดูรายชื่อไฟล์ก่อน แล้วเลือกอ่าน python.txt เพราะชื่อไฟล์ตรงกับคำถาม


    สรุปตอนที่ 2

    Tool Calling คือการ “ให้มือ” กับ AI — แทนที่มันจะรู้แค่สิ่งที่อยู่ใน prompt เราให้มันเรียกใช้ฟังก์ชันเพื่อหาข้อมูลเพิ่มเองได้

    ตอนหน้าเราจะดูโค้ดจริงๆ ว่าเราบอก Claude ว่า “มี tool อะไรให้ใช้บ้าง” ได้ยังไง


    📚 Series: จาก 0 ถึง AI Agent — บันทึกการเรียนรู้ผ่านโปรเจกต์จริง

    Source code ทั้งหมดอยู่ที่ github.com/nipitpongpan/ask-my-docs


    Posted

    in

    ,

    by

    Tags:

    Comments

    2 responses to “Tool Calling คืออะไร”

    Leave a Reply

    Your email address will not be published. Required fields are marked *