באמצעות כלים, אפשר לחבר את תוכניות הפעולה למערכות חיצוניות. המערכות האלה יכולות להרחיב את הידע של תוכניות הפעולה ולאפשר להן לבצע משימות מורכבות ביעילות.
אתם יכולים להשתמש בכלים מובנים או ליצור כלים מותאמים אישית לפי הדרישות שלכם.
בדיקת כלים
אחרי שיוצרים כלי, אפשר להשתמש בתכונת בדיקת הכלים כדי לוודא שהוא פועל. כשצופים בכלי, לוחצים על הלחצן בדיקה שמעל חלונית הכלי. כך פותחים את הכלי להזנת נתונים בסימולטור. מזינים את הקלט לכלי, ואז לוחצים על הצגת הפלט כדי לוודא שהפלט של הכלי נכון.
אפשר גם להשתמש בתכונת הבדיקה של הכלי כשמוסיפים כלי לדוגמה.
כלים מובנים
הכלים המובנים מתארחים ב-Google. אתם יכולים להפעיל את הכלים האלה בסוכנים בלי שתצטרכו להגדיר אותם ידנית.
הכלים המובנים הנתמכים הם:
-
Code Interpreter: כלי של Google מאינטראקציה ישירה שמשלב את היכולת ליצור קוד ולהריץ קוד, ומאפשר למשתמש לבצע משימות שונות, כולל: ניתוח נתונים, הדמיה של נתונים, עיבוד טקסט, פתרון משוואות או בעיות אופטימיזציה.
הסוכן מותאם לקבוע איך ומתי להפעיל את הכלים האלה, אבל אתם יכולים לספק דוגמאות נוספות שמתאימות לתרחישי השימוש שלכם.
דוגמאות צריכות להיות עם סכימה כמו זו:
{
"toolUse": {
"tool": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/tools/df-code-interpreter-tool",
"action": "generate_and_execute",
"inputParameters": [
{
"name": "generate_and_execute input",
"value": "4 + 4"
}
],
"outputParameters": [
{
"name": "generate_and_execute output",
"value": {
"output_files": [
{
"name": "",
"contents": ""
}
],
"execution_result": "8",
"execution_error": "",
"generated_code": "GENERATED_CODE"
}
}
]
}
}
כלים של OpenAPI
סוכן יכול להתחבר ל-API חיצוני באמצעות כלי OpenAPI על ידי ציון סכימת OpenAPI. כברירת מחדל, הסוכן יתקשר ל-API בשמכם.
כדי לבדוק שהכלי מוגדר בצורה נכונה, אפשר להשתמש בתכונה 'כלי הבדיקה' שזמינה בדף הכלי. התכונה הזו זמינה גם בתצוגת הדוגמה כשמוסיפים קריאה לכלי לדוגמה.
אפשר גם להריץ כלי OpenAPI בצד הלקוח.
סכימה לדוגמה:
openapi: 3.0.0
info:
title: Simple Pets API
version: 1.0.0
servers:
- url: 'https://api.pet-service-example.com/v1'
paths:
/pets/{petId}:
get:
summary: Return a pet by ID.
operationId: getPet
parameters:
- in: path
name: petId
required: true
description: Pet id
schema:
type: integer
responses:
200:
description: OK
/pets:
get:
summary: List all pets
operationId: listPets
parameters:
- name: petName
in: query
required: false
description: Pet name
schema:
type: string
- name: label
in: query
description: Pet label
style: form
explode: true
required: false
schema:
type: array
items:
type: string
- name: X-OWNER
in: header
description: Optional pet owner provided in the HTTP header
required: false
schema:
type: string
- name: X-SESSION
in: header
description: Dialogflow session id
required: false
schema:
$ref: "@dialogflow/sessionId"
responses:
'200':
description: An array of pets
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
post:
summary: Create a new pet
operationId: createPet
requestBody:
description: Pet to add to the store
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
responses:
'201':
description: Pet created
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
components:
schemas:
Pet:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
owner:
type: string
label:
type: array
items:
type: string
אפשר גם להשתמש בהפניה לסכימה הפנימית @dialogflow/sessionId
כסוג הסכימה של הפרמטר.
בסוג הזה של סכימת פרמטרים, מזהה הסשן של Dialogflow לשיחה הנוכחית יסופק כערך פרמטר.
לדוגמה:
- name: X-SESSION
in: header
description: Dialogflow session id
required: false
schema:
$ref: "@dialogflow/sessionId"
מגבלות של כלי OpenAPI
ההגבלות הבאות חלות:
- סוגי הפרמטרים הנתמכים הם
path, query, header. עדיין אין תמיכה בסוג הפרמטרcookie. - פרמטרים שמוגדרים על ידי סכימת OpenAPI תומכים בסוגי הנתונים הבאים:
string, number, integer, boolean, array. עדיין אין תמיכה בסוגobject. - בשלב הזה אי אפשר לציין פרמטרים של שאילתות בכלי לעריכת דוגמאות במסוף.
- תוכן הבקשה והתגובה חייב להיות ריק או בפורמט JSON.
יצירת סכימה של כלי OpenAPI
כשמספקים סכימה, אפשר ללחוץ על הלחצן שימוש ב-Gemini כדי להשתמש בבינה מלאכותית גנרטיבית ליצירת הסכימה. כדי להנחות את יצירת התמונה, אפשר לספק את הפרטים הבאים:
- כתובת URL של בקשה
- שיטת HTTP (GET, POST וכו')
- קלט לדוגמה
- פלט לדוגמה
- פרומפט טקסטואלי שמתאר את הכלי
אחרי שהקוד נוצר, אפשר לערוך אותו לפי הצורך ולהוסיף כתובות URL ושיטות נוספות באופן ידני.
אימות של API בכלי OpenAPI
אלה אפשרויות האימות שנתמכות כשמתקשרים עם API חיצוני:
אימות סוכן שירות של Dialogflow
Dialogflow יכול ליצור טוקן של מזהה באמצעות Dialogflow Service Agent. הטוקן מתווסף לכותרת ההרשאה של HTTP כש-Dialogflow קורא ל-API חיצוני.
אפשר להשתמש באסימון מזהה כדי לגשת לפונקציות של Cloud Run ולשירותים של Cloud Run אחרי שמקצים את התפקידים roles/cloudfunctions.invoker ו-roles/run.invoker ל-service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com. אם פונקציות Cloud Run ושירותי Cloud Run נמצאים באותו פרויקט משאבים, לא צריך הרשאת IAM נוספת כדי להפעיל אותם.
אימות באמצעות חשבון שירות
אפשר להשתמש בחשבונות שירות כדי לאמת בקשות של כלי לכל Google API שתומך בכך.
אם עדיין לא עשיתם זאת, צרו חשבון שירות.
מאחר שחשבונות שירות הם חשבונות משתמשים, אפשר לתת להם גישה למשאבים בפרויקט על ידי הקצאת תפקיד, בדיוק כמו שמקצים תפקיד לכל חשבון משתמש אחר.
כתובת האימייל בחשבון השירות תשמש ליצירת טוקן גישה שיישלח בכותרת Authorization של בקשת הכלי.
למשתמש שמגדיר את הכלי לשימוש בחשבונות שירות צריכות להיות ההרשאות הבאות:
roles/iam.serviceAccountUser
כדי ש-Dialogflow CX יוכל ליצור אסימונים, לסוכן השירות של Dialogflow צריכות להיות ההרשאות הבאות:
roles/iam.serviceAccountTokenCreator
בנוסף, לחשבון השירות צריכות להיות הרשאות גישה לשירות שמארח את הכלי.
מפתח API
- אתם יכולים להגדיר אימות של מפתח API על ידי ציון שם המפתח, מיקום הבקשה (כותרת או מחרוזת שאילתה) ומפתח ה-API, כדי ש-Dialogflow יעביר את מפתח ה-API בבקשה.
- מומלץ לספק את מפתח ה-API באמצעות Secret Manager. אחרי 15 באוגוסט 2025, סוכנים מיוצאים לא יכללו יותר מפתחות API עם ערכים גולמיים.
OAuth
יש תמיכה בתהליך של פרטי כניסה של לקוח OAuth לאימות משרת לשרת:
- אפשר להשתמש בתהליך הזה אם מסוף Vertex AI Agent Builder הוא הבעלים של המשאב ולא נדרשת הרשאה ממשתמש קצה.
- צריך להגדיר ב-Dialogflow את מזהה הלקוח, סוד הלקוח ונקודת הקצה של הטוקן מספק ה-OAuth.
- מומלץ לספק את הסוד של הלקוח באמצעות Secret Manager. אחרי 15 באוגוסט 2025, סודות לקוח של ערכים גולמיים לא ייכללו יותר בסוכנים מיוצאים.
- Dialogflow מחליף טוקן גישה של OAuth מספק OAuth ומעביר אותו בכותרת האימות של הבקשה.
לגבי תהליכי OAuth אחרים שדורשים הרשאה ממשתמש הקצה, כמו הרשאה באמצעות קוד ותהליך PKCE:
- תצטרכו להטמיע ממשק משתמש משלכם לכניסה לחשבון ולקבל את אסימון הגישה בצד הלקוח.
לאחר מכן תוכלו:
א. משתמשים באפשרות האימות Bearer Token כדי להעביר את הטוקן אל OpenAPI Tool. Dialogflow יכלול את האסימון הזה בכותרת ההרשאה כשיפעיל את הכלי.
ב. משתמשים בכלי הפונקציה כדי להפעיל את הכלי בעצמכם בצד הלקוח ולהעביר את התוצאה של קריאת הכלי אל Dialogflow.
פרטי אסימון
- אפשר להגדיר אימות באמצעות טוקן למוכ"ז כדי להעביר באופן דינמי את הטוקן למוכ"ז מהלקוח. הטוקן הזה נכלל בכותרת האימות של הבקשה.
- כשמגדירים אימות של כלי, אפשר להגדיר פרמטר של סשן שישמש כטוקן Bearer. לדוגמה, משתמשים בפקודה
$session.params.<parameter-name-for-token>כדי לציין את הטוקן. בזמן הריצה, מקצים את טוקן ה-Bearer לפרמטר הסשן:
DetectIntentRequest { ... query_params { parameters { <parameter-name-for-token>: <the-auth-token> } } ... }אם אתם צריכים להגדיר אסימון סטטי במקום לאחזר את האסימון מפרמטר של סשן, מומלץ לספק את האסימון באמצעות Secret Manager. אחרי 15 באוגוסט 2025, סוכנים מיוצאים לא יכללו יותר טוקנים של Bearer עם ערכים גולמיים.
אימות TLS בו-זמני (mTLS)
- מידע נוסף זמין במאמר בנושא אימות TLS בו-זמני (mTLS).
- יש תמיכה באישורי לקוח בהתאמה אישית. אתם יכולים להגדיר אישורים של לקוחות ברמת הסוכן בכרטיסייה 'אבטחה' בהגדרות הסוכן. האישור (בפורמט PEM) והמפתח הפרטי (בפורמט PEM) הם שדות חובה. אחרי שמגדירים את אישור הלקוח הזה, הוא ישמש במהלך TLS הדדי לכל הכלים ולכל ה-webhook.
אישור CA בהתאמה אישית
אימות ב-Secret Manager
אם אתם משתמשים ב-OAuth, במפתח API או באסימון Bearer, אתם יכולים לאחסן את פרטי הכניסה כסודות באמצעות Secret Manager. כדי לאמת את הכלי באמצעות סודות, צריך לבצע את השלבים הבאים:
- אם עדיין אין לכם סוד, צריך ליצור אותו.
- מעניקים ל-Dialogflow Service Agent (סוכן שירות של Dialogflow) את התפקיד Secret Manager Secret Accessor (גישה לסודות ב-Secret Manager) (
roles/secretmanager.secretAccessor) בסוד החדש. - מעתיקים את פרטי הכניסה ללוח.
- מוסיפים גרסה חדשה של הסוד לסוד. מדביקים את פרטי הכניסה בתור ערך הסוד.
- אין להוסיף תו מעבר לשורה בסוף.
- מעתיקים את השם של גרסת הסוד שהוספתם. פורמט השם הוא
projects/{project_id}/secrets/{secret_id}/versions/{version_id}". - פותחים את מסך העריכה של הכלי ואז:
- אם משתמשים ב-OAuth, בוחרים באפשרות OAuth בתור סוג האימות, ואז לוחצים על Secret version (גרסת הסוד) בקטע Client secret (סוד הלקוח) ומדביקים את השם של גרסת הסוד בתיבת הקלט Secret version (גרסת הסוד).
- אם משתמשים במפתח API, בוחרים באפשרות מפתח API בתור סוג האימות, ואז לוחצים על גרסת סוד בקטע מפתח API. מדביקים את שם הגרסה של הסוד בתיבת הקלט Secret version (גרסת הסוד).
- אם משתמשים ב-Bearer token, בוחרים באפשרות Bearer token בתור סוג האימות, ואז לוחצים על Secret version (גרסת הסוד) בקטע Bearer token (Bearer token). מדביקים את שם הגרסה של ה-Secret בתיבת הקלט Secret version.
- לוחצים על Save.
גישה לרשת פרטית בכלי OpenAPI
כלי OpenAPI משולב עם גישה לרשת פרטית של Service Directory, כך שהוא יכול להתחבר ליעדי API בתוך רשת ה-VPC שלכם. כך התעבורה נשארת בתוך רשת Google Cloud, ומערכות IAM ו-VPC Service Controls פועלות.
כדי להגדיר כלי OpenAPI שמיועד לרשת פרטית:
פועלים לפי ההוראות בנושא הגדרת רשת פרטית ב-Service Directory כדי להגדיר את רשת ה-VPC ואת נקודת הקצה של Service Directory.
חשבון השירות של סוכן השירות של Dialogflow עם הכתובת הבאה צריך להיות קיים בפרויקט של הסוכן:
מקצים לחשבון השירות Dialogflow Service Agent את התפקידים הבאים ב-IAM:service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
servicedirectory.viewerשל פרויקט Service Directory-
servicedirectory.pscAuthorizedServiceשל פרויקט הרשת
כשיוצרים את הכלי, צריך לספק את שירות Service Directory, סכימת OpenAPI ופרטי אימות אופציונליים.
גישה לפרמטרים של סשן בכלי OpenAPI
הקלט של כלי Open API נגזר מהשיחה של המשתמש עם מודל ה-LLM, באמצעות הסכימה כמדריך. במקרים מסוימים, יכול להיות שיהיה צורך לגזור את הקלט מפרמטרים של סשן שנאספו במהלך תהליך או שסופקו כפרמטר של שאילתה, יחד עם קלט של משתמשים.
אפשר לציין את פרמטר הסשן שצריך להעביר כקלט באופן הבא:
parameters:
- in: query
name: petId
required: true
description: Pet id
schema:
type: integer
x-agent-input-parameter: petId # Reads from the $session.params.petId
- in: header
name: X-other
schema:
type: string
x-agent-input-parameter: $request.payload.header # Reads from the header specified in the request payload input
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
x-agent-input-parameter: petName # Reads from the $session.params.petName
description: Name of the person to greet (optional).
breed:
type: string
description: Bread of the pet.
אם אין פרמטר כזה של סשן, הקלט שנוצר על ידי מודל שפה גדול יועבר לכלי.
ערכי ברירת מחדל של כלי OpenAPI
אפשר להשתמש בסכימת Open API כדי לציין ערכי ברירת מחדל. ערכי ברירת המחדל ישמשו רק אם אין ערך קלט שנוצר על ידי LLM או ערך קלט שמבוסס על פרמטר של סשן עבור הפרמטר או המאפיין הזה.
אפשר לציין את ערכי ברירת המחדל כחלק מהסכימה באופן הבא:
parameters:
- in: query
name: zipcode
required: true
description: Zip code to search for
schema:
type: integer
default: 94043
requestBody:
content:
application/json:
schema:
type: object
properties:
breed:
type: string
description: Bread of the pet.
page_size:
type: integer
description: Number of pets to return.
default: 10
אם לא קיים ערך שנוצר על ידי LLM, ערך פרמטר של סשן או ערך ברירת מחדל, הקלט לא יצוין.
כלים למאגרי נתונים
מידע על שימוש בכלי מאגר נתונים עם מדריך הפעלה זמין במסמכי העזרה בנושא כלי מאגר נתונים.
כלים למחברים
סוכן יכול להשתמש בכלי מחבר כדי לבצע פעולות באמצעות החיבורים שהגדרתם במחברי שילוב. כל כלי מחבר מוגדר עם חיבור יחיד ועם פעולה אחת או יותר. אם צריך, אפשר ליצור כמה כלים לחיבור אחד כדי לקבץ פעולות שונות שהסוכן יכול להשתמש בהן.
כלי החיבור תומך בסוגי החיבורים הבאים:
- AlloyDB
- Asana
- Azure AD (Entra ID)
- BigQuery
- Box
- Cloud Search
- Cloud Spanner
- Cloud SQL – MySQL
- Cloud SQL – PostgreSQL
- Cloud SQL – SQL Server
- Cloud Storage
- Cloud Translation
- Confluence
- Couchbase
- DocuSign
- Dropbox
- Dynamics 365
- Elasticsearch
- אימייל
- Enterprise License Manager
- Firestore
- FreshBooks
- FTP
- GitHub
- Gmail
- Google Analytics
- יומן Google
- Google Classroom
- Google Cloud Natural Language
- אנשי קשר מחשבון Google
- Google Docs
- Google Forms
- Google Sheets
- Google Slides
- Greenplum
- Jira Cloud
- Jira Service Management
- Kintone
- Magento
- Mailchimp
- MariaDB
- Meta Ads
- Microsoft Teams
- יום שני
- MongoDB (גרסה 2)
- Neo4j
- OneDrive
- Oracle DB (גרסה 2
- PayPal
- PostgreSQL
- Salesforce
- Salesforce Marketing Cloud
- SAP HANA
- SAP SuccessFactors
- ServiceNow
- SharePoint
- Shopify (גרסה 1
- Slack
- Stripe
- Trello
- WordPress
- Workday
- Zendesk
אפשר להשתמש בדוגמאות כדי לשפר את השימוש של הסוכן בכלי המחבר. הדוגמאות צריכות להראות איך הסוכן צריך להפעיל את הכלי ולהשתמש בתגובה.
יצירת חיבור
כדי ליצור חיבור ולחבר אותו לסוכן, אפשר לעבור אל כלים > יצירה, לבחור את סוג הכלי מחבר, את סוג המחבר הרצוי ולהשתמש בלחצן יצירת חיבור. פעולה זו תנווט אותך ליצירת Integration Connectors עם מספר שדות שמולאו מראש.
לחלופין, אפשר לעבור אל Integration Connectors (מחברים לשילובים) ולפעול לפי ההוראות ליצירת חיבור.
פעולות של מחברים
לכל כלי מחבר יש שני סוגים של פעולות שאפשר להגדיר כזמינות לסוכן (מידע נוסף זמין במאמר ישויות, פעולות ופעולות):
פעולות CRUD של ישויות
לכל אחד מהחיבורים יש 'ישויות' שמתאימות לאובייקטים של מקור הנתונים (ב-BigQuery אלה טבלאות, ב-Salesforce אלה אובייקטים כמו Order או Case).
אפשר לבצע פעולות CRUD בכל ישות:- Create: יוצרת ישות עם ערכי שדות שצוינו
- רשימה: חיפוש מבוסס-מסננים של מופעי ישויות
- עדכון: שיטה לשינוי ערכים של שדות ישות שמבוססת על סינון
- מחיקה: מחיקת ישות
- Get מאחזר ישות יחידה באמצעות entityId
מידע נוסף על פעולות CRUD של ישויות זמין במסמכי התיעוד של Connectors.
- Create: יוצרת ישות עם ערכי שדות שצוינו
פעולות ספציפיות למחבר
מחברים רבים תומכים בפעולה ExecuteCustomQuery, שמאפשרת להריץ שאילתת SQL על מקור הנתונים, כאשר כל אחד מהישויות של מקור הנתונים יכול לשמש כטבלה. כאן אפשר לעיין ברשימת המחברים הנתמכים.
פעולות נוספות משתנות בהתאם לסוג המחבר – לדוגמה, אפשר לעיין בפעולות של מחבר BigQuery או בפעולות של מחבר Salesforce.
הגדרת שדות קלט / פלט לפעולות CRUD
אם בוחרים שדות קלט או פלט ספציפיים לשימוש בפעולה של כלי המחבר, אפשר להגביל את המורכבות של הפעולות האלה עבור הסוכן.
לדוגמה, אם אתם צריכים ליצור ישות עם קבוצת משנה של השדות שלה, הגדרת קבוצת השדות הזו בפעולה מפשטת את הפעולה עבור הסוכן.
ציון של קבוצת שדות פלט מקטין את גודל התגובה של הכלי (שימושי אם יש חשש לגבי מגבלות טוקנים) ומפשט את הטיפול של הסוכן בפלט, כי מוצגים רק השדות הרלוונטיים.
אימות
אם החיבור שבו אתם משתמשים מוגדר לאפשר עקיפה של אימות, אפשר להגדיר את הכלי כך שיעביר את פרטי הכניסה מפרמטרים ספציפיים של הסשן.
אתם, יוצרי הסוכן, אחראים לאופן שבו פרטי הכניסה האלה מאוכלסים בפרמטרים של הסשן, והכלי יעביר אותם באופן אוטומטי למקור הנתונים כדי להשתמש בהם לאימות כשמפעילים את הפעולות של הכלי.
כלים לפונקציות
אם יש לכם פונקציונליות שאפשר לגשת אליה באמצעות קוד הלקוח, אבל אי אפשר לגשת אליה באמצעות כלי OpenAPI, אתם יכולים להשתמש בכלי פונקציות. הפעלת כלי הפונקציות תמיד מתבצעת בצד הלקוח, ולא על ידי הסוכן.
התהליך הוא כזה:
- קוד הלקוח שולח בקשה לזיהוי כוונות.
- הסוכן מזהה שנדרש כלי פונקציה, והתשובה של זיהוי הכוונה מכילה את שם הכלי יחד עם ארגומנטים של קלט. הסשן הזה מושהה עד שתתקבל בקשה נוספת לזיהוי כוונות עם תוצאת הכלי.
- קוד הלקוח שלכם קורא לכלי.
- קוד הלקוח שולח בקשה נוספת לזיהוי כוונות, שמספקת את תוצאת הכלי כארגומנטים של פלט.
בדוגמה הבאה מוצגת סכימת הקלט והפלט של כלי פונקציה:
{
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, for example, San Francisco, CA"
}
},
"required": [
"location"
]
}
{
"type": "object",
"properties": {
"temperature": {
"type": "number",
"description": "The temperature"
}
}
}
בדוגמה הבאה מוצגת בקשת זיהוי הכוונה הראשונית והתגובה באמצעות REST:
HTTP method and URL:
POST https://REGION_ID-dialogflow.googleapis.com/v3/projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/sessions/SESSION_ID:detectIntent
{
"queryInput": {
"text": {
"text": "what is the weather in Mountain View"
},
"languageCode": "en"
}
}
{
"queryResult": {
"text": "what is the weather in Mountain View",
"languageCode": "en",
"responseMessages": [
{
"source": "VIRTUAL_AGENT",
"toolCall": {
"tool": "<tool-resource-name>",
"action": "get-weather-tool",
"inputParameters": {
"location": "Mountain View"
}
}
}
]
}
}
בדוגמה הבאה מוצגת הבקשה השנייה לזיהוי כוונת המשתמש, שכוללת את תוצאת הכלי:
{
"queryInput": {
"toolCallResult": {
"tool": "<tool-resource-name>",
"action": "get-weather-tool",
"outputParameters": {
"temperature": 28.0
}
},
"languageCode": "en"
}
}
ביצוע בצד הלקוח
בדומה לכלי פונקציות, אפשר להפעיל כלי OpenAPI וכלי מאגר נתונים בצד הלקוח על ידי החלת החלפה של API במהלך האינטראקציה עם הסשן.
לדוגמה:
DetectIntentRequest {
...
query_params {
playbook_state_override {
playbook_execution_mode: ALWAYS_CLIENT_EXECUTION
}
}
...
}
התהליך הוא כזה:
- קוד הלקוח שולח בקשה לזיהוי כוונות שמציינת ביצוע בצד הלקוח.
- הנציג מזהה שנדרש כלי, והתשובה של זיהוי ה-Intent מכילה את שם הכלי יחד עם ארגומנטים של קלט. הסשן הזה מושהה עד שתתקבל בקשה נוספת לזיהוי כוונות עם תוצאת הכלי.
- קוד הלקוח שלכם קורא לכלי.
- קוד הלקוח שולח בקשה נוספת לזיהוי כוונות, שמספקת את תוצאת הכלי כארגומנטים של פלט.