קורס מקוצר בנושא ADK – מרמת מתחילים ועד רמת מומחה

1. מה תלמדו

ברוכים הבאים לסדנת ADK Master Class – המסע שלכם אל מערכות מרובות סוכנים

אתם עומדים להיכנס לעולם המלהיב של סוכני AI. שכחו מבוטים פשוטים שרק עונים על שאלות. אנחנו מתעמקים ב-Agent Development Kit (ADK) כדי לבנות מערכות מתוחכמות ואוטונומיות שיכולות להסיק מסקנות, לתכנן ולהשתמש בכלים כדי לבצע משימות מורכבות.

מפת דרכים של הקורס

בסוף המדריך הזה תוכלו:

  • איך יוצרים סוכן AI ראשון: מדריך ליצירת סוכן מתפקד במלואו שיכול להבין את הצרכים של המשתמש, להשתמש בכלים כמו חיפוש Google וליצור תשובות מפורטות ומועילות.
  • שליטה בכלי מותאם אישית: כדי לחשוף את העוצמה האמיתית של הסוכנים, אפשר לחבר אותם לפונקציות ולממשקי API מותאמים אישית. תלמדו את הסוכן לאחזר נתונים בזמן אמת, כמו תחזיות מזג אוויר.
  • בניית מערכות מרובות סוכנים: תלמדו על התבנית Agent-as-a-Tool (סוכן ככלי), קונספט מהפכני שבו סוכנים מעבירים משימות לסוכנים מומחים אחרים, ויוצרים צוות של מומחי AI שעובדים יחד.
  • ארגון תהליכי עבודה מורכבים: מעבר להקצאת משימות פשוטה, אפשר להשתמש בדפוסים מתקדמים כמו נתבי הודעות, שרשרות רציפות, לולאות וביצוע מקביל כדי ליצור אפליקציות חזקות, יעילות וחכמות שיכולות לטפל כמעט בכל בקשה.
  • איך נותנים לסוכנים זיכרון: הסוכנים יכולים לזכור את ההקשר של השיחה, לענות על שאלות המשך, ללמוד ממשוב ולבצע משימות מורכבות בצורה חלקה.

קדימה, מתחילים! 🚀

2. הגדרת GCP

הגדרת פרויקט GCP

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

שלב 1: הפעלת חשבון לחיוב

  • כדי לממש את הזיכוי של 5 דולר בחשבון לחיוב, תצטרכו אותו לפריסה. חשוב להיכנס באמצעות חשבון Gmail.

שלב 2: יצירת פרויקט חדש ב-GCP

  • נכנסים אל מסוף Google Cloud ויוצרים פרויקט חדש.

ליצור חשבון GCP חדש

  • נכנסים אל מסוף Google Cloud ויוצרים פרויקט חדש.
  • פותחים את החלונית הימנית, לוחצים על Billing ובודקים אם החשבון לחיוב מקושר לחשבון GCP הזה.

קישור החשבון לחיוב לחשבון gcp

אם הדף הזה מוצג, מסמנים את התיבה manage billing account, בוחרים באפשרות Google Cloud Trial One ומקשרים אליה.

שלב 3: מעתיקים את מזהה הפרויקט

  • נכנסים לכתובת console.cloud.google.com.
  • לוחצים על התפריט הנפתח של בורר הפרויקטים בחלק העליון של הדף.
  • לוחצים על הכרטיסייה All (הכול) (כי יכול להיות שהפרויקט החדש עדיין לא יופיע ב-Recent (אחרונים)).
  • בוחרים את מזהה הפרויקט שיצרתם.

03-05-project-all.png

3. סשן 1: הסוכן הראשון שלכם עם Runner

roadmap1

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

  • סוכן: המוח המרכזי של הפעולה. ההגדרה של הסוכן נקבעת לפי ההוראות שלו (האישיות והמשימה שלו), מודל ה-AI שבו הוא משתמש (כמו Gemini) והכלים שהוא יכול לגשת אליהם.
  • סשן: הזיכרון של השיחה. הוא שומר את היסטוריית האינטראקציות (הודעות של משתמשים ותשובות של נציגים), וכך מאפשר דיאלוג רציף.
  • Runner: המנוע שמבצע את המשימה. הוא לוקח את הסוכן ואת הסשן, מעבד את שאילתת המשתמש החדשה ומתזמן את השלבים ליצירת תשובה.

