כלים לפונקציות של לקוחות

אם יש לכם פונקציונליות שאפשר לגשת אליה באמצעות קוד הלקוח, אבל אי אפשר לגשת אליה באמצעות כלים מתארחים כמו OpenAPI או MCP, אתם יכולים להשתמש בכלים של פונקציות לקוח. הפעלת כלי פונקציות לקוח מתבצעת תמיד בצד הלקוח, ולא על ידי הסוכן.

איך זה עובד

כשסוכן מפעיל כלי פונקציה של לקוח:

  1. חסימת סשן: סשן השיחה נחסם למעשה בצד השרת.
  2. הרצה בצד הלקוח: אפליקציית הלקוח צריכה לזהות את הקריאה לכלי ולהריץ את הלוגיקה המתאימה בסביבה המקומית.
  3. מתן תשובה: אחרי שהביצוע מסתיים, אפליקציית הלקוח צריכה להחזיר את התשובה לסוכן באמצעות השדות toolResponses.

הנציג מחכה לתשובה הזו לפני שהוא ממשיך בשיחה.

הגדרות אישיות

כשיוצרים כלי פונקציות לקוח, מגדירים איך הסוכן מבין את הקוד בצד הלקוח ואיך הוא מקיים איתו אינטראקציה:

  • Name: מזהה ייחודי של הכלי (לדוגמה: open_settings).
  • תיאור: תיאור קצר של מטרת הכלי. מודלים של סוכנים משתמשים בתיאור הזה כדי להחליט מתי להפעיל את הפונקציה.
  • סכימת קלט/פלט: מוגדרת בפורמט OpenAPI. ההגדרה הזו קובעת את מבנה הנתונים שהסוכן שולח ומצפה לקבל.

תרחישים לדוגמה

כלי פונקציות לקוח מתאימים במיוחד ל:

  • פעולות בממשק המשתמש: הפעלת שינויים בממשק של האפליקציה (לדוגמה, 'ניווט למסך התמיכה').
  • נתונים מקומיים במכשיר: גישה למידע שזמין רק בהקשר של האפליקציה (לדוגמה, 'קבלת רמת הסוללה הנוכחית').
  • ממשקי API פרטיים: שילוב עם שירותים שאפשר להגיע אליהם רק מהסביבה בצד הלקוח.

דוגמה

בדוגמה הבאה מוצגת תגובה של סשן שמציינת שאפליקציית הלקוח צריכה להפעיל פונקציה:

"outputs": [
  {
    "toolCalls": {
      "toolCalls": [
        {
          "id": "<execution id>",
          "tool": "<client function tool's resource name>",
          "args": {
            "zip_code": "92031"
          },
          "displayName": "get_nearest_store"
        }
      ]
    },
    "turnCompleted": true,
  }
]

בדוגמה הבאה מוצג סשן נוסף שבו הפלט של הכלי מצורף לבקשה. אפליקציית הלקוח צריכה לאכלס את השדות האלה, ולהזין את אותם ערכים של id, tool ו-display_name כמו בהודעה הקודמת.

"inputs": [
  {
    "toolResponses": {
      "toolResponses": [
        {
          "displayName": "get_nearest_store",
          "id": "<execution id>",
          "tool": "<client function tool's resource name>",
          "response": {
            "name": "Alibaba",
            "address": "43 Alpha Road, Mountain View, CA 92039, USA"
          },
        }
      ]
    }
  }
]