ניהול פשוט יותר של נתונים ראשיים: התאמה & שילוב עם בינה מלאכותית גנרטיבית

1. סקירה כללית

מהו ניהול נתונים ראשיים?

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

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

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

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

הטמעת מערכת MDM חזקה חיונית לקבלת החלטות אסטרטגיות, אבל היא יכולה להיות מורכבת ותובעת משאבים רבים. כאן נכנסת לתמונה היכולת המהפכנית של AI גנרטיבי, במיוחד מודלים כמו Gemini 1.0 Pro,‏ Gemini 1.0 Pro Vision ו-Gemini 1.5 Pro.

2. מטרה

בקודלאב הזה נסביר איך Gemini 1.0 Pro מפשט את האפליקציות לניהול נתוני מאסטר, כמו העשרה וחיסול כפילויות, עבור הנתונים של citibike_stations שזמינים במערך הנתונים הציבורי של BigQuery.

מה עליכם להשתמש בו

  1. מערך הנתונים הציבורי bigquery-public-data.new_york_citibike ב-BigQuery.
  2. קריאה לפונקציה של Gemini (פונקציית Java Cloud שמקבלת את פרטי הכתובת באמצעות Reverse Geocoding API עבור הקואורדינטות שזמינות בנתונים של citibike_stations).
  3. Vertex AI Embeddings API ו-Vector Search ב-BigQuery כדי לזהות כפילויות.

מה תפַתחו

  1. תיצורו מערך נתונים ב-BigQuery לצורך התרחיש לדוגמה. במערך הנתונים הזה תיצרו טבלת נחיתה עם נתונים מטבלת מערך הנתונים הציבורי bigquery-public-data.new_york_citibike.citibike_stations.
  2. תפרסו את הפונקציה של Cloud Functions שכוללת את Gemini Function Calling לצורך סטנדרטיזציה של כתובות.
  3. נתוני הכתובות המשופרים יישמרו בטבלאות של דפי הנחיתה (משני המקורות שסופקו להדגמה הזו).
  4. עליכם להפעיל את Vertex AI Embeddings API מ-BigQuery על נתוני הכתובות.
  5. נעשה שימוש בחיפוש וקטורים ב-BigQuery כדי לזהות רשומות כפולות.

התרשים הבא מייצג את זרימת הנתונים והשלבים שקשורים להטמעה.

סקירה כללית של תרחיש לדוגמה

3. דרישות

  • דפדפן, כמו Chrome או Firefox
  • פרויקט ב-Google Cloud שבו החיוב מופעל.

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

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

תמונה של לחצן הפעלת Cloud Shell

  1. אחרי שמתחברים ל-Cloud Shell, בודקים שכבר בוצע אימות ושהמזהה של הפרויקט מוגדר כפרויקט באמצעות הפקודה הבאה:
gcloud auth list
  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה gcloud מכירה את הפרויקט.
gcloud config list project
  1. אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
  1. עוברים אל Gemini for Google Cloud Marketplace כדי להפעיל את ה-API. אפשר גם להשתמש בפקודה הבאה במסוף של Cloud Shell:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
  1. מוודאים שממשקי ה-API של BigQuery,‏ BigQuery Connection,‏ Cloud Function,‏ Cloud Run,‏ Vertex AI ו-Cloud Build מופעלים. האפשרות החלופית לפקודה gcloud היא דרך מסוף באמצעות הקישור הזה.

במסמכי העזרה מפורטות הפקודות של gcloud והשימוש בהן.

5. יצירת מערך נתונים וחיבור חיצוני ב-BigQuery

נתחיל ביצירת מערך נתונים וקישור למשאב ב-Cloud.

מערך נתונים ב-BigQuery הוא מאגר לכל הטבלאות והאובייקטים של האפליקציה.

כדי ליצור מערך נתונים:

  1. נכנסים לדף BigQuery במסוף Google Cloud.
  2. בחלונית Explorer, בוחרים את הפרויקט שבו רוצים ליצור את מערך הנתונים.
  3. מרחיבים את האפשרות Actions (סמל הנקודות האנכיות) ולוחצים על Create dataset.