‫➡️ איפה אפשר למצוא את זה ב-Notebook

‫👈 זה מתאים לתאים בקטע חלק 1: הסוכן הראשון שלך – Genie 🧞‎ לתכנון טיול יומי.🌟

רובוט נציג קורא

  • הגדרת סוכן: מחפשים את הפונקציה create_day_trip_agent(). כאן מוגדר הסוכן. שימו לב למחרוזת ההוראות המפורטת – זו ההנחיה שמגדירה לסוכן איך להתנהג. אנחנו גם נותנים לו את הכלי הראשון שלו: חיפוש Google.
  • פונקציית עזר: כאן מוגדרת פונקציית העזר run_agent_query(). נשתמש בכלי הזה לאורך ה-notebook כדי לפשט את הרצת השאילתות.
  • הרצת בדיקה: הפונקציה run_day_trip_genie() מדמה משתמש שמבקש טיול יום "במחיר סביר" ו "מרגיע". הסוכן משתמש בהוראות שלו ובכלי חיפוש Google כדי למצוא מיקומים מתאימים וליצור מסלול טיול בפורמט Markdown.

‫➡️ פעולה: בודקים את ההנחיה של day_trip_agent. אפשר לראות איך הבקשה לנסיעה במחיר סביר בשאילתת הבדיקה קשורה ישירות להנחיה של הסוכן להיות מודע לתקציב.

4. סשן 2: כלים בהתאמה אישית 🛠️

roadmap2

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

החלק הכי חשוב בכלי פונקציה הוא מחרוזת התיעוד שלו. ה-ADK מנתח באופן אוטומטי את מחרוזת התיעוד כדי להבין מה הכלי עושה, אילו פרמטרים הוא מקבל (Args) ומה הוא מחזיר (Returns). מודל השפה הגדול (LLM) קורא את התיאור הזה כדי להחליט מתי ואיך להשתמש בכלי.

‫➡️ איפה אפשר למצוא את זה ב-Notebook

‫👈 זה מתאים לתאים בקטע 2.1 כלי פשוט לפונקציות: קריאה ל-Weather API של מזג אוויר בזמן אמת. 🌟

adk tools

  • הגדרת הכלי: הפונקציה get_live_weather_forecast(location: str) היא הליבה של הכלי המותאם אישית שלנו. היא מקבלת שם של עיר, קוראת ל-API הציבורי של National Weather Service (שירות מזג האוויר הלאומי) ומחזירה מילון עם הטמפרטורה והתחזית.
  • הגדרת סוכן: סוכן מזג האוויר נוצר ומצויד בכלי החדש שלנו על ידי העברת tools=[get_live_weather_forecast] במהלך האתחול שלו. בהוראות לסוכן מצוין במפורש להשתמש בכלי הזה לפני שמציעים פעילויות בחוץ.
  • הרצת בדיקה: השאילתה "אני רוצה לצאת לטיול רגלי ליד אגם טאהו, מה מזג האוויר?" מפעילה ישירות את הסוכן לשימוש בכלי get_live_weather_forecast כי ההוראות שלו מחייבות זאת.

‫➡️ Action: Read the docstring for the get_live_weather_forecast function and the instruction for the weather_agent. שימו לב לקשר הישיר ביניהם.

5. סשן 3: סוכן ככלי 🧑‍🍳

roadmap3

למה ליצור סוכן יחיד ומונוליטי אם אפשר ליצור צוות של מומחים? תבנית Agent-as-a-Tool היא דרך יעילה לבניית מערכות מורכבות שבהן סוכן ראשי, שלעתים קרובות נקרא סוכן תזמור או נתב, מעביר משימות לסוכנים אחרים וממוקדים יותר.

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

‫➡️ איפה אפשר למצוא את זה ב-Notebook

