OpenAI
หน้านี้แปลด้วยระบบอัตโนมัติ ดูต้นฉบับภาษาอังกฤษ.

Function Calling ใน OpenAI API

Function Calling คืออะไร และทำงานอย่างไรใน OpenAI API?

อัปเดตล่าสุด: 7 days ago

ณ วันที่ 11 มีนาคม 2025 เราได้เปิดตัวองค์ประกอบพื้นฐานของแพลตฟอร์มเอเจนต์ใหม่ของเราแล้ว สำหรับรายละเอียด โปรดดูเอกสาร API สำหรับResponses API, เครื่องมือซึ่งรวมถึงWeb Search, File Search และ Computer Use รวมถึงAgents SDK พร้อมTracing ของเรา

Function Calling ช่วยให้คุณเชื่อมต่อโมเดล OpenAI เข้ากับเครื่องมือและระบบภายนอกได้ สิ่งนี้มีประโยชน์ในหลายกรณี เช่น เพิ่มความสามารถให้ผู้ช่วย AI หรือสร้างการผสานการทำงานเชิงลึกระหว่างแอปพลิเคชันของคุณกับ LLM

ดูข้อมูลเพิ่มเติมได้ในคู่มือนักพัฒนา function callingของเรา

ในเดือนมิถุนายน 2024 เราได้เปิดตัวผลลัพธ์แบบมีโครงสร้าง เมื่อคุณเปิดใช้งานโดยตั้งค่า `strict: true` ในการกำหนดฟังก์ชัน ผลลัพธ์แบบมีโครงสร้างจะรับประกันว่าอาร์กิวเมนต์ที่โมเดลสร้างขึ้นสำหรับการเรียกฟังก์ชันจะตรงกับ JSON Schema ที่คุณระบุไว้ในการกำหนดฟังก์ชันทุกประการ

ในเดือนตุลาคม 2024 เราได้เปิดตัวฟีเจอร์ 'Generate Anything' ซึ่งช่วยให้นักพัฒนาอธิบายฟังก์ชัน วางฟังก์ชันนั้นโดยตรง หรือวางโค้ดของคุณ แล้วสร้าง Schema ฟังก์ชันที่ถูกต้องได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ 'Generate Anything' ได้ในบทความศูนย์ช่วยเหลือนี้

ฉันจะใช้ Function Calling ได้อย่างไร?

Function Calling มีประโยชน์กับกรณีใช้งานจำนวนมาก เช่น:

  • ทำให้ผู้ช่วยดึงข้อมูลได้:

    • ผู้ช่วย AI ต้องดึงข้อมูลลูกค้าล่าสุดจากระบบภายในเมื่อผู้ใช้ถามว่า “คำสั่งซื้อล่าสุดของฉันมีอะไรบ้าง?” ก่อนที่จะสร้างคำตอบให้ผู้ใช้

  • ทำให้ผู้ช่วยดำเนินการได้:

    • ผู้ช่วย AI ต้องจัดตารางการประชุมตามความต้องการของผู้ใช้และเวลาว่างในปฏิทิน

  • ทำให้ผู้ช่วยคำนวณได้:

    • ผู้ช่วยติวคณิตศาสตร์ต้องทำการคำนวณทางคณิตศาสตร์

  • สร้างเวิร์กโฟลว์ที่ซับซ้อน:

    • ไปป์ไลน์การดึงข้อมูลที่ดึงข้อความดิบ จากนั้นแปลงเป็นข้อมูลแบบมีโครงสร้างและบันทึกลงฐานข้อมูล

รองรับ Function Calling ในResponses API ซึ่งรวมความสามารถที่ก่อนหน้านี้แยกกันอยู่ในChat Completions APIและAssistants API

ฉันจะใช้โหมด JSON ได้อย่างไร?

เมื่อเปิดโหมด JSON เอาต์พุตของโมเดลจะถูกทำให้เป็น JSON ที่ถูกต้อง ยกเว้นในบางกรณีขอบที่คุณควรตรวจจับและจัดการอย่างเหมาะสม

หากต้องการขอโหมด JSON ด้วย Responses API หรือ Chat Completions API คุณสามารถตั้งค่า response_format เป็น { "type": "json_object" } บนโมเดลที่รองรับได้ แต่จะใช้งานได้ก็ต่อเมื่อเงื่อนไขล่วงหน้าของโมเดล/ข้อความ/เครื่องมือเป็นไปตามที่กำหนด (เช่น โมเดลรองรับ json_object บทสนทนามีคำสั่งให้สร้าง JSON และข้อจำกัดของเครื่องมือใดๆ เข้ากันได้) สำหรับโหมด JSON ที่ใช้ response_format: {"type": "json_object"} ข้อความคำขออย่างน้อยหนึ่งรายการต้องมีคำว่า json ในรูปแบบใดรูปแบบหนึ่ง เช่น JSON, json หรือ Json มิฉะนั้น API จะส่งข้อผิดพลาดกลับมา เมื่อใช้ Function Calling บนโมเดล/เส้นทางที่เข้ากันได้ ข้อจำกัด JSON จะถูกใช้กับอาร์กิวเมนต์ของการเรียกฟังก์ชันโดยอัตโนมัติ ส่วนโมเดลหรือชุดค่าผสมของเครื่องมือ/รูปแบบการตอบกลับที่ไม่เข้ากันอาจถูกปฏิเสธหรืออาจไม่ใช้การสุ่มตัวอย่างแบบจำกัดด้วย JSON

หมายเหตุสำคัญ:

  • เมื่อใช้โหมด JSON คุณต้องสั่งให้โมเดลสร้าง JSON ผ่านข้อความใดข้อความหนึ่งในบทสนทนาเสมอ เช่น ผ่าน system message ของคุณ หากคุณไม่ใส่คำสั่งอย่างชัดเจนให้สร้าง JSON โมเดลอาจสร้างสตรีมช่องว่างที่ไม่สิ้นสุด และคำขออาจทำงานต่อเนื่องไปจนถึงขีดจำกัด Token เพื่อช่วยให้แน่ใจว่าคุณจะไม่ลืม โหมด JSON จะปฏิเสธคำขอ เว้นแต่ข้อความอินพุตหรือคำสั่งที่เกี่ยวข้องจะมีคำว่า json ไม่ว่าตัวพิมพ์เล็กหรือใหญ่ในรูปแบบใดก็ตาม

  • โหมด JSON ไม่ได้รับประกันว่าเอาต์พุตจะตรงกับ Schema ใดโดยเฉพาะ รับประกันเพียงว่าเป็นข้อมูลที่ถูกต้องและแยกวิเคราะห์ได้โดยไม่มีข้อผิดพลาด คุณควรใช้ผลลัพธ์แบบมีโครงสร้างเพื่อให้แน่ใจว่าตรงกับ Schema ของคุณ หรือหากทำไม่ได้ คุณควรใช้ไลบรารีสำหรับการตรวจสอบความถูกต้องและอาจลองซ้ำ เพื่อให้แน่ใจว่าเอาต์พุตตรงกับ Schema ที่ต้องการ

  • แอปพลิเคชันของคุณต้องตรวจจับและจัดการกรณีขอบที่อาจทำให้เอาต์พุตของโมเดลไม่เป็นออบเจ็กต์ JSON ที่สมบูรณ์ (ดูด้านล่าง)

บทความนี้มีประโยชน์หรือไม่