תמונה של תפריט הפעולות והאפשרות &#39;יצירת מערך נתונים&#39;

  1. מזינים mdm_gemini בשדה Dataset ID.
  2. מגדירים את סוג המיקום כ-Multi-region ומקבלים את ערך ברירת המחדל, שהוא US(multiple regions in United States.
  3. לוחצים על Create dataset.
  4. בודקים ש-Dataset נוצר ורשום במזהה הפרויקט בחלונית Explorer.

חיבור ל-BigQuery נדרש כדי לבצע אינטראקציה עם Cloud Function. כדי ליצור פונקציה מרוחקת, צריך ליצור חיבור ל-BigQuery. בסדנת הקוד הזו נשתמש בחיבור BigLake כדי לגשת למודל מ-BigQuery דרך Cloud Function. חיבורי BigLake עוזרים לחבר את מקור הנתונים החיצוני תוך שמירה על אבטחה ובקרת גישה מפורטת של BigQuery, במקרה שלנו Vertex AI Gemini Pro API.

כדי ליצור את החיבור ל-BigLake:

  1. לוחצים על Add בחלונית Explorer בדף BigQuery.

מסוף BigQuery עם לחצן ההוספה מודגש להוספת חיבור חיצוני

  1. לוחצים על חיבורים למקורות נתונים חיצוניים.
  2. ברשימת סוגי החיבורים, בוחרים באפשרות Vertex AI remote models, remote functions and BigLake (Cloud Resource).
  3. בשדה Connection ID, מזינים את שם החיבור כ-gemini-bq-conn.
  4. מגדירים את סוג המיקום כ-Multi-region ומקבלים את ערך ברירת המחדל, שהוא US(multiple regions in United States..
  5. לוחצים על Create connection.
  6. לוחצים על Go to connection (מעבר לחיבור) ומעתיקים את מזהה חשבון השירות בחלונית Connection info (פרטי החיבור).

צילום מסך של פרטי החיבור

  1. עוברים לדף IAM ואדמין ולוחצים על הענקת גישה.
  2. מדביקים את מזהה חשבון השירות בשדה New principles.
  3. בוחרים את התפקיד Vertex AI user מרשימת התפקידים ולוחצים על Save.

הענקת גישה לצילום מסך של חשבון שירות

מערך הנתונים והחיבור ל-BigQuery נוצרו.

6. פריסת קריאה לפונקציות של Gemini (פונקציית Java ב-Cloud)

כדי לפרוס את Cloud Function ב-Java שכוללת את Gemini Function Calling, פועלים לפי השלבים הבאים:

  1. משכפלים את המאגר ב-GitHub מהטרמינל של Cloud Shell באמצעות הפקודה הבאה:
git clone https://github.com/AbiramiSukumaran/GeminiFunctionCalling
  1. מחליפים את ה-placeholders YOUR_API_KEY ו-YOUR_PROJECT_ID בערכים שלכם.

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

  1. בטרמינל של Cloud Shell, עוברים לספריית הפרויקט החדשה שהועתק (GeminiFunctionCalling) ומריצים את ההצהרה הבאה כדי ליצור ולפרוס את פונקציית Cloud:
gcloud functions deploy gemini-fn-calling --gen2 --region=us-central1 --runtime=java11 --source=. --entry-point=cloudcode.helloworld.HelloWorld --trigger-http

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

הפלט הוא כתובת URL של REST בפורמט הבא:

https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-fn-calling

  1. כדי לבדוק את הפונקציה הזו ב-Cloud Functions, מריצים את הפקודה הבאה במסוף:
gcloud functions call gemini-fn-calling --region=us-central1 --gen2 --data '{"calls":[["40.714224,-73.961452"]]}'

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

 '{"replies":["{ \"DOOR_NUMBER\": \"277\", \"STREET_ADDRESS\": \"Bedford Ave\", \"AREA\":
 null, \"CITY\": \"Brooklyn\", \"TOWN\": null, \"COUNTY\": \"Kings County\", \"STATE\":
 \"NY\", \"COUNTRY\": \"USA\", \"ZIPCODE\": \"11211\", \"LANDMARK\": null}}```"]}'

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

  1. מריצים את ה-DDL הבא מ-BigQuery כדי ליצור פונקציה מרוחקת שמפעילה את Cloud Function הפרוסה:
