יצירת מערכת מרובת סוכנים באמצעות ADK, פריסה ב-Agent Engine ותחילת העבודה עם פרוטוקול A2A

1. מטרת שיעור ה-Lab

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

מה תלמדו

  • הסבר על העקרונות הבסיסיים של ADK ועל אופן יצירת מערכת מרובת סוכנים.
  • איך פורסים את הסוכנים ב-GCP ומשתמשים בהם בקלות
  • הסבר על פרוטוקול A2A
  • רוצים לדעת איך משתמשים בפרוטוקול A2A וב-ADK יחד כדי ליצור נציגים פתוחים?

2. לפני שמתחילים

  • אם אין לכם עדיין פרויקט שתוכלו להשתמש בו, תצטרכו ליצור פרויקט חדש במסוף GCP.
  • בשיעור ה-Lab הזה נשתמש ב-GCP Cloud Shell כדי לבצע את המשימות. פותחים את Cloud Shell ומגדירים את הפרויקט באמצעות Cloud Shell.
  • פותחים את GCP Cloud Shell Editor בלחיצה על הלחצן Cloud Shell Editor. אם מופיע החלון הקופץ 'Authorize Shell' (מתן הרשאה ל-Shell), לוחצים כדי לתת הרשאה ל-Cloud Shell Editor.
  • אפשר לבדוק אם הפרויקט כבר מאומת באמצעות הפקודה הבאה.
gcloud auth list
  • כדי לאשר את הפרויקט, מריצים את הפקודה הבאה ב-Cloud Shell:
gcloud config list project
  • אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו
gcloud config set project <YOUR_PROJECT_ID>
  • כדי להריץ את שיעור ה-Lab הזה, צריך להפעיל כמה שירותים. מריצים את הפקודה הבאה ב-Cloud Shell.
gcloud services enable aiplatform.googleapis.com

3. סקירה כללית: היתרונות של Agent Development Kit

