השתמש בכלי הפונקציות
כלי הפונקציות מאפשר למודל שלך לקרוא לפונקציות שהוגדרו על ידי מפתחים כדי לשלוף נתונים או להפעיל פעולות במהלך תגובה.
מהו כלי הפונקציה?
כלי הפונקציה (פונקציה קריאה) מאפשר למודל להחליט מתי לקרוא לכלים עם שם שאתה מציג באפליקציה שלך. המודל לא מנהל את הלוגיקה העסקית שלך ישירות. במקום זאת, הוא מחזיר קריאה לפונקציה מובנית, הקוד שלך מריץ את הפונקציה, ואז אתה מעביר את פלט הפונקציה חזרה למודל.
תבנית זו אידיאלית לחיבור חשיבת מודלים למערכות מהעולם האמיתי כמו APIs, מסדי נתונים, זרימות עבודה עסקיות ופונקציות שירות.
התכונות העיקריות כוללות:
- קריאות לכלים מובנים - המודל משדר בקשות מפורשות לקריאות פונקציה
- ביצוע מבוקר על ידי מפתחים - היישום שלך מחליט איך והיכן פועלות פונקציות
- דפוס אינטגרציה אמין - התקשר ל-APIs, שירותים פנימיים או כלי עזר בבטחה
- תזמור מרובה סיבובים - החזרת פלט הכלי ומתן למודל להמשיך בהיגיון
- תגובות מקורקעות - התשובות יכולות לכלול נתונים חיים שנוצרו על ידי המערכת
מקרי שימוש נפוצים
| מקרה שימוש | דוגמה |
|---|---|
| אינטגרציה של מערכת | קרא ל-API פנימי לקבלת פרטי חשבון או הזמנה |
| אוטומציה של משימות | להפעיל זרימות עבודה כמו יצירת כרטיסים או התראות |
| חיפוש נתונים | שאילתא על כללי עסק או טבלאות הפניות לפני שאתה עונה |
דוגמה פשוטה
הנה דוגמה שמציגה get_time פונקציה ומאפשרת למודל לקרוא לה כשצריך:
import time
from openai import OpenAI
# Function to get the current time
def get_time():
return f"The time is {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}"
# Main function
def main():
client = OpenAI(
base_url={openai_endpoint},
api_key={auth_key_or_token}
)
function_tools = [
{
"type": "function",
"name": "get_time",
"description": "Get the current time"
}
]
# Initialize messages with a system prompt
messages = [
{"role": "developer", "content": "You are an AI assistant that provides information."},
]
# Loop until the user types 'quit'
while True:
prompt = input("\nEnter a prompt (or type 'quit' to exit)\n")
if prompt.lower() == "quit":
break
# Append the user prompt to the messages
messages.append({"role": "user", "content": prompt})
# Get initial response
response = client.responses.create(
model=model_deployment,
input=messages,
tools=function_tools
)
# Append model output to the messages
messages += response.output
# Was there a function call?
for item in response.output:
if item.type == "function_call" and item.name == "get_time":
current_time = get_time()
messages.append({
"type": "function_call_output",
"call_id": item.call_id,
"output": current_time
})
# Get a follow up response using the tool output
response = client.responses.create(
model=model_deployment,
instructions="Answer only with the tool output.",
input=messages,
tools=function_tools
)
print(response.output_text)
# Run the main function when the script starts
if __name__ == '__main__':
main()
בזרימה זו, המודל מחליט מתי לקרוא get_timeל-, הקוד שלך מריץ את הפונקציה, ואז המודל מחזיר תשובה סופית עם רקע. מכיוון שהמשתמש יכול להזין כל פקודה, המודל חייב לקבוע מתי עליו לקרוא לפונקציה. אם כן, התגובה לפרומפטציה תכלול קריאת פונקציה, שקוד היישום חייב ליישם לפני הגשת הנחיה חדשה עם הפלט מהפונקציה עבור המודל לעבד.
הפלט יכול להיראות בערך כך:
Enter a prompt (or type 'quit' to exit)
Hello
Hello! How can I help you today?
Enter a prompt (or type 'quit' to exit)
What time is it?
The time is 2026-03-19 17:17:41.
Enter a prompt (or type 'quit' to exit)
ההודעה הראשונה למשתמש ("Hello") לא דרשה שימוש בכלי הפונקציה, ולכן המודל הגיב כרגיל. ההנחיה השנייה ("מה השעה?") גרמה למודל לבחור את הפונקציה get_time , אותה הוא ציין בתגובה. קוד היישום הריץ את הפונקציה והחזיר את התוצאות למודל, ששלח תגובה שנייה עם התוצאות מהפונקציה.
עצה
דוגמה זו משתמשת בפונקציה אחת ללא פרמטרים. אתה יכול להגדיר את הכלי להשתמש בפונקציות מרובות, עם או בלי פרמטרים. למידע נוסף על ציון פרטי פונקציות, ראו את מדריך המפתחים של OpenAI.
איך כלי הפונקציה עובד
התהליך הכללי לשימוש בכלי הפונקציה הוא:
- אתה מגדיר כלים - מספק הגדרה אחת או יותר של פונקציות במערך הכלים.
- המודל מעריך את ההנחיה - הוא קובע אם יש צורך בקריאת פונקציה.
- המודל משדר קריאת פונקציה - התגובה כוללת את שם הפונקציה ואת מטא-נתוני הקריאה.
- האפליקציה שלך מריצה לוגיקה - הרץ את פונקציית ההתאמה בקוד שלך.
-
אתה מחזיר את פלט הפונקציה - שולח
function_call_outputפריט עם התוצאה. - המודל משלים את התשובה - הוא משלב את תוצאות הכלים בתשובה הסופית.
שיטות עבודה מומלצות
- שמור על הכלים ממוקדים - פונקציות קטנות וחד-תכליתיות קלות יותר לשליטה ובדיקה
- אימות קלטי פונקציה - לעולם אל תסמוך על טיעוני הכלים בעיוורון במערכות ייצור
- לטפל בשגיאות בבטחה - החזר פלטי שגיאה נקייה שהמודל יכול להסיק לגביהם
- שימוש בכלי רישום - מעקב אחר שיחות, השהיה ושיעורי כישלון לניפוי שגיאות וממשל
- הגבלת פעולות רגישות - דרישה לאישור מפורש לפעולות בעלות השפעה גבוהה
מגבלות שיש לדעת עליהן
- המודל מבקש קריאות לפונקציות, אבל האפליקציה שלך חייבת להריץ אותן
- טיעוני כלי שגוי או בלתי צפוי עלולים להתרחש ויש לאמת אותם
- השהיית כלי יכולה להגדיל את זמן התגובה מקצה לקצה
- קריאת פונקציה משפרת את האמינות, אך הפלטים הסופיים עדיין דורשים סקירה להחלטות קריטיות
כלי הפונקציות משמש היטב, והופך מודל ממחולל טקסט למארגן שיכול לתקשר עם מערכות אמיתיות בצורה מבוקרת וניתנת לביקורת.