CREATE OR REPLACE FUNCTION
 `mdm_gemini.MDM_GEMINI` (latlng STRING) RETURNS STRING
 REMOTE WITH CONNECTION `us.gemini-bq-conn`
 OPTIONS (
   endpoint = 'https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-fn-calling', max_batching_rows = 1
 );

שאילתת בדיקה לשימוש בפונקציה החדשה מרחוק שנוצרה:

SELECT mdm_gemini.MDM_GEMINI(latlong) from mdm_gemini.CITIBIKE_STATIONS limit 1;

אם שאילתת הבדיקה שמשתמשת בפונקציה החדשה מרחוק שנוצרה ב-BigQuery נכשלת בגלל בעיה בהרשאות של Cloud Functions, עוברים אל Cloud Functions במסוף Google Cloud ומאתרים את פונקציית Cloud Functions שנפרסה בשם gemini-fn-calling. עוברים לכרטיסייה 'הרשאות', מוסיפים את חשבון המשתמש כ-'allUsers' ומעניקים את התפקיד 'Cloud Functions Invoker' כדי לוודא שלכל המשתמשים תהיה גישה ל-Cloud Functions (רק כי זוהי אפליקציית הדגמה).

7. ניסיון לפתור את הבעיה בדרך אחרת

אם מסיבה כלשהי אין לכם את המפתח API_KEY הנדרש לשיטה של קריאה לפונקציית ה-Reverse Geocoding, או אם לא פרסתם את Cloud Function, תוכלו לבצע את הפעולות הבאות כחלופה:

  1. מורידים את הקובץ CITIBIKE_STATIONS.csv מהמאגר לתיקיית הפרויקט ב-Cloud Shell, ועוברים לתיקייה הזו.
  2. מייצאים את הנתונים מקובץ ה-CSV למערך הנתונים החדש ב-BigQuery‏ mdm_gemini באמצעות הפקודה הבאה במסוף Cloud Shell:
bq load --source_format=CSV --skip_leading_rows=1 mdm_gemini.CITIBIKE_STATIONS ./CITIBIKE_STATIONS.csv \ name:string,latlng:string,capacity:numeric,num_bikes_available:numeric,num_docks_available:numeric,last_reported:timestamp,full_address_string:string

8. יצירת טבלה והעשרת נתוני הכתובות

שלב 1: יוצרים את הטבלה

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

אם לא השתמשתם בפתרון החלופי, מריצים את ה-DDL הבא בעורך SQL של BigQuery:

CREATE TABLE mdm_gemini.CITIBIKE_STATIONS as (
select  name, latitude || ',' || longitude as latlong, capacity, num_bikes_available, num_docks_available,last_reported,
'' as full_address_string
from bigquery-public-data.new_york_citibike.citibike_stations) ;

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

  • דווחו בשנת 2024
  • מספר האופניים הזמינים > 0
  • קיבולת > 100

מריצים את השאילתה הבאה:

update `mdm_gemini.CITIBIKE_STATIONS`
set full_address_string = `mdm_gemini.MDM_GEMINI`(latlong)
where EXTRACT(YEAR FROM last_reported) = 2024 and num_bikes_available > 0 and capacity > 100;

שלב 2: יוצרים מקור שני לנתוני המיקום של תחנות האופניים

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

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

כדי ליצור את המקור השני של נתוני המיקום עם שני רשומות, מריצים את הוראות ה-DDL הבאות ב-BigQuery SQL Editor. נקרא לטבלה הזו mdm_gemini.CITIBIKE_STATIONS_SOURCE2 ונוסיף לה שתי רשומות.

