בדיקת QueryData

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

מידע נוסף על קבוצות הקשר זמין במאמר סקירה כללית על קבוצות הקשר.

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

מוודאים שקבוצת הקשר כבר נוצרה וקובץ קבוצת הקשר הועלה לסוכן QueryData. מידע נוסף זמין במאמר ניהול של ערכות הקשר ב-AlloyDB Studio

בדיקת QueryData

כדי לבדוק QueryData, פועלים לפי השלבים הבאים:

  1. נכנסים לדף AlloyDB במסוף Google Cloud .

    מעבר אל AlloyDB

  2. בוחרים אשכול מהרשימה.

  3. בתפריט הניווט, לוחצים על AlloyDB Studio.

  4. נכנסים ל-Studio באמצעות אימות של ניהול זהויות והרשאות גישה (IAM).

  5. בחלונית Explorer, לוחצים על View actions (הצגת פעולות) לצד קבוצת ההקשר שבה אתם משתמשים.

  6. לוחצים על בדיקת הגדרת ההקשר.

  7. בעורך השאילתות, לוחצים על Generate SQL (יצירת SQL) כדי לפתוח את החלונית Help me code (עזרה בכתיבת קוד).

  8. מזינים שאלה בשפה טבעית בעורך כדי ליצור שאילתת SQL ולוחצים על יצירה.

  9. בודקים ששאילתת ה-SQL מדויקת.

הורדה ועדכון של קבוצת הקשרים

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

כדי להוריד ולעדכן קבוצת הקשרים, פועלים לפי השלבים הבאים:

  1. בחלונית Explorer, לוחצים על הצגת פעולות.
  2. לוחצים על הורדת קובץ ההקשר.
  3. פועלים לפי השלבים במאמר יצירת הקשרים באמצעות Gemini CLI כדי לעדכן את ההקשר עם עוד זוגות של שאילתות.
  4. בחלונית Explorer, לוחצים על View actions (הצגת פעולות) לצד קבוצת ההקשר שבה אתם משתמשים.
  5. לוחצים על עריכת קבוצת ההקשרים.
  6. בקטע העלאת קובץ של הגדרות הקשר, לוחצים על עיון ובוחרים את הקובץ המעודכן של הגדרות ההקשר.
  7. לוחצים על שמירה כדי לעדכן את קבוצת ההקשר.

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

איך מוצאים את המזהה של קבוצת ההקשרים

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

  1. נכנסים לדף AlloyDB במסוף Google Cloud .

    מעבר אל AlloyDB

  2. בוחרים אשכול מהרשימה.

  3. בתפריט הניווט, לוחצים על AlloyDB Studio.

  4. נכנסים ל-Studio באמצעות אימות של ניהול זהויות והרשאות גישה (IAM).

  5. בחלונית Explorer, לוחצים על View actions (הצגת פעולות) לצד קבוצת ההקשר שבה אתם משתמשים.

  6. לוחצים על עריכת קבוצת ההקשרים.

  7. שימו לב למזהה ההקשר במזהה קבוצת ההקשר. הפורמט של מזהה קבוצת ההקשר דומה ל-projects/data-agents-project/locations/us-east1/contextSets/bdf_pg_all_templates.

חיבור QueryData לאפליקציה

מגדירים את מזהה קבוצת ההקשר בקריאה לשיטה QueryData כדי לספק הקשר שנוצר למקורות נתונים של מסדי נתונים, כמו AlloyDB, ‏ Spanner, ‏ Cloud SQL ו-Cloud SQL ל-PostgreSQL. מידע נוסף זמין במאמר בנושא הגדרת הקשר של סוכן הנתונים למקורות נתונים של מסדי נתונים

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

דוגמה לבקשת QueryData עם הקשר שנוצר

בדוגמה הבאה מוצגת בקשת QueryData באמצעות מקור נתונים של מסד נתונים alloydb. השדה agent_context_reference.context_set_id משמש לקישור להקשר שנכתב מראש ומאוחסן במסד הנתונים.