ערכת פיתוח של סוכנים מציעה כמה יתרונות חשובים למפתחים שיוצרים אפליקציות מבוססות-סוכנים:

  1. מערכות מרובות סוכנים: בניית אפליקציות מודולריות וניתנות להרחבה על ידי שילוב של כמה סוכנים מומחים בהיררכיה. הפעלת תיאום מורכב והעברת סמכויות.
  2. מערכת עשירה של כלים: סוכנים יכולים להשתמש במגוון רחב של יכולות: שימוש בכלים מוכנים מראש (חיפוש, הפעלת קוד וכו'), יצירת פונקציות בהתאמה אישית, שילוב כלים ממסגרות של סוכנים מצד שלישי (LangChain,‏ CrewAI) או אפילו שימוש בסוכנים אחרים ככלים.
  3. תזמור גמיש: הגדרת תהליכי עבודה באמצעות סוכני תהליכי עבודה (SequentialAgent,‏ ParallelAgent ו-LoopAgent) לצינורות צפויים, או שימוש בניתוב דינמי מבוסס-LLM (העברה של LlmAgent) להתנהגות מותאמת.
  4. חוויית פיתוח משולבת: פיתוח, בדיקה וניפוי באגים באופן מקומי באמצעות CLI עוצמתי וממשק משתמש אינטראקטיבי למפתחים. בדיקת אירועים, מצב וביצוע של סוכן שלב אחר שלב.
  5. הערכה מובנית: הערכה שיטתית של ביצועי הנציגים על ידי בדיקת איכות התשובה הסופית ומסלול הביצוע של כל שלב בהשוואה לתרחישי בדיקה מוגדרים מראש.
  6. מוכנים לפריסה: אפשר להשתמש בקונטיינר כדי לפרוס את הסוכנים בכל מקום – להריץ אותם באופן מקומי, להרחיב את השימוש בהם באמצעות Vertex AI Agent Engine או לשלב אותם בתשתית מותאמת אישית באמצעות Cloud Run או Docker.

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

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

e554e9e43aafc757.png

4. מבוא ל-A2A

הפרוטוקול Agent2Agent (A2A) הוא תקן פתוח שנועד לאפשר תקשורת ושיתוף פעולה חלקים ומאובטחים בין סוכני AI אוטונומיים ממסגרות, מספקים ומדומיינים שונים.

  1. יכולת פעולה הדדית אוניברסלית: A2A מאפשרת לסוכנים לעבוד יחד ללא קשר לטכנולוגיות הבסיסיות שלהם, ומקדמת סביבה עסקית מרובת סוכנים. המשמעות היא שסוכנים שנבנו על ידי חברות שונות בפלטפורמות שונות יכולים לתקשר ולתאם פעולות.
  2. גילוי יכולות: סוכנים יכולים לפרסם את היכולות שלהם באמצעות 'כרטיסי סוכן' (מסמכי JSON), שמתארים את הזהות שלהם, את התכונות של A2A שהם תומכים בהן, את הכישורים שלהם ואת דרישות האימות שלהם. כך סוכנים אחרים יכולים לגלות את הסוכן המתאים ביותר למשימה מסוימת ולבחור בו.
  3. אבטחה כברירת מחדל: אבטחה היא עיקרון מרכזי. ב-A2A משולבים מנגנוני אימות והרשאה ברמה שמתאימה לארגונים, תוך שימוש בתקנים כמו HTTPS/TLS, ‏ JWT, ‏ OIDC ומפתחות API, כדי להבטיח אינטראקציות מאובטחות ולהגן על נתונים רגישים.
  4. אגנוסטיות למצבים: הפרוטוקול תומך במצבי תקשורת שונים, כולל טקסט, אודיו וסטרימינג של וידאו, וגם בטפסים אינטראקטיביים וב-iframe מוטמעים. הגמישות הזו מאפשרת לסוכנים להחליף מידע בפורמט המתאים ביותר למשימה ולמשתמש.
  5. ניהול משימות מובנה: פרוטוקול A2A מגדיר פרוטוקולים ברורים להאצלת משימות, למעקב ולביצוע. הוא תומך בקיבוץ משימות קשורות ובניהול שלהן אצל סוכנים שונים באמצעות מזהי משימות ייחודיים. המשימות יכולות לעבור בין מחזורי חיים מוגדרים (למשל, הוגשה, בטיפול, הושלמה).
  6. ביצוע אטום: תכונה חשובה היא שהסוכנים לא צריכים לחשוף לסוכנים אחרים את תהליכי החשיבה הפנימיים, הזיכרון או הכלים הספציפיים שלהם. הם חושפים רק את השירותים שאפשר להפעיל, וכך מקדמים מודולריות ופרטיות.
  7. מבוסס על תקנים קיימים: A2A מתבסס על טכנולוגיות אינטרנט מוכרות כמו HTTP, אירועים שנשלחים מהשרת (SSE) להזרמה בזמן אמת ו-JSON-RPC להחלפת נתונים מובְנים, מה שמקל על השילוב עם תשתית IT קיימת.
  8. תקשורת אסינכרונית: הפרוטוקול מתוכנן עם תקשורת אסינכרונית כשיקול עיקרי, כדי לאפשר התקדמות גמישה במשימות ושליחת עדכונים בהתראות פוש גם כשלא מתבצע חיבור באופן קבוע.

5. ארכיטקטורת הסוכן

בשיעור ה-Lab הזה תיצרו אפליקציה מרובת סוכנים שמייצרת תמונה בהתאם למפרט שלכם ומעריכה את התמונה לפני שהיא מוצגת לכם.

המערכת בנויה עם סוכן ראשי שנקרא image_scoring, שמנהל את כל התהליך. לסוכן הראשי הזה יש סוכן משנה שנקרא image_generation_scoring_agent, שבתורו כולל סוכני משנה משלו למשימות ספציפיות יותר. כך נוצר קשר היררכי שבו הסוכן הראשי מעביר משימות לסוכנים המשניים שלו. 6e21de5b4f92669c.png איור 2: תרשים זרימה כללי של סוכן.

רשימה של כל הנציגים

  1. image_scoring (Main Agent):
  2. מטרה: זהו הסוכן הראשי שמנהל את תהליך העבודה הכולל. הוא מפעיל שוב ושוב את image_generation_scoring_agent ואת checker_agent בלולאה עד שמתקיים תנאי סיום.
  3. סוכני משנה:
  • image_generation_scoring_agent
  • checker_agent_instance
  1. image_generation_scoring_agent (סוכן משנה של image_scoring):
  2. מטרה: הנציג הזה אחראי ללוגיקה הבסיסית של יצירת תמונות ומתן ציון לתמונות. הוא מפעיל רצף של שלושה סוכני משנה כדי להשיג את זה.
  3. סוכני משנה:
  • image_generation_prompt_agent
  • image_generation_agent
  • scoring_images_prompt
  1. checker_agent_instance (סוכן משנה של image_scoring):
  2. מטרה: סוכן זה בודק אם תהליך הניקוד של התמונה צריך להימשך או להסתיים. הוא משתמש בכלי check_tool_condition כדי להעריך את תנאי הסיום.
  3. image_generation_prompt_agent (סוכן משנה של image_generation_scoring_agent):
  4. מטרה: הסוכן הזה הוא מומחה ביצירת הנחיות ליצירת תמונות. הוא מקבל טקסט קלט ויוצר הנחיה מפורטת שמתאימה למודל ליצירת תמונות.
  5. ‫image_generation_agent (סוכן משנה של image_generation_scoring_agent):
  6. מטרה: הסוכן הזה הוא מומחה ביצירת תמונות באמצעות Imagen 3. הוא מקבל את ההנחיה מimage_generation_prompt_agent ויוצר תמונה.
  7. scoring_images_prompt (סוכן משנה של image_generation_scoring_agent):
  8. מטרה: הסוכן הזה הוא מומחה בהערכה ובדירוג של תמונות על סמך קריטריונים שונים. הוא לוקח את התמונה שנוצרה ומקצה לה ציון.

הכלים שבהם הסוכנים משתמשים

  1. check_tool_condition:
  2. תיאור: הכלי הזה בודק אם התנאי לסיום הלולאה מתקיים או אם הגעתם למספר המקסימלי של האיטרציות. אם אחד מהתנאים האלה מתקיים, הלולאה מפסיקה.
  3. בשימוש על ידי: checker_agent_instance
  4. generate_images:
  5. תיאור: הכלי הזה יוצר תמונות באמצעות מודל Imagen 3. הוא יכול גם לשמור את התמונות שנוצרו בקטגוריית אחסון ב-Google Cloud Storage.
  6. בשימוש על ידי: image_generation_agent
  7. get_policy:
  8. תיאור: הכלי הזה מאחזר מדיניות מקובץ JSON. ההנחיה משמשת את image_generation_prompt_agent ליצירת הנחיה ליצירת תמונה ואת scoring_images_prompt לדירוג התמונות.
  9. בשימוש על ידי: image_generation_prompt_agent, ‏ scoring_images_prompt
  10. get_image:
  11. תיאור: הכלי הזה טוען את פריט המידע שנוצר בתהליך פיתוח (Artifact) של התמונה כדי שאפשר יהיה לתת לו ציון.
  12. בשימוש על-ידי: scoring_images_prompt
  13. set_score:
  14. תיאור: הכלי הזה מגדיר את הניקוד הכולל של התמונה שנוצרה במצב הסשן.
  15. בשימוש על-ידי: scoring_images_prompt

6. משימה 1: התקנה של ADK והגדרת הסביבה

בשיעור ה-Lab המעשי הזה נשתמש ב-Cloud Shell כדי לבצע את המשימות.

  1. במסוף Google Cloud, מחפשים את Vertex AI בחלק העליון של המסוף ועוברים אליו.
  2. לוחצים על Enable all recommended APIs (הפעלת כל ממשקי ה-API המומלצים).

הכנת כרטיסייה ב-Cloud Shell Editor

  1. כשחלון Google Cloud Console מסומן, פותחים את Cloud Shell על ידי הקשה על המקש G ואז על המקש S במקלדת. אפשר גם ללחוץ על הלחצן של Cloud Shell 231dc0e6754519c8.png בפינה השמאלית העליונה של מסוף Google Cloud.
  2. לוחצים על המשך.
  3. כשמופיעה בקשה לאשר את Cloud Shell, לוחצים על אישור.
  4. בפינה הימנית העליונה של החלונית Cloud Shell, לוחצים על הלחצן Open in new window (פתיחה בחלון חדש) כפתור &#39;פתיחה בחלון חדש&#39;.
  5. כדי לראות את הקבצים, לוחצים על סמל העיפרון ( סמל העיפרון של העורך) של פתיחת הכלי לעריכה בחלק העליון של החלונית.
  6. בחלק העליון של תפריט הניווט הימני, לוחצים על סמל הסייר סמל של מגלה נסתרות כדי לפתוח את סייר הקבצים.
  7. לוחצים על הלחצן פתיחת התיקייה.
  8. בהמשך שיעור ה-Lab הזה, תוכלו לעבוד בחלון הזה כסביבת פיתוח משולבת (IDE) עם Cloud Shell Editor וטרמינל Cloud Shell.

הורדה והתקנה של ADK ודוגמאות קוד למעבדה הזו

  1. מריצים את הפקודות הבאות כדי לשכפל את המקור הנדרש מ-GitHub ולהתקין את הספריות הנדרשות.
#create the project directory
mkdir imagescoring
cd imagescoring
#clone the code in the local directory
git clone https://github.com/haren-bh/multiagenthandson.git

#Create the virtual environment
python3 -m venv pythonenv
source pythonenv/bin/activate

#install google-adk and a2a sdk
python3 -m pip install google-adk==1.8.0
python3 -m pip install a2a-sdk==0.2.16
  1. נשתמש ב-Poetry כדי להתקין דרישות נוספות:
cd multiagenthandson #go to the application directory
pip install poetry poetry-plugin-export
poetry install --with deployment
  1. אם אין לכם קטגוריה ב-Cloud Storage, אתם יכולים ליצור קטגוריה חדשה ב-Google Cloud Storage. אפשר גם ליצור את הדלי באמצעות פקודת gsutil.
gsutil mb gs://YOUR-UNIQUE-BUCKETNAME
  1. בעורך, עוברים אל View (תצוגה) > Toggle hidden files (החלפה בין קבצים מוסתרים). בתיקייה image_scoring יוצרים קובץ ‎ .env עם התוכן הבא. מוסיפים את הפרטים הנדרשים, כמו שם הפרויקט וקטגוריית Cloud Storage.
GOOGLE_GENAI_USE_VERTEXAI=1 #1 if VERTEXAI has to be used. Can be 0 if API_KEY is specified
GOOGLE_CLOUD_PROJECT=YOUR CLOUD PROJECT NAME
GOOGLE_CLOUD_LOCATION=us-central1
GOOGLE_CLOUD_STORAGE_BUCKET=YOUR BUCKET NAME  # Only required for deployment on Agent Engine
GCS_BUCKET_NAME=YOUR BUCKET NAME #Bucket for storing generated images.
SCORE_THRESHOLD=40 # Min threshold for image_score. Max Score is 50 , hence should be less than 50. 
#If the computed score is higher then loop will terminate
#MAX_ITERATIONS=5 #Max iterations for evaluating the image_score before terminating the loop.
IMAGEN_MODEL="imagen-3.0-generate-002" 
GENAI_MODEL="gemini-2.5-flash"
#AGENT_ENGINE_ID=<AGENT_ENGINE_ID> #The Agent Engine ID obtained after deploying to the agent engine.
  1. כדאי לעיין במבנה של הסוכן בקוד המקור, החל מ-agent.py . הנציג הזה מכיל את נציג הבסיס שיתחבר לנציגים האחרים.
  2. חוזרים לספרייה העליונה multiagenthandson בטרמינל ומריצים את הפקודה הבאה כדי להפעיל את הסוכן באופן מקומי
# Run the following command to run agents locally
export GCS_BUCKET_NAME=your gcs bucket name
adk web

7bb4bc5f8244c140.png איור 1

מקישים על Ctrl+Click (או על CMD+Click ב-MacOS) על כתובת ה-URL http:// שמוצגת בטרמינל כדי לפתוח את לקוח ה-GUI מבוסס הדפדפן של ה-ADK. הוא אמור להיראות כמו באיור 2

  1. קדימה, נתחיל ליצור תמונות. אפשר לנסות את ההנחיות הבאות או ליצור הנחיות משלכם.
  2. נוף הררי שליו בשקיעה
  3. חתול רוכב על אופניים

99e23472f80a81f2.png איור 2

7. משימה 2: פריסה ל-Agent Engine

עכשיו פורסים את הסוכן ב-Agent Engine. ‫Agent Engine הוא שירות שמנוהל במלואו לפריסת סוכנים ב-GCP. ‫Agent Engine תואם ל-ADK, כך שאפשר לפרוס ב-Agent Engine סוכנים שנבנו באמצעות ADK.

  1. הגדרת משתני סביבה
export GOOGLE_CLOUD_LOCATION='us-central1'
export GOOGLE_CLOUD_PROJECT='your project id'
  1. יוצרים את הקובץ requirements.txt באמצעות poetry. ‫Poetry ישתמש ב-pyproject.toml כדי ליצור קובץ requirements.txt. אחרי שמריצים את הפקודה, בודקים אם נוצר הקובץ requirements.txt.
# Go to the parent folder containing pyproject.toml file
# install poetry-plugin-export
pip install poetry-plugin-export

#Create requirements.txt file
poetry export -f requirements.txt --output requirements.txt --without-hashes
  1. יוצרים את החבילה. אנחנו צריכים לארוז את האפליקציה בחבילת Python ‏.whl. נשתמש בשירה כדי לעשות את זה. אחרי שמריצים את הפקודה, מוודאים שנוצרה תיקיית dist ושקובץ ‎.whl נמצא בתוכה.
# Go to the parent folder containing pyproject.toml file
#Create python package, to create whl file
poetry build
  1. עכשיו נכין את סקריפט הפריסה. סקריפט הפריסה יפרוס את סוכן ניקוד התמונות או את שירות מנוע הסוכן. צריך לשנות את התוכן של deploy.py בתיקייה image_scoring כמו שמופיע בהמשך.
# Change the content of the following. Look for #change this comment
import vertexai
from .agent import root_agent
import os
import glob # To easily find the wheel file

PROJECT_ID = "YOUR PROJECT ID" #change this your project
LOCATION = "us-central1" #change this
STAGING_BUCKET = "gs://YOUR BUCKET " #change this to your bucket

from vertexai import agent_engines

vertexai.init(
   project=PROJECT_ID,
   location=LOCATION,
   staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
   agent_engine=root_agent,
   requirements=open(os.path.join(os.getcwd(), "requirements.txt")).readlines()+["./dist/image_scoring-0.1.0-py3-none-any.whl"],#change this to your local location
   extra_packages=[
       "./dist/image_scoring-0.1.0-py3-none-any.whl", # change this to your location
   ]
)

print(remote_app.resource_name)
  1. עכשיו אפשר להריץ את סקריפט הפריסה.
#run deploy script from the parent folder containing deploy.py
python3 -m image_scoring.deploy

אחרי הפריסה, אמור להופיע משהו כמו הדוגמה הבאה, 13109f2a5c5c5af9.png

איור 3

  1. עכשיו נבדוק את הסוכן שפרסנו. כדי לבדוק את מנוע הסוכן שנפרס מרחוק, קודם מעתיקים את מיקום הסוכן מהפלט של הפריסה במסוף. היא אמורה להיראות בערך כך: projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680 .
    עוברים לתיקייה testclient,פותחים את הקובץ remote_test.py ועורכים את השורות הבאות.
PROJECT_ID = "" #change this
LOCATION = "" #change this
STAGING_BUCKET = "" #change this

#replace the id with your own.
reasoning_engine_id="your agent engine id"

#You can replace this with your own prompt
image_prompt="A cat riding a bicycle"

#execute remote_test.py
python3 remote_test.py

8. משימה 3: יצירת סוכן A2A

בשלב הזה ניצור סוכן פשוט מסוג A2A על סמך הסוכן שיצרנו בשלבים הקודמים. אפשר לפרסם סוכני ADK קיימים במסגרת פרוטוקול A2A. אלה הדברים העיקריים שתלמדו בשלב הזה.

  • מידע בסיסי על פרוטוקול A2A
  • כאן מוסבר איך פרוטוקולי ADK ו-A2A פועלים יחד.
  • איך מבצעים אינטראקציה עם פרוטוקול A2A

בשיעור המעשי הזה נשתמש בקוד שבתיקייה image_scoring_adk_a2a_server. לפני שמתחילים את המשימה, צריך לשנות את הספרייה לתיקייה הזו.

יצירת כרטיס סוכן A2A

פרוטוקול A2A מחייב כרטיס סוכן שמכיל את כל המידע על הסוכן, כמו יכולות הסוכן, מדריך לשימוש בסוכן וכו'. אחרי פריסת סוכן A2A, אפשר לראות את כרטיס הסוכן באמצעות הקישור ‎.well-known/agent-card.json. לקוחות יכולים להשתמש במידע הזה כדי לשלוח את הבקשה לסוכנים.

בתיקייה remote_a2a/image_scoring מוודאים שיש קובץ agents.json עם התוכן הבא.

{
 "name": "image_scoring",
 "description": "Agent that generates images based on user prompts and scores their adherence to the prompt.",
 "url": "http://localhost:8001/a2a/image_scoring",
 "version": "1.0.0",
 "defaultInputModes": ["text/plain"],
 "defaultOutputModes": ["image/png", "text/plain"],
 "capabilities": {
   "streaming": true,
   "functions": true
 },
 "skills": [
   {
     "id": "generate_and_score_image",
     "name": "Generate and Score Image",
     "description": "Generates an image from a given text prompt and then evaluates how well the generated image adheres to the original prompt, providing a score.",
     "tags": ["image generation", "image scoring", "evaluation", "AI art"],
     "examples": [
       "Generate an image of a futuristic city at sunset",
       "Create an image of a cat playing a piano",
       "Show me an image of a serene forest with a hidden waterfall"
     ]
   }
 ]
}

יצירת סוכן A2A

בתיקיית השורש image_scoring_adk_a2a_server, מוודאים שיש קובץ a2a_agent.py, שהוא נקודת הכניסה לסוכן a2a. הוא צריך לכלול את התוכן הבא:

from google.adk.agents.remote_a2a_agent import RemoteA2aAgent

root_agent = RemoteA2aAgent(
   name="image_scoring",
   description="Agent to give interesting facts.",
   agent_card="http://localhost:8001/a2a/image_scoring/.well-known/agent.json",
  
   # Optional configurations
   timeout=300.0,          # HTTP timeout (seconds)
   httpx_client=None,      # Custom HTTP client
)

הפעלת סוכן A2A

עכשיו אפשר להפעיל את הסוכן. כדי להריץ את הסוכן, מריצים את הפקודה הבאה מתוך התיקייה העליונה image_scoring_adk_a2a_server

#set some environmental variables
export GOOGLE_CLOUD_PROJECT=datapipeline-372305
export GOOGLE_CLOUD_LOCATION=us-central1
export GCS_BUCKET_NAME=haren-genai-bucket

#following command runs the ADK agent as a2a agent
adk api_server --a2a --port 8001 remote_a2a

בדיקת סוכן A2A

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

#Execute the following 
curl http://localhost:8001/a2a/image_scoring/.well-known/agent.json

הפעלת הפקודה שלמעלה אמורה להציג את כרטיס הסוכן של סוכן A2A שלנו, שהוא בעיקר התוכן של agent.json שיצרנו בשלב הקודם.

עכשיו נשלח בקשה לסוכן. אפשר להשתמש ב-curl כדי לשלוח בקשה לסוכן,

curl -X POST   http://localhost:8001/a2a/image_scoring   -H 'Content-Type: application/json'   -d '{
    "id": "uuid-123",
    "params": {
      "message": {
        "messageId": "msg-456",
        "parts": [{"text": "Create an image of a cat"}],
        "role": "user"
      }
    }
  }'

בדוגמה של הבקשה שלמעלה, אפשר לשנות את ההנחיה על ידי שינוי השורה Create an image of a cat (יצירת תמונה של חתול). אחרי שמריצים את הפקודה, אפשר לבדוק אם תמונת הפלט נמצאת באחסון בענן של Google שצוין.

9. הסרת המשאבים

עכשיו ננקה את מה שיצרנו.

  1. מוחקים את השרת של Agent Engine שיצרנו עכשיו. כדי לעבור אל Vertex AI, מקלידים Vertex AI בסרגל החיפוש של מסוף Google Cloud. לוחצים על Agent Engine (מנוע סוכנים) בצד ימין.כדי למחוק את הסוכן, לוחצים על סמל המחיקה. c9f95963c4db0d6c.png

איור 4

  1. מחיקת הקבצים ב-Cloud Shell
#Execute the following to delete the files
rm -R imagescoring
  1. מוחקים את הקטגוריה. אפשר להיכנס למסוף GCP->Cloud Storage , לבחור את הקטגוריה ולמחוק אותה. afb43ad0dda70858.png