1. מבוא
אתם אוהבים להתעמק בספרים אבל אתם מתקשים לבחור מתוך המבחר העצום? נניח שיש אפליקציה מבוססת AI שלא רק ממליצה על הספר המושלם, אלא גם מציעה סיכום תמציתי על סמך הז'אנר שבחרתם, ונותנת לכם הצצה למהות הספר. ב-codelab הזה אראה לכם איך ליצור אפליקציה כזו באמצעות BigQuery, Gemini ו-Cloud Functions שמופעל על ידי Gemini.
סקירה כללית של הפרויקט
התרחיש לדוגמה שלנו מתמקד ב-4 הרכיבים העיקריים הבאים:
- ספריית נתונים: מערך הנתונים הציבורי העצום של BigQuery של ספרים בארכיון האינטרנט ישמש כקטלוג הספרים המקיף שלנו.
- מנוע סיכום מבוסס-AI: Google Cloud Functions, עם מודל השפה Gemini 1.0 Pro, יפיק סיכומים מעמיקים שמותאמים לבקשות של המשתמשים.
- שילוב עם BigQuery: פונקציה מרוחקת ב-BigQuery שמפעילה את Cloud Function שלנו כדי לספק סיכומים ונושאים של ספרים על פי דרישה.
- ממשק משתמש: אפליקציית אינטרנט שמתארחת ב-Cloud Run ותציע למשתמשים אפליקציית אינטרנט כדי להציג את התוצאות.
נחלק את ההטמעה ל-3 Codelabs:
Codelab 1: שימוש ב-Gemini כדי ליצור Cloud Function ב-Java לאפליקציית Gemini.
Codelab 2:אפשר להשתמש ב-Gemini כדי לפתח אפליקציות SQL באמצעות BigQuery ו-AI גנרטיבי.
Codelab 3:אפשר להשתמש ב-Gemini כדי ליצור אפליקציית אינטרנט מסוג Java Spring Boot שמקיימת אינטראקציה עם BigQuery.
2. שימוש ב-Gemini ליצירת אפליקציות SQL באמצעות BigQuery ובינה מלאכותית גנרטיבית
מה תפַתחו
תיצורו
- מודל מרוחק ב-BigQuery שמפעיל את נקודת הקצה text-bison-32k של Vertex AI כדי לזהות את הז'אנר (או הנושא) של הספר מרשימת מילות מפתח מופרדות ב-"" בטבלה.
- פונקציה מרחוק ב-BigQuery שתפעיל מרחוק את Cloud Function עם ה-AI הגנרטיבי שנפרס.
- אפשר להשתמש במודל ובפונקציה המרוחקת כדי לסכם את העיצוב והטקסט של ספר באמצעות שאילתות SQL ולכתוב את התוצאות בטבלה חדשה במערך הנתונים של מדף הספרים.
- את השלבים האלה תבצעו בעזרת Gemini
3. דרישות
- דפדפן, כמו Chrome או Firefox
- פרויקט ב-Google Cloud שבו החיוב מופעל
- מומלץ לפרוס את Cloud Function כחלק מחלק 1 של קודי ה-codelab שימוש ב-Gemini ליצירת פונקציית Java Cloud לאפליקציית Gemini.
- מותנה: אם יש לכם כרגע גישה לקישור לקבלת קרדיטים בחינם ב-Google Cloud (יכול להיות שהקישור הוקצה לכם על ידי מארגן הסדנה), עליכם לבצע מראש את השלבים להפעלת הקרדיטים ויצירת הפרויקט לפי ההוראות שבדף הבא. אם אין לך את הקישור הזה, אפשר להמשיך בביצוע השלבים הבאים לדרישות המוקדמות לפרויקט ולחיוב:
יצירת הפרויקט
אם כבר הפעלתם חשבון לחיוב ויצרתם פרויקט באמצעות הקישור שצוין בשלב המותנה שלמעלה, אתם יכולים לדלג על השלבים הבאים.
- בדף לבחירת הפרויקט במסוף Google Cloud, בוחרים או יוצרים פרויקט ב-Google Cloud.
- הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
הפעלת Cloud Shell
- נשתמש ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud ומגיעה עם bq טעון מראש:
במסוף Cloud, לוחצים על Activate Cloud Shell בפינה הימנית העליונה:
- אחרי שתתחברו ל-Cloud Shell, אמורה להופיע הודעה על כך שהאימות כבר בוצע והפרויקט כבר מוגדר לפי מזהה הפרויקט שלכם. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהאימות בוצע:
רשימת auth של gcloud
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה של gcloud יודעת על הפרויקט שלכם.
gcloud config list project
- אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
במסמכי העזרה מפורטות הפקודות של gcloud והשימוש בהן.
4. הפעלת Gemini ל-Google Cloud וממשקי ה-API הנדרשים
הפעלת Gemini
- כדי להפעיל את ה-API, עוברים אל Marketplace של Gemini ל-Google Cloud. אפשר גם להשתמש בפקודה הבאה:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
- נכנסים לדף של Gemini ולוחצים על 'התחלת צ'אט'.
הפעלת ממשקי API נחוצים אחרים
איך עושים את זה? בואו נשאל את Gemini, נכון? אבל לפני כן, חשוב לזכור:
הערה: LLM הם לא גורמים חד-משמעיים. לכן, כשתנסו את ההנחיות האלה, יכול להיות שהתשובה שתתקבל תהיה שונה מהתשובות בצילום המסך שלי.
כדי לעבור למסוף הצ'אט של Gemini, לוחצים על הסמל 'פתיחת Gemini' בפינה השמאלית העליונה של מסוף Google Cloud, ליד סרגל החיפוש.
מקלידים את השאלה הבאה בקטע 'הזנת הנחיה כאן':
איך מפעילים את ממשקי ה-API של BigQuery ו-Vertex AI באמצעות הפקודה gcloud?
התגובה תהיה כמו בתמונה הבאה:
מעתיקים את הקטע הזה (אפשר להשתמש בסמל ההעתקה בחלק העליון של קטע הפקודה) ומריצים אותו במסוף Cloud Shell כדי להפעיל את השירותים המתאימים:
- bigquery.googleapis.com
- aiplatform.googleapis.com
5. סקירה של מערך הנתונים הציבורי ב-BigQuery עם נתוני ספרים
בתור התחלה, כדאי להכיר את מערך הנתונים הציבורי של BigQuery שמכיל מידע על מספר ספרים שנמצאים בארכיון האינטרנט.
מערך הנתונים הציבורי הזה נמצא בחלונית הניתוח של BigQuery. הוא מופיע בצד ימין כשנכנסים למסוף BigQuery.
מקלידים 'gdelt-bq' או 'internetarchivebooks' בסרגל החיפוש ולוחצים על 'חיפוש בכל הפרויקטים'. מרחיבים את התוצאה ומסמנים בכוכב ספרים בארכיון האינטרנט, כפי שמוצג בתמונה הבאה:
.
מרחיבים את מערך הנתונים, לוחצים על gdelt-bq.internetArchivebooks ומעיינים בתצוגה מקדימה של הנתונים בטבלה של שנת 1920. הטבלה הזו כוללת ספרים משנת 1920 שהועברו לארכיון.
כדי להציג את הסכימה שבה נשתמש בקטעים הבאים, מריצים את השאילתה הבאה:
select * from `gdelt-bq.internetarchivebooks.1920` limit 5;
נשתמש בשלושת השדות הבאים ב-codelab:
- BookMeta_Title (שם)
- עיצובים (העיצובים מופרדים באמצעות ';')
- BookMeta_FullText (הטקסט המלא של הספר)
6. ליצור מערך נתונים חדש ב-BigQuery שנקרא מדף ספרים
אנחנו רוצים ליצור מערך נתונים בפרויקט כדי לאחסן בו את כל אובייקטי מסד הנתונים והניתוח שאנחנו ניצור בסדנת העבודה הזו. נשאל את Gemini איך יוצרים מערך נתונים ב-BigQuery. השיחה ב-Gemini אמורה להיות פתוחה כבר בכרטיסייה אחרת בדפדפן, מהשלב שבו הפעלתם את ממשקי ה-API. אם לא, אפשר לעשות זאת עכשיו. נכנסים למסוף Google Cloud בכתובת https://console.cloud.google.com. סמל Gemini אמור להופיע לצד סרגל החיפוש בחלק העליון. לוחצים עליו והצ'אט נפתח.
מזינים את ההנחיה כפי שמוצג בהמשך.
זהו ההנחיה שלי:
How to create a BigQuery dataset?
זו התשובה:
נבצע את השלבים שמפורטים בתשובה כדי ליצור מערך נתונים בשם 'bookshelf' בפרויקט הפעיל.
כדי ליצור מערך נתונים ב-BigQuery:
- נכנסים לדף BigQuery במסוף Google Cloud.
- בחלונית Explorer, לוחצים על מזהה הפרויקט.
- לוחצים על 'יצירת מערך נתונים' (האפשרות הזו אמורה להופיע ברשימת האפשרויות שמופיעות כשלוחצים על 3 הנקודות לצד מזהה הפרויקט).
- מזינים את שם מערך הנתונים בתור 'bookshelf'.
- מגדירים את המיקום בתור US(Multi-region)".
- את שלבים 3, 4, 5 ו-6 בתשובה, משאירים את אפשרויות ברירת המחדל.
- לוחצים על CREATE DATASET.
המערכת תיצור את מערך הנתונים והוא יופיע בחלונית Explorer. מערך הנתונים bookshelf נראה כך:
7. יצירת מודל מרחוק להפעלת Vertex AI LLM (text-bison-32k)
בשלב הבא, צריך ליצור מודל ב-BigQuery שמפעיל את מודל Vertex AI 'text-bison-32k'. המודל יעזור לזהות נושא משותף, הקשר לספר, מתוך רשימת מילות המפתח של כל ספר במערך הנתונים.
נשאל את Gemini את השאלה הזו. כדי לעשות זאת, עוברים לכרטיסייה שבה מסוף הצ'אט של Gemini פתוח ומקלידים את ההנחיה הבאה:
איך תקשרו בין BigQuery ל-Vertex AI כדי לקרוא לנקודת הקצה של LLM (text-bison-32k) ב-BigQuery?
התגובה אמורה להיראות כך:
התגובה כוללת מידע מדויק, כמו השלבים שכוללים שימוש בהצהרת CREATE MODEL, שימוש בחיבור ל-BigQuery והגדרת נקודת הקצה. משפט השאילתה מדויק מבחינתי, אבל זה לא אומר שתקבלו את אותה תוצאה בדיוק. מכיוון שמדובר במודל שפה גדול, יכול להיות שתקבלו תשובות בפורמט, בנפח ובעומק שונים. אם לא רואים את כל הפרטים שקיבלתי, אפשר להמשיך את הצ'אט ולשלוח שאלות נוספות. לדוגמה: נותנים פרטים נוספים על יצירת משאב החיבור, על הסיבה לכך שמאפיין החיבור חסר או על האופן שבו מתחברים מ-BigQuery ל-Vertex AI וכו'.
הנה דוגמה להנחיה לפעולה נוספת (יש להשתמש בה רק אם אתם צריכים לבצע פעולה נוספת. אם התשובה הראשונה שקיבלת מספיקה, אפשר להמשיך בלי לבצע פעולה נוספת):
What about the connection? How will I connect from BigQuery to Vertex AI?
זו התשובה:
כדי ליצור חיבור ל-BigQuery, צריך לבצע את השלבים מהתשובה:
- עוברים למסוף BigQuery.
- בחלונית של BigQuery Explorer, לוחצים על הלחצן '+הוספה' ואז על 'חיבורים למקורות נתונים חיצוניים'.
- בשלב הזה תתבקשו להפעיל את BigQuery Connection API. לוחצים על ENABLE API:
- לוחצים על 'חיבורים למקורות נתונים חיצוניים', והצגה של 'מקור נתונים חיצוני' אמורה להופיע כפי שמופיעה בהמשך . ברשימת המקורות החיצוניים, בוחרים את המקור Vertex AI.
- מקלידים מזהה חיבור (זה יכול להיות מזהה לבחירתכם, אבל בינתיים מגדירים אותו כ-bq-vx) ואת האזור (במספר אזורים, 'US').
- לוחצים על 'יצירת חיבור'.
- אחרי שיוצרים את החיבור, לוחצים על 'מעבר לחיבור'.
- בדף פרטי החיבור, מעתיקים את מזהה חשבון השירות כי נשתמש במזהה הזה בשלבים הבאים.
- עכשיו, אחרי שיצרנו את החיבור, נקצה הרשאות למזהה חשבון השירות הזה שהועתקנו כדי שנוכל להשתמש ב-Vertex AI.
- בדף של מסוף Google Cloud, פותחים את Google Cloud IAM או עוברים לקישור.
- לוחצים על Grant Access בקטע View by Principals.
- בתיבת הדו-שיח Grant Access (הענקת גישה), מזינים את מזהה חשבון השירות שציינו קודם לכן בתיבת הטקסט New principles (חשבונות משתמשים חדשים).
- מגדירים את התפקיד כ-Vertex AI User.
נוצר החיבור הנדרש. ההרשאה הנדרשת הוענקה לחשבון המשתמש (חשבון השירות של החיבור) כדי להשתמש ב-Vertex AI מ-BigQuery.
מריצים את ההצהרה הבאה של DDL(שפת הגדרת נתונים) שמייצגת את היצירה של אובייקט DB, במקרה הזה MODEL, בעורך השאילתות של BigQuery.
CREATE OR REPLACE MODEL bookshelf.llm_model
REMOTE WITH CONNECTION `us.bq-vx`
OPTIONS (ENDPOINT = 'text-bison-32k');
משהו שתוכלו לנסות כחלופה לשלב הקודם, תוכלו לבקש מ-Gemini להציע שאילתה כדי ליצור את המודל להפעלת המודל "text-bison-32k".
הערה: אם השתמשתם בשם אחר לחיבור, מחליפים את us.bq-vx בשם הזה בהצהרת ה-DDL הקודמת. השאילתה הזו יוצרת את המודל המרוחק במערך הנתונים, 'מדף ספרים', שיצרנו קודם.
8. יצירת פונקציה מרחוק שמפעילה את Cloud Function ב-Java
עכשיו ניצור פונקציה מרוחקת ב-BigQuery באמצעות הפונקציה של Java Cloud Functions שיצרנו ב-codelab 1 בסדרה הזו, כדי להטמיע את המודל של Gemini. הפונקציה מרחוק הזו תשמש לסיכום תוכן הספר.
הערה: אם לא השתתפתם בcodelab הזה או לא פרסתם את Cloud Function הזו, אתם יכולים לדלג על השלב הזה ולעבור לנושא הבא (סיכום הנושא של הספרים באמצעות המודל המרוחק).
עוברים למסוף BigQuery ומדביקים את משפט ה-DDL הבא בעורך השאילתות (אפשר ליצור כרטיסייה חדשה בעורך השאילתות בלחיצה על הלחצן +)
בהמשך מופיע ה-DDL שאפשר להעתיק. חשוב לזכור להחליף את נקודת הקצה בנקודת הקצה של הפונקציה של Cloud Functions שנפרסה (נוצרה באמצעות Codelab 1). אם אין לכם נקודת קצה, תוכלו להחליף את התווים הממוזערים ב-DDL שבהמשך ב-abis-345004 למטרות הדגמה.
CREATE OR REPLACE FUNCTION
`bookshelf.GEMINI_REMOTE_CALL` (context STRING) RETURNS STRING
REMOTE WITH CONNECTION `us.bq-vx`
OPTIONS (
endpoint = 'https://us-central1-****-******.cloudfunctions.net/remote-gemini-call' );
עוברים למסוף BigQuery בפלטפורמת Google Cloud ופותחים כרטיסייה חדשה של Query Editor. בעורך השאילתות של BigQuery, מדביקים את משפט ה-DDL שלמעלה. התגובה הבאה תוצג אחרי הריצה של השאילתה:
עכשיו, אחרי שיצרנו את המודל והפונקציה, נבדוק את שני האובייקטים האלה ב-BigQuery על ידי הרצתם בשאילתת SELECT.
9. סיכום נושאים באמצעות המודל המרוחק
נשתמש במודל המרוחק שיצרנו, Bookshelf.llm_model, כדי ליצור מילת מפתח מאוחדת עבור הספר מתוך רשימת הנושאים הנתונה:
SELECT * FROM ML.GENERATE_TEXT(MODEL `bookshelf.llm_model`,
(
SELECT
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920` LIMIT 1
));
שלב אופציונלי: התוצאה של שדה התוצאה שנוצר על ידי LLM היא בתצוגת עץ. נוסיף לשאילתה כמה פרמטרים של LLM ואת המאפיין flatten_json_output. השימוש במאפיין 'flatten_json_output' עוזר להסיר את המבנה המורכב מהשדה של התוצאה שנוצרה על ידי LLM.
SELECT * FROM ML.GENERATE_TEXT ( MODEL `bookshelf.llm_model`, (
SELECT CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt FROM `gdelt-bq.internetarchivebooks.1920` limit 1),
STRUCT( 0.2 AS temperature, 100 AS max_output_tokens, TRUE AS flatten_json_output));
עכשיו מריצים את שאילתת ה-SELECT בעורך BigQuery ומאמתים את התוצאה. הגבלנו את תוצאת השאילתה ל-1 לצורך בדיקה. התוצאה מוצגת כך:
10. סיכום הטקסט המלא של ספרים באמצעות הפונקציה מרחוק
עכשיו ננסה לסכם את הספר על ידי הרצת מדף הספרים.GEMINI_REMOTE_CALL הפונקציה של Cloud Functions שיצרנו קודם.
הערה: אם דילגתם על יצירת הפונקציה FUNCTION מרחוק (הנושא הקודם ב-Codelab הזה), חשוב לזכור לדלג על הפעלת הפונקציה (GEMINI_REMOTE_CALL) גם בשאילתה SELECT.
משתמשים בשאילתת SELECT שמפעילה את הפונקציה מרחוק (GEMINI_REMOTE_CALL) שיצרנו מקודם. הקריאה לפונקציה הזו, GEMINI_REMOTE_CALL, כוללת הנחיה לבקש סיכום של טקסט הספר:
select BookMeta_Title, `bookshelf.GEMINI_REMOTE_CALL` (
CONCAT('This is about a book. The title of the book is this: ', BookMeta_Title, ' . The theme of the book is as follows: ', Themes, 'The following text contains an excerpt from the book. Summarize it in less than 5 lines to create the gist. If you do not have a summary, use the title and themes to make up a short summary. DO NOT RETURN EMPTY RESPONSE. ', SUBSTR(BookMeta_FullText, 5000, 10000))) Summary
from `gdelt-bq.internetarchivebooks.1920` where Themes like '%EDUCATION%' limit 1;
לתשומת ליבך, השתמשנו במחרוזת משנה של הטקסט המלא של הספר כדי ליצור את הסיכום.
התוצאה של השאילתה היא:
11. אחסון נתוני ספרים בטבלה
עכשיו, אחרי שבדקנו את שתי הקריאות ל-LLM (המודל והפונקציה מרחוק) מ-BigQuery רק באמצעות שאילתות SQL, נוצר טבלה ב-BigQuery כדי לאחסן את נתוני 'מדף הספרים' עם תובנות לגבי נושאים, באותו מערך נתונים שבו נמצאים המודל והפונקציה מרחוק.
אפשר לכלול בשלב הזה גם את הקריאה למודל ה-LLM וגם את הקריאה לפונקציה מרחוק. אבל מכיוון שסימנו את קריאת הפונקציה מרחוק (שמפעילה את Cloud Function) כשלב אופציונלי, נשתמש רק בתובנות מהמודל המרוחק.
זו השאילתה שבה נשתמש:
SELECT
BookMeta_Title, Themes, ml_generate_text_llm_result Context
FROM
ML.GENERATE_TEXT (
MODEL `bookshelf.llm_model`,
(
SELECT
BookMeta_Title,
Themes,BookMeta_FullText,
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
כשמריצים את השאילתה בעורך BigQuery, התוצאה היא:
עכשיו נבקש מ-Gemini ליצור טבלה בשם "bookshelf.books" מהשאילתה שלמעלה. עוברים למסוף הצ'אט של Gemini במסוף Google Cloud ומזינים את ההנחיה הבאה.
זו ההנחיה שבה נשתמש:
Create a BigQuery table named bookshelf.books from this SELECT query:
SELECT
BookMeta_Title, Themes, ml_generate_text_llm_result Context
FROM
ML.GENERATE_TEXT (
MODEL `bookshelf.llm_model`,
(
SELECT
BookMeta_Title,
Themes,BookMeta_FullText,
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
התשובה בשיחה עם Gemini:
זו השאילתה, למקרה שתרצו להעתיק אותה ישירות מכאן:
CREATE TABLE bookshelf.books (
BookMeta_Title STRING,
Themes STRING,
ml_generate_text_llm_result STRING
) AS (
SELECT
BookMeta_Title,
Themes,
ml_generate_text_llm_result Context
FROM
ML.GENERATE_TEXT (
MODEL `bookshelf.llm_model`,
(
SELECT
BookMeta_Title,
Themes,
BookMeta_FullText,
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920`
LIMIT 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output
)
)
);
אחרי שמריצים את השאילתה בעורך BigQuery, התוצאה היא:
זהו! עכשיו אפשר להריץ שאילתה בטבלה ולשחק עם הנתונים כדי לקבל תובנות נוספות.
12. מזל טוב
מעולה! השלמנו בהצלחה את השלבים הבאים והשתמשנו ב-Gemini גם בחלק מהשלבים בתהליך:
- יצרתם מודל מרוחק ב-BigQuery שמפעיל את נקודת הקצה 'text-bison-32k' של Vertex AI כדי לזהות את הז'אנר (או הנושא) של הספר מתוך רשימה של מילות מפתח מופרדות בתו ';' בטבלה.
- יצרתם פונקציה מרוחקת ב-BigQuery שתפעיל מרחוק את Cloud Function עם ה-AI הגנרטיבי שנפרס. הפונקציה הזו תקבל את ההנחיה כקלט ותשלח פלט למחרוזת שמסכמת את הספר ב-5 שורות.
- השתמשו במודל ובפונקציה מרוחקים כדי לסכם את הנושא והטקסט של ספר באמצעות שאילתות SQL, ולכתוב את התוצאות בטבלה חדשה במערך הנתונים של מדף הספרים.
- כמטלה המשך, נסו להשתמש ב-Gemini כדי לקבל את שאילתת ה-SQL למחיקה של האובייקטים שנוצרו ב-BigQuery. כאן נסביר על שלב הניקוי.