יצירת סוכן לניתוח נתונים באמצעות AI באמצעות Gemini

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

הפרויקט SQL Talk הוא אפליקציה בקוד פתוח שמשתמשת בטכנולוגיית AI גנרטיבית כדי לענות על שאלות לגבי נתונים עסקיים. בפרויקט נעשה שימוש ב-Gemini API ובתכונה Function Calling כדי להפוך שאלות לגבי נתונים עסקיים לשאילתות SQL ולקריאות ל-API, ולאחר מכן להפוך את התוצאות חזרה לשפה פשוטה. אתם יכולים להשתמש בפרויקט הזה כנקודת מוצא ליצירת סוכן נתונים לעסק שלכם, ולעזור לחברי הצוות לקבל תשובות בלי שתצטרכו לכתוב קוד לשימוש חד-פעמי.

בסרטון AI Data Agent | Build with Google AI מוסבר על הפרויקט ועל הרחבת היכולות שלו, כולל תובנות מהאנשים שיצרו אותו. אם לא, תוכלו להתחיל להרחיב את הפרויקט לפי ההוראות הבאות.

ממשק המשתמש של אפליקציית הפרויקט SQL Talk

איור 1. ממשק המשתמש של אפליקציית הפרויקט SQL Talk.

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

בהוראות הבאות מוסבר איך להגדיר את הפרויקט SQL Talk לפיתוח ובדיקה. השלבים הכלליים הם יצירת הפרויקט של SQL Talk, הגדרת פרויקט פיתוח ב-Google Cloud Shell Editor, קבלת מזהה פרויקט ב-Google Cloud ושימוש בסקריפט כדי להגדיר את הגדרות הפרויקט. בהוראות הבאות מוסבר איך להגדיר את הפרויקט באמצעות Cloud Shell Editor, שמאפשר להגדיר, להריץ ולעדכן את הפרויקט במהירות ובנוחות.

יצירת מכונה של Cloud Shell לפרויקט

כדי להגדיר את הפרויקט של SQL Talk, צריך לשכפל את מאגר הפרויקט במכונה של Cloud Shell. בתהליך הזה מגדירים מכונה של סביבת פיתוח וירטואלית בתוך התשתית של Google Cloud לפרויקט, ומשכפלים את מאגר הקוד בסביבה הווירטואלית הזו.

כדי ליצור מכונה של Cloud Shell ל-SQL Talk:

הקישור הזה מגדיר מכונה של Google Cloud Shell Editor ומשכפל את המאגר של SQL Talk במכונה.

Google Cloud Shell Editor עם קוד הפרויקט של SQL Talk

איור 2. יצירת עותקים (cloning) של פרויקט SQL Talk בסביבת הפיתוח של Google Cloud Shell Editor.

אחזור מזהה פרויקט ב-Cloud

בפרויקט SQL Talk נעשה שימוש במזהה פרויקט ב-Google Cloud כדי להתחבר לשירותי Google Cloud, כולל המודלים של Gemini. כדי לאפשר לאפליקציה להתחבר לשירותים האלה, צריך להגדיר מזהה פרויקט בעורך של Cloud Shell.

כדי לקשר את Cloud Shell Editor למזהה פרויקט:

  1. עוברים אל מסוף Google Cloud ונכנסים לחשבון, אם צריך.
  2. בוחרים פרויקט קיים ב-Cloud או יוצרים פרויקט חדש.
  3. רושמים את מזהה הפרויקט ב-Cloud.
  4. מחברים את מכונה של Editor לפרויקט ומגדירים את הפרויקט. בחלון Cloud Shell Editor, בלוח הטרמינל, מזינים את הפקודה הבאה:

    gcloud config set project YOUR_PROJECT_ID
    

הגדרת הפרויקט SQL Talk

בפרויקט SQL Talk נעשה שימוש בשירותי Google Cloud כדי להפעיל את הפרויקט, כולל שירות מסדי הנתונים BigQuery ו-Vertex AI API כדי להתחבר למודלים של Gemini. הפרויקט SQL Talk כולל סקריפט setup.sh שמגדיר את הפרויקט עם שירותי Google Cloud הנדרשים ומפעיל את גרסת ברירת המחדל של הפרויקט.