{
  "parent": "projects/context-set-project/locations/us-central1",
  "prompt": "How many accounts in the Prague region are eligible for loans? A3 contains the data of region.",
  "context": {
    "datasource_references": [
      {
        "alloydb": {
          "database_reference": {
            "project_id": "context-set-project",
            "region": "us-central1",
            "cluster_id": "sqlgen-magic",
            "instance_id": "context-set-primary",
            "database_id": "financial"
          },
          "agent_context_reference": {
            "context_set_id": "projects/context-set-project/locations/us-east1/contextSets/bdf_pg_all_templates"
          }
        }
      }
    ]
  },
  "generation_options": {
    "generate_query_result": true,
    "generate_natural_language_answer": true,
    "generate_disambiguation_question": true,
    "generate_explanation": true
  }
}

גוף הבקשה מכיל את השדות הבאים:

  • prompt: השאלה בשפה טבעית ממשתמש הקצה.
  • context: מכיל מידע על מקורות הנתונים.
    • datasource_references: מציין את סוג מקור הנתונים.
      • alloydb: חובה כשמבצעים שאילתה במסד הנתונים. השדה הזה משתנה בהתאם למסד הנתונים שאתם שולחים אליו שאילתה.
        • database_reference: מציין מידע שקשור למופע של מסד הנתונים.
          • cluster_id: מזהה האשכול של מופע מסד הנתונים.
          • project_id: מזהה הפרויקט של מופע מסד הנתונים.
          • region: האזור של מופע AlloyDB.
          • instance_id: מזהה המכונה של מכונת AlloyDB.
          • database_id: מזהה מסד הנתונים.
        • agent_context_reference: קישורים להקשר שנוצר במסד הנתונים.
          • context_set_id: המזהה המלא של קבוצת ההקשר שמאוחסנת במסד הנתונים. לדוגמה, projects/context-set-project/locations/us-east1/contextSets/bdf_gsql_gemini_all_templates.
  • generationOptions: הגדרת סוג הפלט שיווצר.
    • generate_query_result: מגדירים את הערך ל-true כדי ליצור ולהחזיר את תוצאות השאילתה.
    • generate_natural_language_answer: אופציונלי. אם המדיניות מוגדרת כ-True, נוצרת תשובה בשפה טבעית.
    • generate_explanation: אופציונלי. אם המדיניות מוגדרת כ-true, נוצר הסבר לשאילתת ה-SQL.
    • generate_disambiguation_question: אופציונלי. אם המדיניות מוגדרת כ-True, המערכת יוצרת שאלות להסרת דו-משמעות אם השאילתה לא ברורה.

דוגמה לתגובה של QueryData

זוהי דוגמה לתשובה מוצלחת מקריאה ל-QueryData:

{
  "generated_query": "-- Count the number of accounts in Prague that are eligible for loans\nSELECT\n  COUNT(DISTINCT \"loans\".\"account_id\")\nFROM \"loans\"\nJOIN \"district\" -- Join based on district ID\n  ON \"loans\".\"district_id\" = \"district\".\"district_id\"\nWHERE\n  \"district\".\"A3\" = 'Prague'; -- Filter for the Prague region",
  "intent_explanation": "The question asks for the number of accounts eligible for loans in the Prague region. I need to join the `district` table with the `loans` table to filter by region and count the distinct accounts. The `A3` column in the `district` table contains the region information, and I'll filter for 'Prague'. The `loans` table contains information about loans, including the `account_id` and `district_id`. I will join these two tables on their respective district IDs.",
  "query_result": {
    "columns": [
      {
        "name": "count"
      }
    ],
    "rows": [
      {
        "values": [
          {
            "value": "2"
          }
        ]
      }
    ],
    "total_row_count": 1
  },
  "natural_language_answer": "There are 2 accounts in Prague that are eligible for loans."
}

המאמרים הבאים