‫👈 זה מתאים לתאים בקטע 2.2 סוכן בתור כלי: התייעצות עם מומחה 🧑‍🍳.🌟

נתוני הנסיעה

בדוגמה הזו נבנה סוכן מתוחכם עם כמה שכבות:

  • המומחים:
    • food_critic_agent: סוכן מומחה מאוד שמספק רק הצעות למסעדות.
    • db_agent: סוכן מדומה שמבצע שאילתה במסד נתונים כדי לקבל מידע על מלונות.
    • concierge_agent: נציג ברמה בינונית שמתנהג כמו קונסיירז' מנומס. חשוב לציין שהכלי food_critic_agent הוא כלי עצמאי.
  • האורקסטרטור (trip_data_concierge_agent): זהו הסוכן ברמה העליונה שהמשתמש מקיים איתו אינטראקציה. ההוראות שלו הופכות אותו ל "מתכנן נסיעות ראשי", והוא מקבל שני כלים שקוראים לסוכנים האחרים:
    • call_db_agent: פונקציה שמפעילה את db_agent.
    • call_concierge_agent: פונקציה שמפעילה את concierge_agent.
  • התהליך: הרצת הבדיקה ב-run_trip_data_concierge() מדגימה את שרשרת ההעברה המלאה.
    • משתמש מבקש מהכלי לניהול תהליכים למצוא מלון ומסעדה בקרבת מקום.
    • ההוראות של הכלי לניהול תהליכים מציינות קודם להשתמש בכלי call_db_agent כדי לקבל נתוני מלונות.
    • לאחר מכן, כלי התזמור משתמש בכלי call_concierge_agent כדי לקבל המלצה.
    • כש-concierge_agent מקבל את הבקשה, הוא משתמש בכלי שלו, food_critic_agent, כדי לקבל רעיון למסעדה.

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

‫➡️ Action: אפשר לעקוב אחרי זרימת הביצוע בהרצת הניסיון בקטע run_trip_data_concierge(). שימו לב איך ב-TOOL CALLED הפלט מציג את שרשרת הענקת הגישה מהכלי לניהול תזמור עד למומחים. זהו רצף של פקודות.

6. סשן 4: זיכרון הסוכן 🧠

roadmap4

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

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

‫➡️ איפה אפשר למצוא את זה ב-Notebook

‫👈 זה מתאים לתאים בקטע Part 3: Agent with a Memory - The Adaptive Planner 🗺️. 🌟

הזיכרון של הסוכן

  • הגדרת הסוכן: הפונקציה create_multi_day_trip_agent() מגדירה סוכן שמיועד לתכנון נסיעה באופן הדרגתי. ההוראות מדגישות את החשיבות של זכירת ההקשר, טיפול במשוב ותכנון של יום אחד בכל פעם.

תרחיש 3א: סוכן עם זיכרון (✅)

הבדיקה הזו מופעלת בפונקציה run_adaptive_memory_demonstration().

  • נוצרת trip_session אחת שנעשה בה שימוש חוזר בשלושה תורים רצופים.
  • תור 1: המשתמש יוזם תוכנית לטיול של יומיים.
  • תור 2: המשתמש נותן משוב ("אני לא חובב גדול של טירות"). הסוכן זוכר את הפנייה הראשונה (Turn 1), ולכן הוא מבין איזה חלק בתוכנית צריך לשנות ומציע חלופה.
  • תור 3: המשתמש מאשר את השינוי ומבקש את השלב הבא. הסוכן זוכר הכול וממשיך לתכנן את היום השני.

תרחיש 3ב: סוכן ללא זיכרון (❌)

הבדיקה הזו מופעלת בפונקציה run_memory_failure_demonstration().

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

  • פנייה 1: המשתמש מתחיל את הנסיעה בסשן_אחד. הנציג עונה בצורה נכונה.
  • תור 2: המשתמש מבקש לתכנן את היום השני, אבל השאילתה נשלחת בסשן חדש לגמרי, session_two. בגלל שאין היסטוריה לסשן החדש הזה, הסוכן מבולבל. יש לו אמנזיה! הוא לא יודע איזו נסיעה מתכננים.