CREATE TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE2 (name STRING(55), address STRING(1000), embeddings_src ARRAY<FLOAT64>);

insert into mdm_gemini.CITIBIKE_STATIONS_SOURCE2 VALUES ('Location broadway and 29','{ "DOOR_NUMBER": "1593", "STREET_ADDRESS": "Broadway", "AREA": null, "CITY": "New York", "TOWN": null, "COUNTY": "New York County", "STATE": "NY", "COUNTRY": "USA", "ZIPCODE": "10019", "LANDMARK": null}', null);

insert into mdm_gemini.CITIBIKE_STATIONS_SOURCE2 VALUES ('Allen St & Hester','{ "DOOR_NUMBER": "36", "STREET_ADDRESS": "Allen St", "AREA": null, "CITY": "New York", "TOWN": null, "COUNTY": "New York County", "STATE": "NY", "COUNTRY": "USA", "ZIPCODE": "10002", "LANDMARK": null}', null);

9. יצירת הטמעות (embeddings) לנתוני כתובות

הטמעות (embeddings) הן וקטורים מספריים בממדים גבוהים שמייצגים ישות נתונה, כמו קטע טקסט או קובץ אודיו. מודלים של למידת מכונה (ML) משתמשים בהטמעות (embeddings) כדי לקודד סמנטיקה לגבי ישויות כאלה, וכך קל יותר להסיק מסקנות לגביהן ולהשוות ביניהן. לדוגמה, פעולה נפוצה במודלים של קיבוץ, סיווג והמלצות היא למדוד את המרחק בין וקטורים במרחב הטמעה כדי למצוא פריטים שדומים ביותר מבחינה סמנטית. באמצעות Vertex AI text-embeddings API אפשר ליצור הטמעת טקסט באמצעות AI גנרטיבי ב-Vertex AI. הטמעות טקסט הן ייצוגים מספריים של טקסט שמתעדים את הקשרים בין מילים וביטויים. כאן אפשר לקרוא מידע נוסף על הטמעת טקסט ב-Vertex AI.

  1. מריצים את ה-DDL הבא כדי ליצור מודל מרוחק ל-Vertex AI text embeddings API:
CREATE OR REPLACE MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS (ENDPOINT = 'textembedding-gecko@latest');
  1. עכשיו, אחרי שמודל הטמעת הנתונים המרוחק מוכן, נייצר הטמעות נתונים למקור הראשון ונשמור אותן בטבלה באמצעות השאילתה הבאה:
CREATE TABLE `mdm_gemini.CITIBIKE_STATIONS_SOURCE1` AS (
SELECT *
FROM ML.GENERATE_EMBEDDING(
 MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`,
 ( select name, full_address_string as content from `mdm_gemini.CITIBIKE_STATIONS`
 where full_address_string is not null )
  )
);

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

  1. כדי ליצור הטמעות (embeddings) לנתוני כתובות בטבלה CITIBIKE_STATIONS_SOURCE2,מריצים את השאילתה הבאה:
update `mdm_gemini.CITIBIKE_STATIONS_SOURCE2` a set embeddings_src =
(
SELECT  ml_generate_embedding_result
FROM ML.GENERATE_EMBEDDING(
 MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`,
 ( select name, address as content from `mdm_gemini.CITIBIKE_STATIONS_SOURCE2` ))
where name = a.name) where name is not null;

הפעולה הזו אמורה ליצור הטמעות (embeddings) למקור השני. שימו לב שיצרנו את השדה embeddings באותה טבלה CITIBIKE_STATIONS_SOURCE2.

  1. כדי להציג חזותית את הטמעות הנתונים שנוצרו לטבלאות 1 ו-2 של נתוני המקור, מריצים את השאילתה הבאה:
select name,address,embeddings_src from `mdm_gemini.CITIBIKE_STATIONS_SOURCE2`;
select name,content,ml_generate_embedding_result from `mdm_gemini.CITIBIKE_STATIONS_SOURCE1`;