כדי להגדיר ולהפעיל את המכונה של Cloud Shell Editor בפרויקט:

  1. בחלון Cloud Shell Editor, עוברים לספריית הפרויקט Cloud SQL Talk‏ (/sql-talk-app) בחלונית הטרמינל:

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. בחלונית הטרמינל, מזינים את הפקודה הבאה:

    bash setup.sh
    

בסיום הסקריפט של ההגדרה, אמורה להופיע הודעה דומה לזו בחלון מסוף Cloud Shell Editor. ההודעה הזו מציינת שתהליך ההגדרה הסתיים בהצלחה ושאפליקציית SQL Talk פועלת:

You can now view your Streamlit app in your browser.
Network URL: http://##.##.##.##:8080
External URL: http://##.##.##.##:8080

בדיקת הפרויקט

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

כדי להריץ את אפליקציית SQL Talk:

  1. אם Cloud Shell Editor לא היה פעיל והתנתק, יכול להיות שתצטרכו להתחבר מחדש למזהה הפרויקט ב-Cloud.

    gcloud config set project YOUR_PROJECT_ID
    
  2. בחלון Cloud Shell Editor, עוברים לספריית הפרויקט של Cloud Shell SQL Talk בחלונית הטרמינל.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. בחלונית הטרמינל, מזינים את הפקודה הבאה.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. הצגת אפליקציית SQL Talk. בפינה השמאלית העליונה של חלון Cloud Shell Editor, בוחרים בלחצן Web Preview ואז באפשרות Preview on port 8080.

הכותרת של Cloud Shell Editor עם הלחצן 'תצוגה מקדימה באינטרנט' מודגש

כדי לראות עדכונים לאפליקציית SQL Talk:

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

כדי להפסיק את האפליקציה SQL Talk:

  • בלוח הטרמינל של חלון Cloud Shell Editor, מקלידים Ctrl-C.

שינוי האפליקציה

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

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

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

הוספת הגדרה של קריאה לפונקציה

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

כדי להוסיף לאפליקציה קריאה לפונקציה חדשה:

  1. בחלון של Cloud Shell Editor, פותחים את קובץ הקוד sql-talk-app/app.py.
  2. אחרי ההצהרה על הפונקציה list_datasets_func, מוסיפים FunctionDeclaration חדש.

    list_jobs_func = FunctionDeclaration(
        name="list_jobs",
        description="Get a list of the 10 most recent database requests to help answer the user's question",
        parameters={
            "type": "object",
            "properties": {
      },
    },
    )
    
  3. מוסיפים את הפונקציה החדשה לאובייקט sql_query_tool.

    sql_query_tool = Tool(
        function_declarations=[
            sql_query_func,
            list_datasets_func,
            List_jobs_func,  # add this new function
            list_tables_func,
            get_table_func,
        ],
    )
    

כדי להוסיף קוד להרצת קריאת ה-API של הפונקציה החדשה:

  • בקובץ הקוד sql-talk-app/app.py, מוסיפים תנאי if חדש ל-loop‏ while function_calling_in_process:.

    if response.function_call.name == "list_datasets":
        ...
    
    # add this if clause for list_jobs function
    if response.function_call.name == "list_jobs":
        api_response = client.list_jobs(max_results=10)  # API request(s)
        api_response = str([job.job_id for job in api_response])
        api_requests_and_responses.append(
          [response.function_call.name,params, api_response])
    

מקורות מידע נוספים

למידע נוסף על פרויקט SQL Query, אפשר לעיין במאגר הקוד ובפוסט בבלוג של Cloud Community על פרויקט SQL Talk. אם אתם צריכים עזרה בפיתוח האפליקציה או רוצים לשתף פעולה עם מפתחים אחרים, כדאי לכם להיכנס לשרת Google Developers Community Discord ולפורום Google Cloud AI/ML. פלייליסט הסרטונים שלנו מכיל פרויקטים נוספים של Build with Google AI.