פעולה: השוואה בין התשובות של הנציג/ה בשיחות run_adaptive_memory_demonstration() ו-run_memory_failure_demonstration(). זהו המושג החשוב ביותר במחברת: כדי לנהל שיחה רציפה אחת צריך סשן רציף אחד.

7. מפגש 5: סוכן הנתבים 🚏

roadmap5

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

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

לדוגמה, שאילתה לגבי "הסושי הכי טוב" צריכה לעבור לסוכן foodie_agent, בעוד ששאלה לגבי "קונצרטים בסוף השבוע הזה" צריכה להיות מטופלת על ידי weekend_guide_agent.

‫➡️ איפה אפשר למצוא את זה ב-Notebook:

‫👈 הרעיון הזה הוא מרכזי בכל המחברת, אבל הוא מוצג לראשונה בחלק 1: Multi-Agent Mayhem – Sequential Workflows 🧠→🤖→🤖 🌟

נציג לרוטר

  • הגדרות של סוכנים: תא הקוד מגדיר כמה סוכנים מומחים (day_trip_agent,‏ foodie_agent,‏ transportation_agent) והכי חשוב, את router_agent. חשוב לשים לב להנחיה של סוכן הניתוב (router_agent), שמצוין בה במפורש להחזיר רק את השם של הסוכן הכי מתאים לביצוע המשימה.
  • לוגיקת הביצוע: הפונקציה run_sequential_app מדגימה איך קודם קוראים ל-router_agent כדי לקבל החלטה (chosen_route), ואז משתמשים בהחלטה הזו בבלוק if/elif כדי להפעיל את הסוכן המתאים.

8. סשן 6: SequentialAgent ⛓️

roadmap6

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

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

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

‫➡️ איפה אפשר למצוא את זה ב-Notebook:

‫👈 הנושא הזה מוסבר בחלק 2 (הדרך של ADK): מהומה של כמה סוכנים עם SequentialAgent 🧠→⛓️→🤖. 🌟

סוכן עוקב

  • ארגון הקוד מחדש (Refactoring) של סוכן: בתא הקוד הראשון בקטע הזה, אפשר לראות את השינויים העיקריים ב-foodie_agent וב-transportation_agent:
    • מעכשיו ל-foodie_agent יש output_key="destination". ההוראה הזו אומרת ל-ADK לשמור את התשובה הסופית שלו במשתנה בשם destination במצב המשותף.
    • לאפליקציה transportation_agent יש עכשיו את placeholder‏ {destination} בהנחיה שלה. ערך המצב המשותף מוזרק אוטומטית ל-placeholder הזה על ידי ADK.
  • הגדרת תהליך העבודה: find_and_navigate_agent מוגדר כ-SequentialAgent, והמאפיין sub_agents שלו מוגדר כ-‎[foodie_agent, transportation_agent]‎, כדי להבטיח שהם יפעלו בדיוק בסדר הזה.
  • ביצוע פשוט: אפשר לראות את הפונקציה run_sequential_app בקטע הזה. הלוגיקה המורכבת if/elif נעלמה! ה-find_and_navigate_agent מטופל עכשיו כיחידה אחת שאפשר להפעיל, וה-ADK מטפל בשלבים הפנימיים הרציפים באופן אוטומטי.

9. סשן 7: LoopAgent 🔁

roadmap7

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

לשם כך, ה-ADK כולל את LoopAgent. סוכן זרימת העבודה הזה מפעיל שוב ושוב רצף של סוכני משנה עד שמתקיים תנאי מסוים. התכונה הזו מושלמת ליצירת סוכנים 'פרפקציוניסטים' שיכולים לתכנן, לבקר ולשפר את העבודה שלהם.

בתרשים מוצג תהליך שבו קודם יוצרים תוכנית Planner Agent. לאחר מכן, מזינים את LoopAgent. הכלי Critic Agent בודק את התוכנית. אם יש פגם, Refiner Agent יוצר גרסה חדשה והלולאה חוזרת על עצמה. אם התוכנית טובה, Refiner Agent קורא לכלי exit_loop, והתוכנית הסופית והמאומתת מוחזרת.

