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

Function Calling ใน OpenAI API

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

อัปเดตล่าสุด: 15 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 เราได้เปิดตัวฟีเจอร์ “สร้างอะไรก็ได้” ซึ่งช่วยให้นักพัฒนาอธิบายฟังก์ชัน วางฟังก์ชันนั้นโดยตรง หรือวางโค้ดของคุณ แล้วสร้าง Schema ฟังก์ชันที่ถูกต้องได้ เรียนรู้เพิ่มเติมเกี่ยวกับ “สร้างอะไรก็ได้” ในบทความศูนย์ช่วยเหลือนี้

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

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

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

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

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

  • การสร้างเวิร์กโฟลว์ที่สมบูรณ์:

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

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

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

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

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

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

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

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

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

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