ב-Agent Registry נוצרים אינדקסים של כרטיסי סוכני Agent2Agent (A2A), ממשקי העברה ומיומנויות מוטבעות, כדי שאתם וסוכני הניהול שלכם תוכלו למצוא סוכנים בסביבת Google Cloud ולקרוא להם. סוכני AI אוטונומיים יכולים להשתמש בפרוטוקול A2A כדי להחליף הודעות ולהקצות משימות בלי לשתף את המצב הפנימי, ההנחיות או הכלים שלהם.
הקשר בין סוכני AI, A2A ו-MCP
בארכיטקטורות של כמה סוכנים אפשר לשלב את התקנים הפתוחים הבאים, שמופיעים בקטלוג של Agent Registry:
- פרוטוקול Agent2Agent (A2A): יוצר סטנדרט לתקשורת בין רשתות שכנות (P2P) בין לקוח A2A, כמו סוכן תזמור או אפליקציה שגלויה למשתמשים, לבין סוכן A2A מרוחק. הלקוח שולח הודעות בשפה טבעית או הודעות מובְנות, ומקבל עדכונים או פריטים של משימות עם שמירת מצב, בלי צורך לראות את המודל הבסיסי, את מצע הזיכרון או את לולאת החשיבה הרציונלית הפנימית של הנציג המרוחק. ב-Agent Registry יש קטלוג של סוכנים מובנים של Google שחשופים לממשקי API של Google Cloud וסוכני A2A בהתאמה אישית שאתם פורסים בסביבה שלכם. במאמר סקירה כללית על סוכני A2A ב-Cloud Run מופיעה דוגמה לארכיטקטורה של אירוח סוכני A2A בהתאמה אישית.
- Model Context Protocol (MCP): תקן להרצת כלים בין לקוח לשרת, שבו סוכן מתחבר לשרת MCP כדי להפעיל כלים דטרמיניסטיים ולקרוא משאבי נתונים מובְנים.
ב-Agent Registry, סוכן הניהול יכול לשלוח שאילתה למאגר יחיד כדי למצוא סוכני משנה מומחים מסוג A2A לצורך הקצאת משימות בכמה שלבים, לצד שרתי MCP ומיומנויות עצמאיות לשימוש ישיר בכלים.
גרסאות פרוטוקול וגילוי כרטיסי סוכן
כל נציג שתואם ל-A2A מתאר את הזהות, נקודות הקצה והיכולות שלו במסמך מטא-נתונים בפורמט JSON שנקרא כרטיס הנציג (agent-card.json).
Agent Registry תומך בגרסאות 1.0 (מומלץ) ו-0.3 של מפרט פרוטוקול A2A.
למידע על שדות ספציפיים של Agent Card והמבנים של הגרסאות האלה, קראו את המאמר סכימת Agent Card.
איך Agent Registry מוסיף לאינדקס כרטיסי סוכנים
לא משנה אם סוכן A2A נטמע באמצעות רישום אוטומטי או נוסף באמצעות רישום ידני, רישום הסוכנים מאמת את כרטיס הסוכן שלו ויוצר משאב גילוי Agent לקריאה בלבד עם המידע הבא:
- המטען הייעודי (payload) של כרטיס הסוכן: מאגר הסוכנים שומר את המטען הייעודי המלא של JSON בשדה
cardשל המשאבAgent, כשהערך שלtypeמוגדר ל-A2A_AGENT_CARD. - שדות גילוי: Agent Registry מחלץ את
displayName,description,version, transportprotocolsו-inlineskillsשל הסוכן מכרטיס הסוכן ושומר אותם במשאבAgent. אתם יכולים לחפש ולסנן את היכולות האלה בלי לאחזר נקודות קצה (endpoints) נפרדות של/.well-known/agent-card.jsonבשירותים השונים.
שירותיGoogle Cloud וסביבות זמן ריצה מנוהלות לא תמיד חושפים כתובת URL ציבורית של /.well-known/agent-card.json. במקום זאת, אתם ואפליקציות הלקוח שלכם מאחזרים את כרטיס הסוכן ישירות מ-Agent Registry. חלק מהסוכנים מספקים גם כרטיס סוכן מורחב עם פרטים נוספים שזמינים רק ללקוחות מאומתים. אם Agent Card מגדיר את capabilities.extendedAgentCard ל-true, לקוחות מאומתים יכולים לקבל את ה-Agent Card המורחב בנקודת הקצה של זמן הריצה של הסוכן כדי לאחזר את הפרטים האלה.
קישורי תעבורה ופעולות ליבה
קישור תעבורה מגדיר איך הלקוח מעצב ושולח בקשות לסוכן A2A דרך הרשת. פרוטוקול A2A תומך באפשרויות ההעברה הבאות, כדי שסוכנים שנוצרו בפלטפורמות שונות יוכלו לתקשר:
- HTTP+JSON: בקשות HTTPS ששולחות ומקבלות מטענים ייעודיים (payloads) של JSON.
- JSON-RPC: בקשות HTTPS שעוטפות את שם הפעולה והפרמטרים בתוך הודעת JSON-RPC.
- gRPC: קריאות gRPC בינאריות דרך TLS לתקשורת עם זמן אחזור קצר בין שירותים.
ב-Agent Registry מתועדים סוגי התעבורה שכל סוכן תומך בהם וכתובות ה-URL של נקודות הקצה של הסוכן במשאב Agent. כתובות ה-URL של נקודות הקצה משתנות בהתאם לשירותים ולפריסות של Google Cloud , לכן כדאי להימנע מהוספת כתובות URL בתוך הקוד. במקום זאת, חפשו את כתובת ה-URL של נקודת הקצה של הסוכן ואת התעבורה מ-Agent Registry בזמן הריצה.
לא משנה באיזה פרוטוקול הסוכן משתמש, הלקוחות יוצרים אינטראקציה עם הסוכן באמצעות אותן פעולות ליבה של A2A:
| פעולה | תיאור |
|---|---|
SendMessage |
שליחת הודעה כדי להתחיל משימה חדשה או להמשיך שיחה. הנציג מחזיר תשובה מיידית או משימה שאפשר לעקוב אחריה. |
SendStreamingMessage |
שליחת הודעה ועדכוני סטטוס בשידור חי, תשובות חלקיות ותוצאות בזמן שהנציג עובד, אם הנציג תומך בסטרימינג. |
GetTask |
בודקת את הסטטוס הנוכחי ומאחזרת את הפלט של משימה קיימת. |
ListTasks |
מציג רשימה של משימות בשיחה או בפרויקט, אם הסוכן תומך בכך. |
SubscribeToTask |
מתחבר מחדש למשימה שפועלת כדי להעביר עדכונים בזמן אמת עד שהמשימה מושהית או מסתיימת. |
CancelTask |
מבקשת מהסוכן להפסיק משימה שמתבצעת, אם אפשר לבטל אותה. |
GetExtendedAgentCard |
אחזור של כרטיס הסוכן המורחב עם פרטים נוספים שזמינים רק ללקוחות מאומתים. |
מחזור החיים של המשימה ומצב של כמה שלבים
A2A מפריד בין רציפות השיחה לבין יחידות הביצוע הנפרדות באמצעות שני מזהים:
- Context ID (
contextId): מקבץ אינטראקציות קשורות עם כמה פניות בסשן משותף, כדי שהסוכן המרוחק יוכל לשמור על ההקשר של השיחה בבקשות עוקבות. - מזהה משימה (
taskId): מזהה יחידת עבודה ספציפית, אסינכרונית או סינכרונית, שנוצרת כשלקוח A2A שולח הודעה.
כשהסוכן המרוחק מעבד בקשה, המשימה עוברת בין השלבים הבאים במחזור החיים של A2A:
| מדינה | קטגוריה | תיאור |
|---|---|---|
TASK_STATE_SUBMITTED |
פעיל | הסוכן המרוחק אישר את הבקשה והוסיף את המשימה לתור לביצוע. |
TASK_STATE_WORKING |
פעיל | הסוכן המרוחק מבצע חשיבה, מפעיל כלים או יוצר פריטים למשימה. |
TASK_STATE_INPUT_REQUIRED |
בהשהיה | הביצוע מושהה עד לקבלת קלט נוסף, הבהרה או אישור של האדם שבתהליך באותם taskId ו-contextId. |
TASK_STATE_AUTH_REQUIRED |
בהשהיה | הביצוע מושהה עד שהלקוח משלים את האימות או את תהליך ההסכמה מהמשתמש למשאב במורד הזרם. |
TASK_STATE_COMPLETED |
טרמינל | המשימה הסתיימה בהצלחה והחזירה את התשובה הסופית או את פריטי המידע שנוצרו בפלט. |
TASK_STATE_FAILED |
טרמינל | המשימה הופסקה בגלל שגיאה בהרצה או בשירות במורד הזרם. |
TASK_STATE_CANCELED |
טרמינל | המשימה בוטלה לפני שהושלמה. |
TASK_STATE_REJECTED |
טרמינל | הסוכן המרוחק סירב לבצע את המשימה שהתבקשה. |
מיומנויות A2A, מיומנויות עצמאיות וכלי MCP
ב-Agent Registry יש אינדקס של שלושה מנגנוני יכולות נפרדים, כדי שתוכלו לבחור את דפוס השילוב המתאים לכל תהליך עבודה:
- מיומנויות A2A מוטמעות: השדה
skillsבמשאב הגילויAgentשל הנציג מכיל מטא-נתונים בפורמט JSON, כוללid,name,description,tagsו-examples, שמוטמעים בתוך כרטיס הנציג. מיומנויות A2A מוטבעות מפרסמות את המשימות ברמה הגבוהה שסוכן תזמור יכול להקצות לסוכן המרוחק הזה באמצעות העברת A2A. - מיומנויות עצמאיות: משאבים עצמאיים ברמה העליונה של
Skillו-SkillRevisionב-Agent Registry מכילים ארכיוני ZIP עם גרסאות, עם הוראות בקובץSKILL.mdוסקריפטים אופציונליים. הסוכן מוריד מיומנות עצמאית להקשר שלו, במקום להעביר את הביצוע לסוכן אחר. כדי לראות השוואה מלאה בין פעולות A2A מוטמעות לבין פעולות עצמאיות, עיינו במאמר ההבדלים בין פעולות עצמאיות לפעולות A2A. - כלי MCP: השדה
toolsבמשאב הגילויMcpServerמכיל סכימות פונקציות מובְנות שנחשפות על ידי שרת MCP רשום, שהסוכן קורא לו ישירות כדי לשלוח שאילתות לנתונים או להריץ פעולות דטרמיניסטיות.
אבטחה בזמן ריצה, פיקוח וקריאות לסוכנים
Agent Registry משמש כקטלוג למציאת סוכני A2A. אימות, הרשאה, בדיקת תוכן, רישום ביומן ביקורת ואכיפת מכסות בזמן ריצה מתרחשים כשסוכן הלקוח או סוכן התזמור קורא לסוכן היעד:
- חיפוש נקודות קצה של סוכני יעד ושיחות אליהן: חיפוש נקודות קצה של סוכני A2A ושיחות אליהן באמצעות Agent Development Kit (ADK) או לקוחות HTTP ו-Python רגילים. מידע נוסף זמין במאמר איך יוצרים מערכות מרובות סוכנים וקוראים לסוכני A2A.
- אימות והיקף פרטי הכניסה: הגדרת טוקני גישה מסוג OAuth 2.0, טוקנים של מזהים מסוג OpenID Connect (OIDC), איחוד שירותי אימות הזהות של עומסי עבודה או קישורים של מנהל האימות של Agent Identity לשיחות בין נציגים.
- בקרת גישה וכללי מדיניות דחייה: אכיפה של הרשאות גישה בזמן ריצה, כללי מדיניות דחייה של ניהול זהויות והרשאות גישה (IAM) וכללי מדיניות תעבורת נתונים יוצאת של שרת proxy לאימות זהות (IAP). מידע נוסף על תפקידים והרשאות
- בדיקת פרומפטים ותשובות: כדי לזהות החדרת פרומפטים וחשיפת מידע רגיש, אפשר לבדוק את המטען הייעודי (payload) של פרומפטים ותשובות נתמכות מסוג A2A. לשם כך, מגדירים את השילוב של הגנה מוגברת על המודל עם Agent Gateway ואת הקישורים של Service Extensions.
- יומני ביקורת ומכסות: בודקים את רשומות הביקורת של קריאות A2A ביומני הביקורת של Agent Registry, ומתכננים את המכסות לקצב הגשת הבקשות של סוכן היעד והשירות במורד הזרם במכסות ומגבלות המערכת.
המאמרים הבאים
- חיפוש סוכנים, כלים וסקילים בכרטיסי הסוכנים ובסקילים של A2A בשורה.
- יצירת מערכות מרובות סוכנים וקריאה לסוכני A2A באמצעות לקוחות ADK או A2A.
- בודקים את סכימות ה-JSON של כרטיסי סוכן A2A.
- השוואה בין פעולות A2A עצמאיות לבין פעולות A2A מוטמעות.