จาก 0 ถึง AI Agent — บันทึกการเรียนรู้ผ่านโปรเจกต์จริง
ตอนที่ 2: Tool Calling คืออะไร
ตอนที่แล้วเราเตรียม environment และเรียก Claude ครั้งแรกได้แล้ว ตอนนี้ก่อนจะดูโค้ดจริง ขอหยุดอธิบาย concept สำคัญมากก่อนสักตอนหนึ่ง
เพราะถ้าเข้าใจตรงนี้ โค้ดในตอนต่อๆ ไปจะ “คลิก” ทันทีเลย
ปัญหาของ AI แบบ “ถามตอบ” ธรรมดา
ลอง imagine ว่าเราจ้างพนักงานใหม่คนนึง เขาฉลาดมาก ความรู้กว้างขวาง แต่มีข้อจำกัดอย่างนึง —
เขารู้แค่สิ่งที่อยู่ในหัวตอนที่จ้างเข้ามา
ถ้าเราถามว่า “นโยบายลาพักร้อนของบริษัทเราคืออะไร?” — เขาตอบไม่ได้ เพราะมันอยู่ในคู่มือพนักงาน ไม่ได้อยู่ในหัวเขา
นี่คือปัญหาของ LLM (Large Language Model) อย่าง Claude เหมือนกัน — มันรู้เยอะมาก แต่รู้แค่สิ่งที่อยู่ใน prompt ที่เราส่งให้ ถ้าเอกสารของเราไม่ได้อยู่ใน prompt มันก็ตอบไม่ได้
วิธีแก้แบบเดิม: ยัดข้อมูลทั้งหมดเข้าไป
วิธีง่ายที่สุดคือ copy เนื้อหาเอกสารทั้งหมดใส่ใน prompt เลย
"ต่อไปนี้คือเอกสารทั้งหมด: [เนื้อหา 500 หน้า] ... ตอบคำถามนี้ให้หน่อย"แต่มันมีปัญหาคือ:
วิธีแก้แบบ 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 อะไร แล้วเราเป็นคนรันให้ จากนั้นส่งผลกลับไปให้มัน
เหมือนหัวหน้าสั่งลูกน้อง — หัวหน้าไม่ได้ทำเอง แต่เป็นคนตัดสินใจว่าต้องทำอะไร
ทำไมถึงดีกว่า?
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 — บันทึกการเรียนรู้ผ่านโปรเจกต์จริง
- ตอนที่ 1: เริ่มต้นกับ Anthropic API
- ตอนที่ 2: Tool Calling คืออะไร ← คุณอยู่ที่นี่
- ตอนที่ 3: นิยาม Tools ให้ Claude ใช้
- ตอนที่ 4: Agent Loop — วนจนกว่าจะได้คำตอบ
- ตอนที่ 5: Pydantic กับ Structured Output
- ตอนที่ 6: รันจริง และสิ่งที่ได้เรียนรู้
Source code ทั้งหมดอยู่ที่ github.com/nipitpongpan/ask-my-docs
Leave a Reply