נציג Loop

‫➡️ איפה אפשר למצוא את זה ב-Notebook:

‫👈 כאן מוסבר איך אפשר לפתח רעיונות בעזרת LoopAgent 🧠→🔁→🤖. 🌟

  • הסוכנים המרכזיים: תהליך העבודה משתמש ב-planner_agent, critic_agent ו-refiner_agent.
  • הגדרת הלולאה: refinement_loop מוגדר כ-LoopAgent שמנהל את critic_agent, refiner_agent ו-sets max_iterations=3.
  • תנאי היציאה: הלולאה מסתיימת כשה-critic_agent מאשר את התוכנית, וכתוצאה מכך refiner_agent קורא לכלי המותאם אישית exit_loop.

10. סשן 8: ParallelAgent ⚡️

roadmap8

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

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

בתרשים הזה אפשר לראות את ParallelAgent מקבל שאילתה אחת ומפצל את העבודה לשלושה מסלולים מקבילים. הפונקציות museum_finder,‏ concert_finder ו-restaurant_finder מופעלות בו-זמנית. אחרי ששלושת הסוכנים מסיימים את העבודה, התוצאות שלהם (שנשמרו במצב המשותף) מאוחדות ומועברות לסוכן הסינתזה הסופי, שמשלב אותן לתשובה אחת.

‫➡️ איפה אפשר למצוא את זה ב-Notebook:

‫👈 תהליך העבודה הזה מפורט בקטע העוצמה של ParallelAgent 🧠→⚡️→🤖🤖🤖. 🌟

