מהו function calling ואיך הוא עובד
function calling, או קריאה לפונקציה, מאפשר למודל לבקש מתוכנה לשלוף מידע או לבצע פעולה. המפתחים מגדירים אילו פעולות זמינות ואילו פרטים כל פעולה מקבלת. המודל בוחר פעולה ומחזיר בקשה מובנית להפעלתה, והקוד של היישום מבצע אותה. המודל עצמו לא מריץ שום דבר.
כך עוזר שיחה יכול לבקש לבדוק מצב הזמנה במערכת העסק, לקבל את התוצאה ולנסח תשובה ללקוח. הגדרת הפעולה לבדה אינה יוצרת חיבור למערכת, וצריך לכתוב את הקוד שמטפל בבקשה. התהליך מתואר בתיעוד הרשמי של OpenAI.
לפי התיעוד, התהליך כולל חמישה שלבים: היישום שולח למודל בקשה יחד עם רשימת הכלים הזמינים, המודל מחזיר קריאה לכלי, היישום מריץ את הפונקציה, התוצאה נשלחת בחזרה למודל, והמודל מחזיר תשובה סופית או קריאות נוספות. התהליך יכול לחזור על עצמו כמה פעמים באותה שיחה.
המנגנון מתאים כשתשובה דורשת מידע ממערכת חיצונית או פעולה בתוכה, למשל מערכת הזמנות, יומן או מערכת ניהול לקוחות. אם אתם צריכים רק לנסח פסקה מטקסט שכבר מסרתם, אפשר להתחיל בלי חיבור כזה.
| מרכיב | מה הוא כולל | מי אחראי עליו |
|---|---|---|
| הגדרת הפעולה | שם, תיאור ושדות הקלט שהפעולה מקבלת | מפתחי היישום |
| בקשת הפעלה | בחירת פעולה והנתונים שמוצע להעביר לה | המודל |
| ביצוע | הרצת הקוד שקורא מידע או מבצע פעולה | היישום המחובר |
| תוצאת הפעולה | מידע שחוזר ליישום ומועבר למודל להמשך הטיפול | הקוד שמממש את הפעולה |
מקור: תיעוד הקריאה לפונקציות של OpenAI
דוגמה: לקוח מבקש לבדוק הזמנה
נניח שאתם בונים עוזר לחנות, ולקוח מבקש לדעת אם ההזמנה שלו נשלחה. בדוגמה ההיפותטית הזאת הוגדרה לעוזר פעולה לחיפוש הזמנה, שמקבלת מזהה הזמנה.
- היישום מעביר למודל את הבקשה ואת הגדרת הפעולה הזמינה.
- המודל מחזיר בקשה להפעיל את חיפוש ההזמנה, בצירוף המזהה.
- היישום בודק הרשאה, מפעיל את החיפוש ומקבל תוצאה.
- היישום מחזיר למודל את תוצאת החיפוש.
- המודל מנסח תשובה לפי המידע שהתקבל, או מבקש פעולה נוספת.
בתיעוד של OpenAI כל בקשה כזו מגיעה עם מזהה קריאה (call_id), ושם הפונקציה והארגומנטים בפורמט JSON. את התוצאה מחזירים עם אותו מזהה, כדי שהמודל ידע לאיזו בקשה היא שייכת. המודל יכול להחזיר אפס קריאות, קריאה אחת או כמה קריאות בבת אחת, ולכן הקוד צריך לטפל גם במקרה שאין קריאה בכלל וגם במקרה של כמה.
אפשר לממש מנגנון כזה כחלק מסוכן בינה מלאכותית לעסק. לצורך ניסוי ראשון, עדיף לבחור פעולה שקוראת מידע בלי לשנות אותו, כמו בירור מצב הזמנה.
מה מגדירים לפעולה ומה נשאר לבדוק
לפעולה מגדירים שם, תיאור ושדות קלט. התיאור מסביר למודל מתי ואיך להשתמש בה, והשדות, שמוגדרים בסכמת JSON, קובעים אילו נתונים להעביר. למשל, פעולת חיפוש הזמנה יכולה לדרוש מזהה הזמנה בלבד.
מצב strict
בממשק של OpenAI אפשר להגדיר strict בערך true, ואז הקריאות עוקבות אחרי הסכמה באופן אמין יותר ולא ברמת מאמץ סביר בלבד. התיעוד ממליץ להפעיל אותו. התנאים לכך:
- בכל אובייקט בסכמה additionalProperties מוגדר כ־false.
- כל שדה ב־properties מופיע גם ברשימת השדות הנדרשים.
- שדה אופציונלי מוגדר בעזרת null כאחד מסוגי הערך האפשריים.
אם strict מופעל והסכמה אינה עומדת בתנאים, הבקשה נדחית. ב־Chat Completions ברירת המחדל היא מצב לא קשיח, ולכן כדאי להגדיר אותו במפורש.
גם מבנה תקין יכול להכיל טעות
התאמה למבנה משאירה מקום לטעות בתוכן: מזהה הזמנה יכול להיות כתוב בפורמט תקין ולהשתייך להזמנה אחרת. בפרק הטיפול בטעויות בתיעוד של פלט מובנה כתוב ש־Structured Outputs עדיין יכול להכיל טעויות, והתיעוד ממליץ לאמת כללים עסקיים שהסכמה אינה מביעה.
לכן בדקו ביישום שההזמנה שייכת למשתמש המחובר ושהפעולה מותרת לו. אם חסר פרט חיוני, הגדירו שהעוזר יבקש אותו לפני ההפעלה. בהנחיית המערכת של העוזר אפשר לתאר את ההתנהגות הרצויה, ואת בדיקת ההרשאה עצמה יש לממש בקוד.
function calling או פלט מובנה: מה לבחור
שני המנגנונים משתמשים בסכמה, אבל הם משרתים מטרות שונות. לפי התיעוד של OpenAI, function calling מתאים כשהמודל מתחבר לכלים, לפונקציות ולנתונים במערכת שלכם. פלט מובנה בתשובה למשתמש מתאים כשרוצים לקבוע את צורת התשובה עצמה, למשל טבלה עם שדות קבועים.
דוגמה: אם אתם רוצים שהמודל יחלץ משיחה את שם הלקוח ואת נושא הפנייה לתבנית קבועה, פלט מובנה מספיק. אם אתם רוצים שהוא ישלוף את מצב ההזמנה ממערכת המשלוחים, צריך function calling.
| צורך | מנגנון מתאים |
|---|---|
| שליפת מידע או ביצוע פעולה במערכת העסק | function calling |
| קבלת תשובה בצורה קבועה, בלי חיבור למערכת | פלט מובנה |
אם אתם רוצים להתנסות בחיבור כזה בלי לכתוב קוד מלא, יש מדריך על חיבור ראשון ל־API של OpenAI בלי קוד.
איך בוחרים שימוש ראשון ובודקים שהוא עובד
בחרו בקשה עם תוצאה שאפשר לאמת מול מערכת המקור. בבדיקת הזמנות, למשל, הכינו גם הזמנה קיימת, מזהה חסר ובקשה לגשת להזמנה של משתמש אחר. בדקו איזו פעולה נבחרה, אילו נתונים נשלחו ומה הוחזר ללקוח.
לפני חיבור לפעולות שמשנות מידע, הגדירו מתי נדרש אישור אנושי. מומלץ לדרוש אישור לפני ביטול הזמנה או שליחת הודעה ללקוח, ולהחזיר תשובת כישלון מפורשת כשהפעולה נכשלת. כך תוכלו לבדוק שהעוזר מתאר את תוצאת הביצוע בפועל.
טקסט שמגיע ממקור חיצוני עלול להכיל הוראות שמנסות להשפיע על בחירת הפעולות. הנחיות הבטיחות של OpenAI ממליצות כמה צעדים:
- לא להכניס קלט לא מהימן להודעות מפתח, שיש להן עדיפות על הודעות משתמש.
- להגדיר פורמטים קבועים בין שלבים, כמו ערכים מוגדרים מראש וסכמות קבועות, כדי לצמצם ערוצים חופשיים שדרכם אפשר להעביר הוראות.
- להשאיר אישורי אדם לפעולות בכלים, כולל קריאה וכתיבה.
- לחלץ מקלט חיצוני רק שדות מוגדרים ומאומתים.
לפי אותן הנחיות, הצעדים האלה מפחיתים את הסיכון ואינם מבטלים אותו. בניסוי שלכם, כללו גם הודעה שמנסה לשכנע את העוזר להתעלם מההרשאות.
אם המשימה העסקית שלכם היא מחקר וכתיבת תוכן לקידום אורגני, בדקו תחילה איזה מידע באמת צריך לשלוף ממערכת חיצונית. AI Click, שירות קידום האתרים האורגני של ברנדיני, הסוכנות שמפעילה את המגזין, כולל מחקר, תוכן ובקרה אנושית. חיבור לפעולות דורש אפיון ומימוש נפרדים בהתאם לצורך.










