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

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

פרויקט SQL Talk הוא אפליקציית קוד פתוח שמשתמשת בטכנולוגיית בינה מלאכותית גנרטיבית כדי לענות על שאלות לגבי נתונים עסקיים. בפרויקט הזה נעשה שימוש ב-Gemini API ובתכונה Function Call (קריאה לפונקציות) כדי להפוך שאלות לגבי נתונים עסקיים לשאילתות 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. הפרויקט של SQL Talk שוכפל לסביבת הפיתוח של Google Cloud Shell Editor.

קבלת מזהה פרויקט ב-Cloud

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

כך מקשרים את 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, מנווטים לספריית הפרויקט ב-CloudShell 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, מנווטים לספריית הפרויקט של CloudShell 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 עם הדגשה של לחצן Web Preview

כדי להציג עדכונים ליישום SQL Talk:

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

כדי להפסיק את השימוש ביישום SQL Talk:

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

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

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

בתכונה קריאת פונקציות ב-Gemini API, יש תחביר ספציפי כדי להגדיר פונקציות שבהן המודל הגנרטיבי ישתמש כדי לענות על שאלות או לפתור בעיות. התחביר הזה לא צריך להיות זהה בדיוק לתחביר של קריאה בפועל ל-API. במקום זאת, משתמשים בתכונה קריאה לפונקציות כדי לאלץ את המודל הגנרטיבי לספק פרמטרים או קלט נתונים ספציפיים שתואמים לתחביר של הקריאות ל-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 חדש ללולאה 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 תוכלו למצוא בפלייליסט של הסרטונים.