כשמשתמשים במודל בינה מלאכותית (AI) גנרטיבי כמו Gemma, כדאי להשתמש בו כדי להפעיל ממשקי תכנות כדי לבצע משימות או לענות על שאלות. קריאה לפונקציה היא פעולה שבה מגדירים ממשק תכנות כדי להנחות מודל, ולאחר מכן שולחים בקשה שמשתמשת בממשק הזה.
Gemma לא מפיקה טוקן ספציפי לכלי. כדי לזהות קריאה לכלי, המסגרת צריכה לבדוק אם המבנה של הפלט תואם למפרט הפלט של הפונקציה שהופיעה בהודעה.
אפשר להשתמש בקריאה לפונקציה במספר אפליקציות:
- יצירת ממשק בשפה טבעית ל-API של תכנות, כדי לאפשר לאנשים שאינם מתכנתים להפעיל ממשק פרוגרמטי בלי קידוד.
- יצירת קריאות תכנות כחלק מתהליך העבודה של סוכן AI
אפשר להשתמש בקריאה לפונקציות ב-Gemma 3, אבל אפשר להשתמש בשיטה של קריאה לפונקציות גם בגרסאות קודמות של Gemma. במדריך הזה מוסבר איך ליצור הנחיות ב-Gemma שמשתמשות בקריאה לפונקציות. אנחנו ממליצים על Gemma3 27B לביצועים הטובים ביותר, ועל Gemma3 12B לביצועים ולזמן אחזור מאוזנים.
קריאה לפונקציות תכנות
כדי להשתמש בקריאה לפונקציה באמצעות Gemma, צריך ליצור הנחיה שמספקת הוראות שמציינות את פורמט הפלט ומגדירות את הפונקציות הזמינות.
כשהנחיית המשתמש כלולה, המודל מניב קריאה לפונקציה, שהיא מחרוזת שתואמת לפורמט הפלט שציינתם. הבקשה הזו מאותתת למסגרת המודל לנתח אותה כדי לקרוא לפונקציות שהוגדרו.
בדוגמה הבאה מוצג בלוק של הגדרת פונקציה, יחד עם תחביר של קריאה לפונקציה ופלט של קריאה לפונקציה מהמודל. ההנחיה לדוגמה הבאה מיועדת לשימוש בממשק תכנות של קטלוג מוצרים:
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
ההנחיה הזו אמורה להניב את התגובה הבאה:
[get_product_name_by_PID(PID="807ZPKBL9V")]
בדוגמה הזו נעשה שימוש בפלט של קריאה לפונקציה בסגנון Python. לחלופין, אפשר לציין פורמט פלט בסגנון JSON, כפי שמוצג בדוגמה הבאה:
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
ההנחיה הזו אמורה להניב את התגובה הבאה:
{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}
הרכיבים של הנחיה לקריאה לפונקציה
כשמשתמשים בקריאה לפונקציה עם מודלים של Gemma, ההנחיה של המודל צריכה לפעול לפי הסדר והמבנה הספציפיים הבאים:
בקטעים הבאים מוסבר בהרחבה על כל אחד מהרכיבים האלה.
הגדרת קריאה לפונקציה
בקטע setup של הנחיה להפעלת הפונקציה מוגדר ההתנהגות הכוללת הצפויה של המודל. בקטע הזה אפשר להוסיף הוראות כלליות נוספות לגבי התנהגות המודל, למשל לציין שצריך להציג את הפלט באמצעות פונקציית print
או console.log
. כדי לציין את התחביר של הקוד, משתמשים בסימן backtick יחיד בסגנון Markdown (func_name
).
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function
ההוראות צריכות להיות ברורות וקצרות ככל האפשר. כדאי לתת עדיפות להוראות החשובות ביותר ולהיזהר במתן הרבה הוראות כלליות. מודלים של Gemma עשויים להתעלם מהוראות מפורטות מדי או לא ברורות, במיוחד כשמשתמשים בגרסאות של מודלים עם מספר פרמטרים נמוך יותר.
הגדרת פונקציה
בקטע definition של ההנחיה מופיעים שם הפונקציה, הפרמטרים והפלט, כולל תיאור של כל אחד מהם. אפשר להצהיר על פונקציות בפורמט שמוצג. אפשר להגדיר פונקציה אחת או יותר בתוך בלוק ההצהרה של הפונקציה.
[ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } }, { "name": "get_product_price_by_PID", "description": "Finds the price of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ]
השלבים הבאים
אלה כמה דרכים לפרוס ולנהל מודלים של Gemma: