Agent2Agent (A2A) Protocol הוא פרוטוקול תקשורת פתוח ושפה אוניברסלית לסוכנים. הפרוטוקול מאפשר לסוכנים של יוצרים ופלטפורמות שונים לגלות אחד את השני, לשתף פעולה ולהקצות משימות בצורה מאובטחת. במאמר הזה מוסבר איך אדמינים של Gemini Enterprise יכולים לקשר ל-Gemini Enterprise סוכנים שנבנו באמצעות A2A ומתארחים בכל פלטפורמה, כדי שהמשתמשים יוכלו להשתמש בהם באפליקציית האינטרנט של Gemini Enterprise.
לפני שמתחילים
חשוב לוודא שיש לכם את הפריטים הבאים:
תפקיד אדמין של Gemini Enterprise.
מפעילים את Discovery Engine API. כדי להפעיל את Discovery Engine API בפרויקט Google Cloud, במסוף Google Cloud , עוברים לדף Discovery Engine API.
אפליקציית Gemini Enterprise קיימת. כדי ליצור אפליקציה, אפשר לעיין במאמר בנושא יצירת אפליקציה.
סוכן שמשתמש בפרוטוקול A2A.
Gemini Enterprise תומך במנגנון הסטרימינג A2A v0.3.
אם אתם משתמשים ב-A2A בגרסה 1.0.0 ואילך, אתם יכולים להשתמש בחבילות התאימות שמסופקות על ידי ה-SDK כדי לוודא שהסוכן שלכם פועל עם המנגנון הקודם (לדוגמה, חבילת
a2acompat/a2av0ל-Go או חבילתa2a.compat.v0_3ל-Python).
הגדרת פרטי הרשאה (אופציונלי)
בסוכני A2A, אפשר להשתמש בפרטי הכניסה של OAuth 2.0 כדי לשלוט בגישה של משתמשי קצה לסוכני A2A. עם זאת, אם הסוכן פועל ב-Cloud Run ומשתמש בניהול זהויות והרשאות גישה (IAM) כדי לשלוט בגישה, אין צורך בפרטי הכניסה של OAuth 2.0.
במסוף Google Cloud , בדף APIs & Services, עוברים לדף Credentials.
-
בוחרים את Google Cloud הפרויקט שמכיל את מקור הנתונים שרוצים שהסוכן יקבל אליו גישה. לדוגמה, בוחרים את הפרויקט שמכיל את מערך הנתונים ב-BigQuery שרוצים שהסוכן ישלח אליו שאילתות.
לוחצים על Create credentials ובוחרים באפשרות OAuth client ID.
ב-Application type בוחרים באפשרות אפליקציית אינטרנט.
בקטע Authorized redirect URIs, מוסיפים את מזהי ה-URI הבאים:
https://vertexaisearch.cloud.google.com/oauth-redirecthttps://vertexaisearch.cloud.google.com/static/oauth/oauth.html
לוחצים על יצירה.
בחלונית OAuth client created (נוצר לקוח OAuth), לוחצים על Download JSON (הורדת JSON). קובץ ה-JSON שהורד כולל את
Client ID,Authorization URI,Token URIו-Client secretעבורGoogle Cloud הפרויקט שנבחר. תצטרכו את הפרטים האלה כדי ליצור משאב הרשאה.
רישום סוכן A2A ב-Gemini Enterprise
אפשר לרשום את סוכן A2A ב-Gemini Enterprise באמצעותGoogle Cloud המסוף או באמצעות API בארכיטקטורת REST. כך הסוכן יהיה זמין למשתמשים באפליקציית Gemini Enterprise.
המסוף
כדי לרשום סוכן A2A באמצעות מסוף Google Cloud , פועלים לפי השלבים הבאים:
נכנסים לדף Gemini Enterprise במסוף Google Cloud .
לוחצים על שם האפליקציה שרוצים לרשום בה את הסוכן.
לוחצים על Agents (סוכנים) > Add Agents (הוספת סוכנים).
בקטע Choose an agent type (בחירת סוג סוכן), לוחצים על Add (הוספה) לצד Custom agent via A2A (סוכן בהתאמה אישית דרך A2A).
בשדה Agent card JSON (קובץ JSON של כרטיס הנציג), מזינים את פרטי כרטיס הנציג בפורמט JSON. רשימה מלאה של השדות הזמינים מופיעה במפרט הרשמי של פרוטוקול Agent2Agent (A2A). בדוגמה הבאה נעשה שימוש רק בשדות הנדרשים.
לדוגמה:
{ "protocolVersion": "0.3", "name": "Hello World Agent", "description": "Just a hello world agent", "url": "https://example.com/myagent", "iconUrl": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTkiIGhlaWdodD0iOTkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0zMyAwaDMzdjMzSDMzeiBNMCAzM2gzM3YzM0gweiBNNjYgMzNoMzN2MzNINjZ6IE0zMyA2NmgzM3YzM0gzM3oiIGZpbGw9ImJsdWUiLz48L3N2Zz4=", "version": "1.0.0", "capabilities": { }, "skills": [ { "id": "data-analysis", "name": "Data Analysis", "description": "Data analysis", "tags": [] } ], "defaultInputModes": [ "text/plain" ], "defaultOutputModes": [ "text/plain" ] }לוחצים על תצוגה מקדימה של פרטי הסוכן > הבא.
משלימים את ההגדרה באמצעות אחת מהשיטות הבאות:
אם רוצים שהסוכן יקבל גישה למשאבים בשמכם, פועלים לפי השלבים הבאים: Google Cloud
מזינים את מזהה הלקוח, הסוד של הלקוח, ה-URI של ההרשאה וה-URI של הטוקן שנוצרו בקטע קבלת פרטי הרשאה.
מזינים את היקפים.
לוחצים על סיום.
אם לא רוצים שהסוכן יקבל גישה למשאבים בשמכם, לוחצים על דילוג וסיום. Google Cloud
REST
כדי לרשום סוכן A2A באמצעות ה-API בארכיטקטורת REST, פועלים לפי השלבים הבאים:
הוספת משאב ההרשאה ל-Gemini Enterprise (אופציונלי)
אם הסוכן צריך לגשת למשאבי Google Cloud משתמש בשמו, מריצים את הפקודה הבאה כדי לרשום את משאב ההרשאה שיצרתם בקטע הגדרת פרטי הרשאה (אופציונלי) באמצעות Gemini Enterprise:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/authorizations?authorizationId=AUTH_ID" \
-d '{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/authorizations/AUTH_ID",
"serverSideOauth2": {
"clientId": "OAUTH_CLIENT_ID",
"clientSecret": "OAUTH_CLIENT_SECRET",
"authorizationUri": "OAUTH_AUTH_URI",
"tokenUri": "OAUTH_TOKEN_URI"
}
}'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud . -
ENDPOINT_LOCATION: האזור הרב-אזורי של בקשת ה-API. מציינים אחד מהערכים הבאים:-
usלאזור מרובה בארה"ב -
euלאזור עם מספר אזורים באיחוד האירופי globalלמיקום הגלובלי
-
-
LOCATION: האזור המרובה של מאגר הנתונים:global,usאוeu -
AUTH_ID: המזהה של משאב ההרשאה. זהו מזהה אלפאנומרי שרירותי שאתם מגדירים. תצטרכו להשתמש במזהה הזה בהמשך כשתרשמו סוכן שנדרש בו תמיכה ב-OAuth. -
OAUTH_CLIENT_ID: מזהה לקוח OAuth 2.0 שקיבלתם כשנוצרו פרטי הכניסה של OAuth. -
OAUTH_CLIENT_SECRET: הסוד של לקוח OAuth 2.0 שקיבלתם כשיצרתם את פרטי הכניסה של OAuth.
OAUTH_AUTH_URI: ה-URI של ההרשאה. כדי לאשר את האפליקציה, צריך ליצור URI ספציפי של הרשאה באמצעות הפרטים מקובץ ה-JSON של פרטי הכניסה ל-OAuth. מעתיקים את התבנית הבאה ומחליפים את הערכים הזמניים לשמירת מקום בערכים הספציפיים שלכם.https://accounts.google.com/o/oauth2/v2/auth?client_id=OAUTH_CLIENT_ID&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=YOUR_CUSTOM_SCOPES&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
YOUR_CUSTOM_SCOPES: אפשר להוסיף את ההיקפים שאתם צריכים. לדוגמה, מחרוזת היקף ההרשאות הבאה של OAuth מבקשת גישה לקריאה בלבד ל-Google Drive ול-Google Docs.scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocuments.readonly
OAUTH_TOKEN_URI: ה-URI של הטוקן שקיבלתם כשנוצרו פרטי הכניסה של OAuth.
מידע נוסף על פרמטרים של URI להרשאה
כדי לוודא שה-URI פועל כמו שצריך, בודקים את השדות הבאים:
| פרמטר | ערך או פעולה |
|---|---|
client_id |
מחליפים את הערך ב-client_id שנמצא בקובץ ה-JSON שהורדתם. |
redirect_uri |
לא, התחרטתי. הערך חייב להיות https://vertexaisearch.cloud.google.com/static/oauth/oauth.html. |
scope |
מפרטים את היקפי ההרשאות של Google API שהאפליקציה צריכה לגשת אליהם מטעם המשתמש. לדוגמה, כדי להעניק גישה ל-BigQuery, משתמשים בהיקף אם משתמשים בכמה היקפים, צריך להפריד ביניהם ברווח, שהופך ל- |
include_granted_scopes |
חייב להיות true. |
response_type |
צריך להיות בן code ומעלה כדי לקבל קוד הרשאה. |
access_type |
הגדרת הערך ל-offline תעזור לכם לוודא שתקבלו טוקן רענון. |
prompt |
הגדרה לערך consent תעזור להבטיח שהמשתמש תמיד יראה מסך בקשת הסכמה. |
רישום סוכן A2A
כדי ליצור ולרשום סוכן באמצעות Gemini Enterprise, משתמשים בשיטה agents.create. הפקודה הבאה משתמשת רק בשדות הנדרשים. רשימה מלאה של השדות הזמינים מופיעה במפרט הרשמי של פרוטוקול Agent2Agent (A2A).
מריצים את הפקודה הזו כדי לרשום את סוכן A2A ב-Gemini Enterprise:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents \
-d '
{
"name": "AGENT_NAME",
"displayName": "AGENT_DISPLAY_NAME",
"description": "AGENT_DESCRIPTION",
"a2aAgentDefinition": {
"jsonAgentCard": "{\"protocolVersion\":\"PROTOCOLVERSION\",\"name\":\"AGENT_NAME\",\"description\":\"AGENT_DESCRIPTION\",\"url\":\"AGENT_URL\",\"version\":\"AGENT_VERSION\",\"defaultInputModes\":[\"INPUT_MODE\"],\"defaultOutputModes\":[\"OUTPUT_MODE\"],\"capabilities\":{ CAPABILITIES },\"skills\":[SKILLS]}"
},
"authorizationConfig": {
"agentAuthorization": "projects/PROJECT_ID/locations/LOCATION/authorizations/AUTH_ID"
}
}
'
מחליפים את מה שכתוב בשדות הבאים:
-
ENDPOINT_LOCATION: האזור הרב-אזורי של בקשת ה-API. מציינים אחד מהערכים הבאים:-
usלאזור מרובה בארה"ב -
euלאזור עם מספר אזורים באיחוד האירופי globalלמיקום הגלובלי
-
-
LOCATION: האזור המרובה של מאגר הנתונים: global,usאוeu -
PROJECT_ID: מזהה הפרויקט. -
APP_ID: המזהה של האפליקציה שאליה רוצים לרשום את הסוכן. -
AGENT_NAME: המזהה הייחודי של הסוכן. -
AGENT_DISPLAY_NAME: השם של הסוכן שמוצג באפליקציית האינטרנט. -
AGENT_DESCRIPTION: תיאור של מה שהסוכן יכול לעשות. -
PROTOCOLVERSION: הגרסה של פרוטוקול A2A שהסוכן תומך בה. מידע נוסף על הגרסאות הנתמכות זמין בהערות הגרסה של A2A. -
AGENT_URL: כתובת ה-URL של נקודת הקצה של הסוכן. -
AGENT_VERSION: גרסת הסוכן. -
INPUT_MODE: סוג המדיה של קלט ברירת המחדל. לדוגמה,application/jsonאוtext/plain. -
OUTPUT_MODE: סוג ברירת המחדל של פלט המדיה. לדוגמה,text/plain"אוimage/png. -
CAPABILITIES: אובייקט JSON שמכיל תכונות נתמכות של A2A. לדוגמה,\"streaming\": trueאו\"pushNotifications\": false. -
SKILLS: רשימה של אובייקטים מסוגAgentSkillשהסוכן מציע. -
authorizationConfig: אם קיבלתם את פרטי ההרשאה ואתם רוצים שהסוכן יקבל גישה למשאבים בשם המשתמש, צריך להוסיף את השדהauthorization_configלמשאב ה-JSON. Google Cloud-
AUTH_ID: הערך שבו השתמשתם עבור AUTH_ID בקטע הוספת משאב הרשאה ל-Gemini Enterprise.
-
רשימת נציגי תמיכה שמחוברים לאפליקציה
בדוגמת הקוד הבאה אפשר לראות איך מקבלים את הפרטים של כל הסוכנים שמחוברים לאפליקציה:
REST
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents"
מחליפים את המשתנים בערכים:
- ENDPOINT_LOCATION: האזור הרב-אזורי של בקשת ה-API. מציינים אחד מהערכים הבאים:
-
usלאזור מרובה בארה"ב -
euלאזור עם מספר אזורים באיחוד האירופי globalלמיקום הגלובלי
-
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: האזור הרב-אזורי של האפליקציה:
global,usאוeu. - APP_ID: המזהה של אפליקציית Gemini Enterprise.
אם הסוכן לא נוצר מראש על ידי Google, התשובה כוללת שדה name בכמה השורות הראשונות. הערך של השדה הזה מכיל את מזהה הסוכן בסוף הנתיב. לדוגמה, בתגובה הבאה, מזהה הסוכן הוא 12345678901234567890:
{
"name": "projects/123456/locations/global/collections/default_collection/engines/my-app/assistants/default_assistant/agents/12345678901234567890",
...
}
צפייה בפרטים של סוכן A2A
בדוגמת הקוד הבאה אפשר לראות איך מאחזרים את הפרטים של סוכן שנרשם ב-Gemini Enterprise:
REST
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID"
מחליפים את המשתנים בערכים:
- ENDPOINT_LOCATION: האזור הרב-אזורי של בקשת ה-API. מציינים אחד מהערכים הבאים:
-
usלאזור מרובה בארה"ב -
euלאזור עם מספר אזורים באיחוד האירופי globalלמיקום הגלובלי
-
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: האזור הרב-אזורי של האפליקציה:
global,usאוeu. - APP_ID: המזהה של אפליקציית Gemini Enterprise.
- AGENT_ID: מזהה הסוכן. אפשר למצוא את מזהה הסוכן על ידי הצגת רשימה של הסוכנים שמחוברים לאפליקציה.
עדכון של סוכן A2A
אפשר לשנות את הפרטים של סוכן A2A קיים שרשום ב-Gemini Enterprise באמצעות Google Cloud המסוף או ה-API בארכיטקטורת REST.
המסוף
כדי לעדכן סוכן A2A באמצעות Google Cloud המסוף, פועלים לפי השלבים הבאים:
נכנסים לדף Gemini Enterprise במסוף Google Cloud .
לוחצים על שם האפליקציה שכוללת את הסוכן שרוצים לעדכן.
לוחצים על סוכנים.
לוחצים על השם של סוכן A2A (Custom) שרוצים לעדכן ואז לוחצים על Edit (עריכה).
בשדה Agent card JSON, מעדכנים את פרטי כרטיס הנציג בפורמט JSON. רשימה מלאה של השדות הזמינים מופיעה במפרט הרשמי של פרוטוקול Agent2Agent (A2A). בדוגמה הבאה נעשה שימוש רק בשדות הנדרשים.
לדוגמה:
{ "protocolVersion": "0.3", "name": "Hello World Agent", "description": "Just a hello world agent", "url": "https://example.com/myagent", "iconUrl": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTkiIGhlaWdodD0iOTkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0zMyAwaDMzdjMzSDMzeiBNMCAzM2gzM3YzM0gweiBNNjYgMzNoMzN2MzNINjZ6IE0zMyA2NmgzM3YzM0gzM3oiIGZpbGw9ImJsdWUiLz48L3N2Zz4=", "version": "1.1.0", "capabilities": { }, "skills": [ { "id": "data-analysis", "name": "Data Analysis", "description": "Data analysis", "tags": [] } ], "defaultInputModes": [ "text/plain" ], "defaultOutputModes": [ "text/plain" ] }לוחצים על Save.
REST
כדי לעדכן פרטים של סוכן A2A שרשום ב-Gemini Enterprise, משתמשים בשיטה agents.patch. הפקודה הבאה משתמשת רק בשדות הנדרשים. רשימה מלאה של השדות הזמינים מופיעה במפרט הרשמי של פרוטוקול Agent2Agent (A2A).
מריצים את הפקודה הבאה כדי לעדכן את סוכן A2A באמצעות Gemini Enterprise:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID \
-d '
{
"name": "AGENT_NAME",
"displayName": "AGENT_DISPLAY_NAME",
"description": "AGENT_DESCRIPTION",
"a2aAgentDefinition": {
"jsonAgentCard": "{\"protocolVersion\":\"PROTOCOLVERSION\",\"name\":\"AGENT_NAME\",\"description\":\"AGENT_DESCRIPTION\",\"url\":\"AGENT_URL\",\"version\":\"AGENT_VERSION\",\"defaultInputModes\":[\"INPUT_MODE\"],\"defaultOutputModes\":[\"OUTPUT_MODE\"],\"capabilities\":{ CAPABILITIES },\"skills\":[SKILLS]}"
},
"authorizationConfig": {
"agentAuthorization": "projects/PROJECT_ID/locations/LOCATION/authorizations/AUTH_ID"
}
}
'
מחליפים את מה שכתוב בשדות הבאים:
-
ENDPOINT_LOCATION: האזור הרב-אזורי של בקשת ה-API. מציינים אחד מהערכים הבאים:-
usלאזור מרובה בארה"ב -
euלאזור עם מספר אזורים באיחוד האירופי globalלמיקום הגלובלי
-
-
LOCATION: האזור המרובה של מאגר הנתונים: global,usאוeu. -
PROJECT_ID: מזהה הפרויקט. -
APP_ID: המזהה של האפליקציה שרוצים לרשום את הסוכן. - AGENT_ID: מזהה הסוכן. אפשר למצוא את מזהה הסוכן על ידי הצגת רשימה של הסוכנים שמחוברים לאפליקציה.
-
AGENT_NAME: המזהה הייחודי של הסוכן. -
AGENT_DISPLAY_NAME: השם של הסוכן שמוצג באפליקציית האינטרנט. -
AGENT_DESCRIPTION: תיאור של מה שהסוכן יכול לעשות. -
PROTOCOLVERSION: הגרסה של פרוטוקול A2A שהסוכן תומך בה. מידע נוסף על הגרסאות הנתמכות זמין בהערות הגרסה של A2A. -
AGENT_URL: כתובת ה-URL של נקודת הקצה של הסוכן. -
AGENT_VERSION: גרסת הסוכן. -
INPUT_MODE: סוג המדיה של קלט ברירת המחדל. לדוגמה,application/jsonאוtext/plain. -
OUTPUT_MODE: סוג ברירת המחדל של פלט המדיה. לדוגמה,text/plainאוimage/png. -
CAPABILITIES: אובייקט JSON שמכיל תכונות נתמכות של A2A. לדוגמה,\"streaming\": trueאו\"pushNotifications\": false. -
SKILLS: רשימה של אובייקטים מסוגAgentSkillשהסוכן מציע. -
authorizationConfig: אם קיבלתם את פרטי ההרשאה ואתם רוצים שהסוכן יקבל גישה למשאבים בשם המשתמש, צריך להוסיף את השדהauthorization_configלמשאב ה-JSON. Google Cloud-
AUTH_ID: הערך שבו השתמשתם ב-AUTH_ID בקטע הוספת משאב הרשאה ל-Gemini Enterprise.
-
מחיקת סוכן A2A
בדוגמת הקוד הבאה אפשר לראות איך מוחקים סוכן שמחובר לאפליקציה:
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID"
מחליפים את המשתנים בערכים:
- ENDPOINT_LOCATION: האזור הרב-אזורי של בקשת ה-API. מציינים אחד מהערכים הבאים:
-
usלאזור מרובה בארה"ב -
euלאזור עם מספר אזורים באיחוד האירופי globalלמיקום הגלובלי
-
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: האזור הרב-אזורי של האפליקציה:
global,usאוeu - APP_ID: המזהה של אפליקציית Gemini Enterprise.
- AGENT_ID: מזהה הסוכן. אפשר למצוא את מזהה הסוכן על ידי הצגת רשימה של הסוכנים שמחוברים לאפליקציה.
המאמרים הבאים
- משתמשים בסוכן שנרשמתם אליו ב-Gemini Enterprise בדפדפן.