מדריך למתחילים: יצירה ופריסה של סוכן AI ב-Cloud Run באמצעות הערכה לפיתוח סוכנים (ADK)
הערכה לפיתוח סוכנים (ADK) ל-Python מאפשרת לכם לפתח סוכני AI שמשתמשים בכלים מותאמים אישית ולהריץ אותם כשירותים ב-Cloud Run. במדריך הזה לפתיחה מהירה, פורסים סוכן לדוגמה שמחלץ את דוחות מזג האוויר של עיר מסוימת.
כשפורסים מקוד מקור, מערכת Cloud Run יוצרת באופן אוטומטי קובץ אימג' של קונטיינר בשביל השירות. מידע נוסף על האופן שבו ה-buildpack של Python קובע את נקודת הכניסה שמוגדרת כברירת מחדל לפריסות של קוד מקור ב-Cloud Run זמין במאמר פיתוח אפליקציה ב-Python.
לפני שמתחילים
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Cloud de Confiance פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Cloud de Confiance פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Cloud de Confiance שיוצרים. -
בוחרים את הפרויקט שיצרתם: Cloud de Confiance
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Cloud de Confiance .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
-
אם אחד מהממשקי API הבאים לא מופעל, צריך להפעיל אותו: Cloud Run Admin API, Vertex AI API ו-Cloud Build API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable run.googleapis.com
aiplatform.googleapis.com cloudbuild.googleapis.com - מתקינים את ה-ADK לפי ההוראות במסמכי התיעוד של ערכת הפיתוח לסוכנים.
אם אתם כפופים למדיניות ארגונית של הגבלה לפי דומיין שמגבילה הפעלות לא מאומתות של הפרויקט, תצטרכו לגשת לשירות הפרוס שלכם כמו שמתואר בקטע בדיקת שירותים פרטיים.
- אתם יכולים לעיין בתמחור של Cloud Run או להעריך את העלויות באמצעות מחשבון עלויות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) on the project - משתמש ב-Vertex AI (
roles/aiplatform.user) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות - Logs Viewer (
roles/logging.viewer) on the project
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
נותנים לחשבון השירות ב-Cloud Build גישה לפרויקט
כברירת מחדל, Cloud Build משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine כחשבון השירות שמוגדר כברירת מחדל ב-Cloud Build כדי לבנות את קוד המקור ואת משאב Cloud Run, אלא אם משנים את ההתנהגות הזו.
כדי ש-Cloud Build יוכל ליצור את המקורות, צריך להקצות לחשבון השירות של Cloud Build את התפקיד Cloud Run Builder (roles/run.builder) בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \ --role=roles/run.builder
מחליפים את PROJECT_ID במזהה הפרויקט ב- Cloud de Confianceואת SERVICE_ACCOUNT_EMAIL_ADDRESS בכתובת האימייל של חשבון השירות של Cloud Build. אם אתם משתמשים בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine בתור חשבון השירות של Cloud Build, השתמשו בפורמט הבא לכתובת האימייל של חשבון השירות:
PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com
מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Cloud de Confiance.
הוראות מפורטות לאיתור מזהה הפרויקט ומספר הפרויקט זמינות במאמר יצירה וניהול של פרויקטים.
הקצאת התפקיד "מפתח ב-Cloud Run" מתעדכנת תוך כמה דקות.
כתיבת האפליקציה לדוגמה
כדי לכתוב אפליקציה ב-Python:
יוצרים ספריית הורה חדשה בשם
parent_folderועוברים אליה:mkdir parent_folder cd parent_folderבספרייה
parent_folder, יוצרים ספריית משנה חדשה בשםmulti_tool_agentועוברים אליה:mkdir multi_tool_agent cd multi_tool_agentיוצרים קובץ
__init__.pyלייבוא הסוכן:from . import agentיוצרים קובץ
agent.pyכדי להגדיר את הנציג שיענה על שאלות לגבי השעה ומזג האוויר בעיר מסוימת:import datetime from zoneinfo import ZoneInfo from google.adk.agents import Agent def get_weather(city: str) -> dict: """Retrieves the current weather report for a specified city. Args: city (str): The name of the city for which to retrieve the weather report. Returns: dict: status and result or error msg. """ if city.lower() == "new york": return { "status": "success", "report": ( "The weather in New York is sunny with a temperature of 25 degrees" " Celsius (77 degrees Fahrenheit)." ), } else: return { "status": "error", "error_message": f"Weather information for '{city}' is not available.", } def get_current_time(city: str) -> dict: """Returns the current time in a specified city. Args: city (str): The name of the city for which to retrieve the current time. Returns: dict: status and result or error msg. """ if city.lower() == "new york": tz_identifier = "America/New_York" else: return { "status": "error", "error_message": ( f"Sorry, I don't have timezone information for {city}." ), } tz = ZoneInfo(tz_identifier) now = datetime.datetime.now(tz) report = ( f'The current time in {city} is {now.strftime("%Y-%m-%d %H:%M:%S %Z%z")}' ) return {"status": "success", "report": report} root_agent = Agent( name="weather_time_agent", model="gemini-2.5-flash", description=( "Agent to answer questions about the time and weather in a city." ), instruction=( "You are a helpful agent who can answer user questions about the time and weather in a city." ), tools=[get_weather, get_current_time], )יוצרים קובץ
.envומוסיפים את המשתנים הבאים:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT=PROJECT_ID GOOGLE_CLOUD_LOCATION=REGIONמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
- REGION: האזור שבו אתם מתכננים לפרוס את השירות.
עוברים לספריית התיקייה הראשית
parent_folderויוצרים קובץrequirements.txtכדי להוסיף את התלותgoogle-adk:google-adkפרויקט המקור כולל את המבנה הבא:
parent_folder/ ├── requirements.txt └── multi_tool_agent/ ├── __init__.py ├── agent.py └── .env
האפליקציה מוכנה ואפשר לפרוס אותה.
פריסה מקוד המקור ל-Cloud Run
האפשרות 'פריסה ממקור' יוצרת באופן אוטומטי קובץ אימג' של קונטיינר מקוד המקור ופורסת אותו.
בספריית קוד המקור (
parent_folder), פורסים ל-Cloud Run באמצעות הפקודה הבאה:gcloud run deploy --source .
כשמופיעה בקשה להזין את שם השירות, לוחצים על Enter כדי לאשר את שם ברירת המחדל, לדוגמה
weather-agent.אם תתבקשו להפעיל ממשקי API נוספים בפרויקט, למשל Artifact Registry API, הקישו על
y.כשמוצגת בקשה לבחור אזור: בוחרים את האזור הרצוי, לדוגמה
europe-west1.אם מוצגת בקשה ליצור מאגר באזור שצוין, משיבים על ידי לחיצה על
y.אם מופיעה בקשה allow public access: משיבים
y. יכול להיות שההנחיה הזו לא תוצג אם יש מדיניות ארגונית להגבלת דומיין שמונעת את הצגתה. פרטים נוספים זמינים בקטע לפני שמתחילים.
אחר כך מחכים כמה רגעים עד שהפריסה תסתיים. אם הפקודה מצליחה, כתובת ה-URL של הסוכן שנפרס מוצגת בשורת הפקודה. היא תהיה בפורמט הבא:
https://weather-agent-123456789101.us-central1.run.app/list-apps.
הפעלת הסוכן
כדי להשתמש בסוכן ADK, אפשר להריץ את פקודות ה-curl הבאות:
כדי לקבל את רשימת האפליקציות, מריצים את הפקודה הבאה:
curl -X GET SERVICE_URL/list-appsמחליפים את SERVICE_URL בכתובת ה-URL של השירות שנפרס.
כדי להתחיל סשן, מריצים את הפקודה הבאה:
curl -X POST SERVICE_URL/apps/multi_tool_agent/users/u_123/sessions/s_123 -H "Content-Type: application/json" -d '{"key1": "value1", "key2": "value2"}'כדי לשלוח שאילתה לסוכן, מריצים את הפקודה הבאה:
curl -X POST SERVICE_URL/run \ -H "Content-Type: application/json" \ -d "{\"appName\": \"multi_tool_agent\",\"userId\": \"u_123\",\"sessionId\": \"s_123\",\"newMessage\": { \"role\": \"user\", \"parts\": [{ \"text\": \"What's the weather in New York today?\" }]}}"
הסוכן מחזיר את נתוני מזג האוויר בתוצאות השאילתה.
מידע נוסף ודוגמאות לגבי פקודות curl נתמכות זמינים במאמר שימוש בשרת ה-API במסמכי התיעוד של ADK.
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון Cloud de Confiance by S3NS , מוחקים את כל המשאבים שהצבתם באמצעות ההפעלה המהירה הזו.
מחיקת המאגר
ב-Cloud Run לא תחויבו כשהשירות שפרסתם לא בשימוש. עם זאת, יכול להיות שעדיין תחויבו על אחסון קובץ האימג' של הקונטיינר ב-Artifact Registry. כדי למחוק מאגרים של Artifact Registry, פועלים לפי השלבים שמפורטים במאמר מחיקת מאגרים במסמכי התיעוד של Artifact Registry.
מחיקת השירות
שירותי Cloud Run לא צוברים עלויות עד שהם מקבלים בקשות. כדי למחוק את שירות Cloud Run, מבצעים את אחד מהשלבים הבאים:
המסוף
כדי למחוק שירות:
נכנסים לדף Services של Cloud Run במסוף Cloud de Confiance by S3NS :
ברשימת השירותים, מאתרים את השירות שרוצים למחוק ולוחצים על תיבת הסימון שלו כדי לבחור אותו.
לוחצים על Delete. כל הגרסאות של השירות יימחקו.
gcloud
כדי למחוק שירות, מריצים את הפקודה הבאה:
gcloud run services delete SERVICE --region REGION
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- REGION: Cloud de Confiance האזור של השירות.
מחיקת פרויקט הבדיקה
כשמוחקים את הפרויקט ב- Cloud de Confiance , החיוב על כל המשאבים באותו פרויקט נפסק. כדי לשחרר את כל Cloud de Confiance by S3NS המשאבים בפרויקט, פועלים לפי השלבים הבאים:
כדי למחוק פרויקט ב- Cloud de Confiance :
gcloud projects delete PROJECT_ID
המאמרים הבאים
מידע נוסף על בניית מאגר תגים ממקור קוד ודחיפה למאגר זמין במאמרים הבאים: