סוכני נתונים מאפשרים לכם לקיים אינטראקציה עם הנתונים במסד הנתונים באמצעות שפה יומיומית. אתם יכולים ליצור סוכני נתונים על ידי הגדרת הקשר עבור קבוצה של טבלאות במסד הנתונים. כך סוכני הנתונים יכולים לתרגם שאלות בשפה טבעית לשאילתות מדויקות לתרחישי השימוש הרלוונטיים.
ההקשר הוא מידע ספציפי למסד הנתונים שמאפשר למודל שפה גדול (LLM) ליצור שאילתות ברמת דיוק גבוהה. ההקשר כולל תבניות ופנים שעוזרים לסוכן להבין את סכימת מסד הנתונים ואת הלוגיקה העסקית של האפליקציות.
יש תמיכה במסדי הנתונים הבאים:
- AlloyDB ל-PostgreSQL
- Cloud SQL ל-MySQL
- Cloud SQL ל-PostgreSQL
- Spanner
מתי כדאי להשתמש בסוכני נתונים
אתם יכולים להשתמש בסוכני נתונים כדי ליצור אפליקציות של נתונים שימושיים לשיחות, שמתאימות לתרחישי שימוש כמו:
- אוטומציה של שירות לקוחות: טיפול בפניות בהיקף גדול כמו "Where is my order?" (איפה ההזמנה שלי?) או "What is my current balance?" (מה היתרה הנוכחית שלי?).
- עוזרים לקניות במסחר אלקטרוני: עוזרים למשתמשים להתמצא בקטלוגים גדולים של מוצרים באמצעות שאילתות בשפה טבעית, כמו "תציג לי נעלי ריצה במחיר של עד 100$".
- מערכות להזמנות: מאפשרות למשתמשים לבדוק את הזמינות ולהזמין פגישות, טיסות או שירותי הסעדה באמצעות ממשקי צ'אט.
- כלים לתפעול בשטח: מאפשרים לעובדים בנייד לשלוח שאילתות לגבי רמות המלאי, זמינות החלקים או פרטי כרטיס שירות בזמן אמת.
איך סוכני נתונים עובדים
כדי לבנות אפליקציות יעילות שמבוססות על סוכנים, הסוכן צריך להבין את ארגון הנתונים והלוגיקה העסקית שלכם. המידע הזה מועבר בצורה של הקשר של הסוכן.
אתם מגדירים את ההקשר של הסוכן בקבצים שמכילים אובייקטים של JSON לתבניות ולמאפיינים. אתם יוצרים את קובצי ההקשר האלה בעזרת Gemini CLI. לאחר מכן מעלים את קובץ ההקשר לסוכן נתונים שיוצרים ב Google Cloudמסוף. התהליך הזה מאפשר לסוכן ללמוד את הסכימה הספציפית של מסד הנתונים ואת הלוגיקה העסקית של האפליקציה.
קובץ ההקשר של הסוכן נראה כך:
{
"templates": [
{
"nl_query": "Count prague loan accounts",
"sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
"intent": "How many accounts associated with loans are located in the Prague region?",
"manifest": "How many accounts associated with loans are located in a given city?",
"parameterized": {
"parameterized_intent": "How many accounts associated with loans are located in $1",
"parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
}
}
],
"facets": [
{
"sql_snippet": "T.\"A11\" BETWEEN 6000 AND 10000",
"intent": "Average salary between 6000 and 10000",
"manifest": "Average salary between a given number and a given number",
"parameterized": {
"parameterized_intent": "Average salary between $1 and $2",
"parameterized_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
}
}
]
}
כשמשתמש קצה שואל שאלה בשפה טבעית, הסוכן נותן עדיפות להתאמת השאלה לתבניות ולפנים שנבדקו על ידי המפתח שבוחר את ההקשר. אחרי שהסוכן מזהה התאמה, הוא משתמש בתבנית השאילתה ובפילטרים שנבחרו כדי ליצור שאילתת מסד נתונים. הסוכן מריץ את השאילתה הזו על מסד הנתונים כדי להחזיר תוצאות מדויקות.
נקודת הקצה QueryData ב-Conversational Analytics API היא כלי מבוסס-סוכן שמאפשר שילוב תוכניתי עם האפליקציות שלכם כדי ליצור שאילתות SQL משאלות בשפה טבעית. באפליקציה שיש לה ממשק שיחה, צריך להשתמש בנקודת הקצה QueryData במסגרת שמנהלת את היסטוריית השיחות וההקשר שלהן.
הקשר של הנציג
ההקשר של הסוכן מורכב ממערך של תבניות ופנים בפורמט JSON, שמנחים את הסוכן בתרגום של שאלות בשפה טבעית לשאילתות עבור מסד נתונים ספציפי. הגדרת ההקשר מבטיחה יצירת SQL ברמת דיוק גבוהה לדפוסי שאילתות נפוצים.
כדי למקסם את הדיוק, חשוב לוודא שההקשר של הסוכן מדויק ומקיף מבחינת הכיסוי של שאילתות האפליקציה הצפויות.
אפשר ליצור סוכנים והקשר של סוכנים באזורים us-central1, us-east1, europe-west4 ו-asia-southeast1.
תבניות של שאילתות
תבניות של שאילתות הן אוסף של שאלות מייצגות בשפה טבעית עם שאילתות SQL תואמות. ההסברים האלה מספקים נימוק הצהרתי ליצירת SQL משפה טבעית.
אובייקט של תבנית שאילתה נראה כך:
{
"templates": [
{
"nl_query": "Count prague loan accounts",
"sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
"intent": "How many accounts associated with loans are located in the Prague region?",
"manifest": "How many accounts associated with loans are located in a given city?",
"parameterized": {
"parameterized_intent": "How many accounts associated with loans are located in $1",
"parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
}
}
]
},
...
הרכיבים העיקריים של אובייקט JSON של תבנית שאילתה הם:
nl_query: דוגמה לשאילתה בשפה טבעית שהסוכן לגישה לנתונים מטפל בה.-
sql: שאילתת ה-SQL של השאילתה בשפה טבעית. -
intent: המטרה או הייעוד של שאילתת השפה הטבעית. אם לא מגדירים את הערך הזה, ברירת המחדל היא השאילתה בשפה טבעית. -
manifest: צורה כללית של הכוונה שנוצרה באופן אוטומטי. -
parameterized_intent: טופס של הכוונה שנוצר אוטומטית באמצעות תבנית, עם ערכי ישויות שהוחלפו בפרמטרים. -
parameterized_sql: טופס של שאילתת SQL שנוצר אוטומטית על סמך תבנית, שתואם לכוונת המשתמש עם הפרמטרים.
מאפייני שאילתה
היבטי שאילתה הם קבוצה שנבחרה בקפידה של תנאים מייצגים בשפה טבעית עם פסקי דין תואמים ב-SQL. ההיבטים מנהלים את הסינון והתנאים, וכך מאפשרים לתבניות של שאילתות לבצע חיפושים עם היבטים.
אובייקט של היבט שאילתה נראה כך:
{
...
"facets": [
{
"sql_snippet": "T.\"A11\" BETWEEN 6000 AND 10000",
"intent": "Average salary between 6000 and 10000",
"manifest": "Average salary between a given number and a given number",
"parameterized": {
"parameterized_intent": "Average salary between $1 and $2",
"parameterized_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
}
}
]
}
הרכיבים העיקריים של אובייקט ה-JSON של ההיבט הם:
-
sql_snippet: קטע קוד SQL. -
intent: הסבר על פרדיקט ה-SQL. -
manifest: צורה כללית של הכוונה שנוצרה באופן אוטומטי. -
parameterized_intent: טופס של הכוונה שנוצר אוטומטית באמצעות תבנית, עם ערכי ישויות שהוחלפו בפרמטרים. -
parameterized_sql_snippet: טופס של sql_snippet שנוצר באופן אוטומטי על סמך תבנית, שתואם לכוונת המשתמש עם הפרמטרים.
מגבלות
יש מגבלות על סוכני נתונים:
- אין תמיכה ב-Cloud SQL ל-SQL Server.
- ההקשר של הסוכן עבור מסדי נתונים תומך רק בתבניות ובפילטרים.
- ההקשר של הסוכן למסדי נתונים משמש רק את נקודת הקצה
QueryDataב-Conversational Analytics API.