עכשיו נבצע חיפוש וקטורים כדי לזהות כפילויות.

10. הרצת חיפוש וקטור לזיהוי כתובות כפולות שסומנו

בשלב הזה, מחפשים את שתי הטמעות הנתונים המובילות שתואמות לכל שורה של נתונים בעמודה embeddings_src בטבלה mdm_gemini.CITIBIKE_STATIONS_SOURCE2 בעמודה ml_generate_embedding_result של הטמעות הכתובות בטבלה mdm_gemini.CITIBIKE_STATIONS_SOURCE1.

כדי לעשות זאת, מריצים את השאילתה הבאה:

select query.name name1,base.name name2,
/* (select address from mdm_gemini.CITIBIKE_STATIONS_SOURCE2 where name = query.name) content1, base.content content2, */
distance
from VECTOR_SEARCH(
 TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE1,
 'ml_generate_embedding_result',
 (SELECT * FROM mdm_gemini.CITIBIKE_STATIONS_SOURCE2),
 'embeddings_src',
 top_k => 2
) where query.name <> base.name
order by distance desc;

הטבלה שאנחנו שולחים אליה שאילתה: mdm_gemini.CITIBIKE_STATIONS_SOURCE1 בשדה ml_generate_embedding_result

הטבלה שאנחנו משתמשים בה כבסיס: mdm_gemini.CITIBIKE_STATIONS_SOURCE2 בשדה embeddings_src

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

distance_type: קובע את סוג המדד שבו יש להשתמש כדי לחשב את המרחק בין שני וקטורים. סוגי המרחק הנתמכים הם אוקלידאי וקוסינוס. ברירת המחדל היא Euclidean.

התוצאה של השאילתה היא:

קבוצת תוצאות

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

נגדיר את distance_type כ-Cosine באמצעות השאילתה הבאה:

select query.name name1,base.name name2,
/* (select address from mdm_gemini.CITIBIKE_STATIONS_SOURCE2 where name = query.name) content1, base.content content2, */
distance
from VECTOR_SEARCH(
 TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE1,
 'ml_generate_embedding_result',
 (SELECT * FROM mdm_gemini.CITIBIKE_STATIONS_SOURCE2),
 'embeddings_src',
 top_k => 2,distance_type => 'COSINE'
) where query.name <> base.name
order by distance desc;

התוצאה של השאילתה היא:

קבוצת תוצאות 2

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

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

מידע נוסף על MDM וטיפים להבנת ההבדל בין מודלים של אוקלידס למודלים של קוסינוס ופתרונות יישומיים שלהם זמין בבלוג.

11. הסרת המשאבים

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

  1. נכנסים לדף Manage resources במסוף Google Cloud.
  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
  4. אם רוצים לשמור את הפרויקט, מדלגים על השלבים שלמעלה ומוחקים את Cloud Function. לשם כך, עוברים אל Cloud Functions, מסמנים את הפונקציה שרוצים למחוק ברשימת הפונקציות ולוחצים על Delete.

12. מזל טוב

מעולה! הראיתם את היכולות של Gemini 1.0 Pro ו-Function Calling בהמרת כמה פעילויות של MDM ליכולות AI גנרטיביות פשוטות, חזקות, ודטרמיניסטיות ואמינות. עכשיו, אחרי שסיפקנו לכם את המידע הדרוש, אתם יכולים לזהות דרכים אחרות להטמיע את אותו תרחיש לדוגמה או פונקציות אחרות של MDM. האם יש מערכי נתונים שאפשר לאמת, פערי מידע שאפשר למלא או משימות שאפשר להפוך לאוטומטיות באמצעות קריאות מובנות שמוטמעות בתשובות של ה-AI הגנרטיבי? הנחיות מפורטות יותר זמינות במסמכים של Vertex AI, BigQuery Remote Functions, Cloud Functions, Embeddings ו-Vector Search. זהו המאגר ב-GitHub של הפרויקט. נשמח לשמוע מה פיתחתם בעזרת הלמידה הזו.