Parallel Agent

  • סוכנים מומחים: מוגדרים שלושה סוכנים מומחים, שלכל אחד מהם יש output_key ייחודי (לדוגמה, museum_result).
  • תהליך העבודה המקביל: סוכן המחקר המקביל מוגדר כ-ParallelAgent, ושלושת סוכני החיפוש מופיעים כ-sub_agents שלו.
  • שלב הסינתזה: אחרי השלב המקביל, סוכן סינתזה סופי אוסף את כל הממצאים מהמצב המשותף באמצעות placeholders (‏{museum_result}, ‏{concert_result} וכו') כדי ליצור סיכום מסודר.

11. נספח: ADK Web –‏ 🍎 ל-Mac/Linux

roadmap9

במדריך הזה נסביר איך מגדירים ומריצים את ADK Day Trip Planning Agent במחשב המקומי.

דרישות מוקדמות

  • ‫Python 3.8 ואילך
    • Python 3.9 ואילך: מתקין את google-adk==1.5.0 (הגרסה האחרונה עם כל התכונות)
    • Python 3.8: מותקנת גרסה תואמת של google-adk==0.3.0
  • מפתח Google AI Studio API
  • חיבור אינטרנט

שלב 1: שיבוט המאגר

פותחים את Terminal ומריצים את הפקודה:

git clone https://github.com/cuppibla/ADK_Basic.git
cd ADK_Basic

שלב 2: הגדרת סביבה וירטואלית והתקנת תלות

אפשרות א': הגדרה אוטומטית (מומלץ)

# Run the setup script
chmod +x setup_venv.sh
./setup_venv.sh

אפשרות ב': הגדרה ידנית

# Create virtual environment
python3 -m venv .adk_env

# Activate virtual environment
source .adk_env/bin/activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

שלב 3: 🔥 חשוב – יצירת משתני סביבה

⚠️ חשוב לא לדלג על השלב הזה! יוצרים קובץ .env בספרייה agent/:

# Create the .env file
touch agent/.env

# Open it in your default text editor
open agent/.env

מוסיפים את השורות הבאות לקובץ:

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=your_actual_api_key_here

🚨 קריטי: צריך להחליף את your_actual_api_key_here במפתח ה-API בפועל!

שלב 4: מפעילים את הסביבה הווירטואלית (אם היא עדיין לא פעילה)

source .adk_env/bin/activate

הסימן (.adk_env) אמור להופיע בתחילת שורת הפקודה של הטרמינל.

שלב 5: מפעילים את ממשק האינטרנט של ADK

adk web

שלב 6: פותחים את הדפדפן

  1. פותחים את הדפדפן ועוברים לכתובת ה-URL שמוצגת במסוף (בדרך כלל http://localhost:8000)
  2. בתפריט הנפתח בפינה הימנית העליונה, בוחרים באפשרות agent
  3. אפשר להתחיל להתכתב בצ'אט עם סוכן לתכנון טיולי יום!

השיחה תיראה כך: דוגמה לממשק משתמש באינטרנט של ADK

השבתה של הסביבה

כשמסיימים לעבוד על הפרויקט:

deactivate

הפקודה הזו פועלת באופן זהה ב-Mac/Linux וב-Windows. הקידומת (.adk_env) תיעלם מההנחיה במסוף.

פתרון בעיות ב-Mac

  • לא נמצא Python: משתמשים ב-python3 במקום ב-python
  • ההרשאה נדחתה: צריך להריץ את הפקודה chmod +x setup_venv.sh לפני שמריצים את הסקריפט

12. נספח: ADK Web – 🪟 למשתמשי Windows

roadmap9

במדריך הזה נסביר איך מגדירים ומריצים את ADK Day Trip Planning Agent במחשב המקומי.

דרישות מוקדמות

  • ‫Python 3.8 ואילך
    • Python 3.9 ואילך: מתקין את google-adk==1.5.0 (הגרסה האחרונה עם כל התכונות)
    • Python 3.8: מותקנת גרסה תואמת של google-adk==0.3.0
  • מפתח Google AI Studio API
  • חיבור אינטרנט

שלב 1: שיבוט המאגר

פותחים את שורת הפקודה או את PowerShell ומריצים את הפקודה:

git clone https://github.com/cuppibla/ADK_Basic.git
cd ADK_Basic

שלב 2: הגדרת סביבה וירטואלית והתקנת תלות

אפשרות א': הגדרה אוטומטית (מומלץ)

# Run the setup script in Command Prompt
setup_venv.bat

אפשרות ב': הגדרה ידנית

בשורת הפקודה:

# Create virtual environment
python -m venv .adk_env

# Activate virtual environment
.adk_env\Scripts\activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

ל-PowerShell:

# Create virtual environment
python -m venv .adk_env

# Activate virtual environment
.adk_env\Scripts\Activate.ps1

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

שלב 3: 🔥 חשוב – יצירת משתני סביבה

⚠️ חשוב לא לדלג על השלב הזה! יוצרים קובץ .env בספרייה agent/:

# Create the .env file
type nul > agent\.env

# Open it in Notepad
notepad agent\.env

מוסיפים את השורות הבאות לקובץ:

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=your_actual_api_key_here

🚨 קריטי: צריך להחליף את your_actual_api_key_here במפתח ה-API בפועל!

שלב 4: מפעילים את הסביבה הווירטואלית (אם היא עדיין לא פעילה)

שורת הפקודה:

.adk_env\Scripts\activate

PowerShell:

.adk_env\Scripts\Activate.ps1

ההנחיה צריכה להתחיל במילים (.adk_env).

שלב 5: מפעילים את ממשק האינטרנט של ADK

adk web

שלב 6: פותחים את הדפדפן

  1. פותחים את הדפדפן ועוברים לכתובת ה-URL שמוצגת במסוף (בדרך כלל http://localhost:8000)
  2. בתפריט הנפתח בפינה הימנית העליונה, בוחרים באפשרות agent
  3. אפשר להתחיל להתכתב בצ'אט עם סוכן לתכנון טיולי יום!

פתרון בעיות ב-Windows

  • שגיאה במדיניות ההפעלה של PowerShell: מריצים את Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

השיחה תיראה כך: דוגמה לממשק משתמש באינטרנט של ADK

השבתה של הסביבה

כשמסיימים לעבוד על הפרויקט:

deactivate

הפקודה הזו פועלת באופן זהה ב-Mac/Linux וב-Windows. הקידומת (.adk_env) תיעלם מההנחיה במסוף.