คนที่เรียนหลักสูตร AI API กับผมไปแล้วคงได้เขียนโค้ดในหัวข้อของ function calling กันมาบ้าง วันนี้เลยเอา best practices เกี่ยวกับการออกแบบ Function Calling หรือ Tool Calling มาให้อ่านกันครับ
.
1. Function Description
ให้ระบุคำอธิบายของฟังก์ชันและพารามิเตอร์ให้ “ชัดเจนและเฉพาะเจาะจง” มากที่สุด เพราะ LLM จะอาศัยคำอธิบายเหล่านี้ในการเลือกฟังก์ชันที่ถูกต้องและป้อน argument ที่เหมาะสม (สำคัญมาก)
ลองใช้ค่า temperature ต่ำ (เช่น 0) เพื่อให้โมเดลเลือกฟังก์ชันได้อย่างแน่นอนและสม่ำเสมอ
.
2. Naming
การตั้งชื่อ ใช้ชื่อฟังก์ชันที่บ่งบอกถึงหน้าที่ชัดเจน หลีกเลี่ยงการใช้ space (เว้นวรรค), จุด (.) หรือขีด (-) ในชื่อ
.
3. Strong Typing
ควรกำหนดชนิดข้อมูลของพารามิเตอร์ให้เจาะจง เช่น integer, string, enum เป็นต้น (จะใช้ TypeScript ก็ได้) ถ้าพารามิเตอร์มีค่าให้เลือกจำกัด ให้ใช้ enum จะช่วยลดข้อผิดพลาดได้
.
4. Tool Selection
การเลือกเครื่องมือ แม้ว่า LLM model จะสามารถใช้เครื่องมือได้จำนวนมาก แต่ถ้ามีเครื่องมือ (tools) เยอะจนเกินไปก็อาจเสี่ยงให้เลือกผิดหรือเลือกอย่างไม่เหมาะสมได้ เพื่อให้ได้ผลลัพธ์ที่ดี ควรเลือกใช้แค่ tools ที่เกี่ยวข้องกับงานนั้นจริง ๆ
แนะนำให้มี active tools ไม่เกิน 10-20 รายการ
.
5. Prompt Engineering
– ควรระบุบริบทกับโมเดล (model role) เช่น “คุณคือผู้ช่วยพยากรณ์อากาศที่ให้ข้อมูลอย่างละเอียด”
– ให้คำแนะนำว่าให้ใช้ฟังก์ชันเมื่อไหร่ อย่างไร เช่น “ห้ามเดาเวลา ให้ใช้วันที่ในอนาคตเสมอหากดูพยากรณ์อากาศ”
– กระตุ้นให้โมเดลถามกลับเพื่อขอข้อมูลเพิ่มเติมถ้าจำเป็น
.
5. Validation
ถ้าฟังก์ชันนั้นสำคัญหรือมีผลกระทบมาก (เช่น สั่งซื้อของ) ควรให้ผู้ใช้ยืนยันก่อนจะ execute ฟังก์ชันจริง
.
6. Error Handling
ฟังก์ชันควรมีการจัดการข้อผิดพลาดที่ดี ถ้ามี input ที่ไม่ถูกต้อง หรือ API ล้มเหลว ควรคืนข้อความ error ที่มีข้อมูลเพียงพอ เพื่อให้โมเดลนำไปตอบ user ต่อได้อย่างเหมาะสม
.
7. Security
คำนึงถึงความปลอดภัยเวลาเรียก API ภายนอก ใช้ authentication และ authorization ที่เหมาะสม อย่าให้ข้อมูลสำคัญ/ข้อมูลส่วนตัวถูกเปิดเผยใน function call
.
8. Token Limits
คำอธิบายฟังก์ชันและพารามิเตอร์จะนับรวมเป็น input token ของโมเดล ถ้าเจอปัญหา token limit (เช่น prompt ยาวเกิน) ให้ลดจำนวนฟังก์ชันหรือเขียนคำอธิบายให้กระชับลง
ถ้า task ซับซ้อนมาก ให้แยกฟังก์ชันออกเป็นกลุ่มเล็ก ๆ ที่โฟกัสเฉพาะงานย่อย
.
สำหรับคนที่ใช้งาน API ของ LLM เจ้าต่างๆ และใช้ฟีเจอร์ Function calling อย่าลืมเอาหลักการออกแบบไปใช้ในโปรเจคตัวเองได้นะครับ
Views: 7