تجزیه و تحلیل قفسه کتاب: از Gemini برای ساخت برنامه های SQL با BigQuery و هوش مصنوعی Generative استفاده کنید

۱. مقدمه

آیا عاشق کندوکاو در کتاب‌ها هستید اما از حجم زیاد انتخاب‌ها کلافه می‌شوید؟ تصور کنید یک اپلیکیشن مبتنی بر هوش مصنوعی دارید که نه تنها کتاب مناسب برای مطالعه را پیشنهاد می‌دهد، بلکه خلاصه‌ای مختصر بر اساس ژانر انتخابی شما ارائه می‌دهد و به شما نگاهی اجمالی به جوهره کتاب می‌دهد. در این آزمایشگاه کد، شما را در ساخت چنین اپلیکیشنی با BigQuery، Gemini و Cloud Functions که توسط Gemini پشتیبانی می‌شوند، راهنمایی خواهم کرد.

نمای کلی پروژه

مورد استفاده ما حول این ۴ مؤلفه کلیدی متمرکز است:

  • پایگاه داده کتاب: مجموعه داده‌های عمومی عظیم BigQuery از کتاب‌های آرشیو اینترنتی، به عنوان کاتالوگ جامع کتاب ما عمل خواهد کرد.
  • موتور خلاصه‌سازی هوش مصنوعی: توابع ابری گوگل، مجهز به مدل زبانی Gemini 1.0 Pro، خلاصه‌های مفیدی متناسب با درخواست‌های کاربر تولید می‌کنند.
  • یکپارچه‌سازی با BigQuery: یک تابع از راه دور در BigQuery که تابع ابری ما را فراخوانی می‌کند تا خلاصه کتاب‌ها و تم‌های درخواستی را ارائه دهد.
  • رابط کاربری: یک برنامه وب میزبانی شده در Cloud Run که یک برنامه وب را برای مشاهده نتایج به کاربران ارائه می‌دهد.

ما پیاده‌سازی را به ۳ آزمایشگاه کد تقسیم خواهیم کرد:

آزمایشگاه کد ۱: استفاده از Gemini برای ساخت یک تابع ابری جاوا برای یک برنامه Gemini.

Codelab 2: از Gemini برای ساخت برنامه‌های SQL با BigQuery و Generative AI استفاده کنید.

Codelab 3: استفاده از Gemini برای ایجاد یک برنامه وب Java Spring Boot که با BigQuery تعامل دارد.

۲. از Gemini برای ساخت برنامه‌های SQL با BigQuery و Generative AI استفاده کنید

آنچه خواهید ساخت

شما یک [چیز/چیزی] ایجاد خواهید کرد

  • مدل از راه دور در BigQuery که نقطه پایانی Vertex AI text-bison-32k را برای شناسایی ژانر (یا موضوع) کتاب از لیستی از کلمات کلیدی جدا شده با ";" در جدول فراخوانی می‌کند.
  • تابع از راه دور در BigQuery که تابع ابری هوش مصنوعی مولد مستقر شده را از راه دور فراخوانی می‌کند.
  • از مدل و تابع ریموت برای خلاصه کردن تم و متن یک کتاب با استفاده از کوئری‌های SQL استفاده کنید و نتایج را در یک جدول جدید در مجموعه داده‌های قفسه کتاب بنویسید.
  • شما این مراحل را با کمک Gemini اجرا خواهید کرد.

۳. الزامات

پروژه خود را ایجاد کنید

اگر قبلاً حساب صورتحساب را فعال کرده‌اید و با استفاده از لینک ذکر شده در مرحله شرطی بالا، پروژه‌ای ایجاد کرده‌اید، می‌توانید مراحل زیر را نادیده بگیرید.

  1. در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.
  2. مطمئن شوید که صورتحساب برای پروژه ابری شما فعال است. یاد بگیرید که چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر .

فعال کردن پوسته ابری

  1. شما از Cloud Shell ، یک محیط خط فرمان که در Google Cloud اجرا می‌شود و bq از قبل روی آن بارگذاری شده است، استفاده خواهید کرد:

از کنسول ابری، روی فعال کردن پوسته ابری در گوشه بالا سمت راست کلیک کنید: 6757b2fb50ddcc2d.png

  1. پس از اتصال به Cloud Shell، باید ببینید که از قبل احراز هویت شده‌اید و پروژه از قبل روی شناسه پروژه شما تنظیم شده است. دستور زیر را در Cloud Shell اجرا کنید تا تأیید شود که احراز هویت شده‌اید:

لیست مجوزهای gcloud

  1. دستور زیر را در Cloud Shell اجرا کنید تا تأیید شود که دستور gcloud از پروژه شما اطلاع دارد.

پروژه لیست پیکربندی gcloud

  1. اگر پروژه شما تنظیم نشده است، از دستور زیر برای تنظیم آن استفاده کنید:

پروژه مجموعه پیکربندی gcloud <YOUR_PROJECT_ID>

برای دستورات و نحوه‌ی استفاده از gcloud به مستندات مراجعه کنید.

۴. فعال‌سازی جمینی برای گوگل کلود و APIهای لازم

فعال کردن جمینی

  1. برای فعال کردن API به Gemini در Google Cloud Marketplace بروید. همچنین می‌توانید از دستور زیر استفاده کنید:

gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID

  1. به صفحه Gemini مراجعه کنید و روی «شروع چت» کلیک کنید.

فعال کردن سایر API های لازم

چطور این کار را انجام دهیم؟ بیایید این را از جوزا بپرسیم، موافقید؟ اما قبل از آن به یاد داشته باشید:

توجه: LLM ها قطعی نیستند. بنابراین، در حالی که شما این دستورات را امتحان می‌کنید، پاسخی که دریافت می‌کنید ممکن است با آنچه در تصویر من است متفاوت باشد.

با کلیک روی آیکون «باز کردن جمینی» در گوشه بالا سمت راست، کنار نوار جستجو در کنسول گوگل کلود، به کنسول چت جمینی بروید.

این سوال را در بخش «اینجا یک سوال وارد کنید» تایپ کنید:

چگونه می‌توانم با استفاده از دستور gcloud، رابط‌های برنامه‌نویسی BigQuery و Vertex AI را فعال کنم؟

پاسخی مانند تصویر زیر دریافت می‌کنید:

19c3fd78530794d9.png

آن را کپی کنید (می‌توانید از آیکون کپی در بالای قطعه فرمان استفاده کنید) و آن را در ترمینال Cloud Shell اجرا کنید تا سرویس‌های مربوطه فعال شوند:

  • bigquery.googleapis.com
  • aiplatform.googleapis.com

۵. مجموعه داده‌های عمومی BigQuery را برای داده‌های کتاب‌ها بررسی کنید

با آشنایی با مجموعه داده‌های عمومی BigQuery که حاوی اطلاعات مربوط به کتاب‌های آرشیو اینترنتی متعدد است، شروع کنید.

می‌توانید این مجموعه داده عمومی را در پنل اکسپلورر BigQuery پیدا کنید. می‌توانید این را در سمت چپ، هنگام ورود به کنسول BigQuery پیدا کنید.

39e2ac03cc99cbac.png

در نوار جستجو عبارت "gdelt-bq" یا "internetarchivebooks" را تایپ کنید و روی "جستجوی همه پروژه‌ها" کلیک کنید. در نتایج جستجو، گزینه "باز کردن" را انتخاب کنید و کتاب‌های بایگانی اینترنتی را مطابق تصویر زیر ستاره‌دار کنید:

68dba68a79cddfc9.png .

مجموعه داده‌ها را باز کنید، روی gdelt-bq.internetarchivebooks کلیک کنید و سپس داده‌های جدول ۱۹۲۰ را پیش‌نمایش کنید. این جدول شامل کتاب‌های بایگانی‌شده از سال ۱۹۲۰ است.

برای بررسی طرحواره‌ای که در بخش‌های بعدی استفاده خواهیم کرد، کوئری زیر را اجرا کنید:

select * from  `gdelt-bq.internetarchivebooks.1920` limit 5;

ما از سه فیلد زیر برای آزمایشگاه کد خود استفاده خواهیم کرد:

  • عنوان کتاب (عنوان)
  • قالب‌ها (قالب‌ها با ';' از هم جدا شده‌اند)
  • BookMeta_FullText (متن کامل کتاب)

۶. یک مجموعه داده جدید BigQuery با نام bookshelf ایجاد کنید

ما می‌خواهیم یک مجموعه داده در پروژه ایجاد کنیم تا تمام پایگاه داده و اشیاء تحلیلی که قرار است در این آزمایش ایجاد کنیم را ذخیره کند. بیایید از Gemini بپرسیم که چگونه یک مجموعه داده BigQuery ایجاد کند. شما باید از قبل چت Gemini خود را در تب دیگری در مرورگر خود از مرحله فعال کردن APIها باز کرده باشید. اگر اینطور نیست، اکنون می‌توانید این کار را انجام دهید. با رفتن به https://console.cloud.google.com به کنسول Google Cloud بروید و باید نماد Gemini را درست در کنار نوار جستجو در بالا ببینید. روی آن کلیک کنید و چت باز می‌شود.

26e1491322855614.png

مطابق شکل زیر، عبارت مورد نظر را وارد کنید.

اینم دستور من:

How to create a BigQuery dataset?

پاسخ اینجاست:

f7a989cc9a01009.png

بیایید مراحل ذکر شده در پاسخ را برای ایجاد یک مجموعه داده با نام "bookshelf" در پروژه فعال خود دنبال کنیم.

برای ایجاد مجموعه داده BigQuery، مراحل زیر را دنبال کنید:

  1. به صفحه BigQuery در کنسول Google Cloud بروید.
  2. در پنل اکسپلورر، روی شناسه پروژه خود کلیک کنید.
  3. روی ایجاد مجموعه داده کلیک کنید (وقتی روی سه نقطه کنار شناسه پروژه خود کلیک می‌کنید، باید در گزینه‌های فهرست شده باشد)
  4. نام مجموعه داده را "bookshelf" وارد کنید.
  5. مکان را روی «ایالات متحده (چند منطقه‌ای)» تنظیم کنید.
  6. برای مراحل ۳، ۴، ۵ و ۶ از پاسخ، گزینه‌های پیش‌فرض را رها کنید.
  7. روی ایجاد مجموعه داده کلیک کنید.

مجموعه داده شما ایجاد شده و در پنل اکسپلورر ظاهر می‌شود. مجموعه داده "bookshelf" را می‌توان به صورت زیر مشاهده کرد:

۷. ایجاد یک مدل از راه دور برای فراخوانی Vertex AI LLM (text-bison-32k)

در مرحله بعد، باید مدلی در BigQuery ایجاد کنیم که مدل هوش مصنوعی Vertex با نام "text-bison-32k" را فراخوانی کند. این مدل به شناسایی یک موضوع مشترک، یعنی زمینه کتاب، از فهرست کلمات کلیدی هر کتاب در مجموعه داده‌ها کمک خواهد کرد.

بیایید این سوال را از Gemini بپرسیم. برای انجام این کار، به برگه‌ای که کنسول چت Gemini در آن باز است بروید و عبارت زیر را تایپ کنید:

چگونه BigQuery و Vertex AI را برای فراخوانی نقطه پایانی LLM (text-bison-32k) در BigQuery به هم متصل خواهید کرد؟

پاسخ به شرح زیر است:

41904e30ce92b436.png

پاسخ شامل اطلاعات دقیقی است، مانند مراحلی که شامل استفاده از دستور CREATE MODEL، استفاده از اتصال BigQuery و تعریف نقطه پایانی می‌شود. دستور پرس‌وجو برای من دقیق است، اما به این معنی نیست که شما دقیقاً همان خروجی را دریافت خواهید کرد، زیرا این یک مدل زبان بزرگ است که ممکن است پاسخ‌هایی با فرمت، حجم و عمق متفاوت دریافت کنید. اگر تمام جزئیاتی را که دریافت کرده‌ام نمی‌بینید، می‌توانید با سوالات تکمیلی، چت را بررسی کنید. به عنوان مثال: جزئیات بیشتری در مورد نحوه ایجاد منبع اتصال یا دلیل عدم وجود ویژگی اتصال یا نحوه اتصال از BigQuery به Vertex AI و غیره ارائه دهید.

در اینجا یک نمونه از پیام پیگیری آمده است (فقط در صورتی از این استفاده کنید که به پیگیری نیاز دارید، اگر اولین پاسخی که دریافت کردید کافی بود، آن را ادامه دهید):

What about the connection? How will I connect from BigQuery to Vertex AI?

در اینجا پاسخ آمده است:

2ed9b3ed96b11bc9.png

بیایید مراحل پاسخ را برای ایجاد یک اتصال BigQuery دنبال کنیم:

  1. به کنسول BigQuery بروید.
  2. در پنل BigQuery Explorer، روی دکمه‌ی «+ADD» کلیک کنید و سپس روی «اتصالات به منابع داده‌ی خارجی» کلیک کنید.
  3. در این مرحله، از شما خواسته می‌شود که BigQuery Connection API را فعال کنید. روی ENABLE API کلیک کنید:

ded96126495ffe9.png

  1. روی «اتصالات به منابع داده خارجی» کلیک کنید و باید اسلاید منبع داده خارجی را مانند تصویر زیر ببینید. از لیست منابع خارجی، منبع «Vertex AI» را انتخاب کنید.

434cdbbb3a9436f2.png

  1. یک شناسه اتصال (این می‌تواند یک شناسه دلخواه شما باشد، اما فعلاً آن را روی " bq-vx " تنظیم کنید و منطقه (multiregion "US") را نیز وارد کنید.
  2. روی «ایجاد اتصال» کلیک کنید.

d3a2aeebc3ecdfa.png

  1. پس از ایجاد اتصال، روی «برو به اتصال» کلیک کنید.
  2. در صفحه اطلاعات اتصال، شناسه حساب سرویس (Service Account ID) را کپی کنید، زیرا در مراحل بعدی از این شناسه استفاده خواهیم کرد.
  3. حالا که اتصال ایجاد شده، بیایید به این شناسه حساب سرویس که کپی کرده‌ایم تا بتوانیم از Vertex AI استفاده کنیم، مجوز اختصاص دهیم.
  4. از صفحه کنسول گوگل کلود، Google Cloud IAM را باز کنید یا به لینک بروید.
  5. در بخش « مشاهده بر اساس مدیران» ، روی «اعطای دسترسی» کلیک کنید.

5317eed5da0bb8c5.png

  1. در کادر محاوره‌ای Grant Access، شناسه حساب سرویس (Service Account ID) که قبلاً یادداشت کردیم را در کادر متنی New Principles وارد کنید.
  2. نقش را روی «کاربر هوش مصنوعی ورتکس» تنظیم کنید.

f213db33d220aa5f.png

اتصال مورد نیاز ایجاد شده است. مجوز لازم برای استفاده از Vertex AI از BigQuery به حساب اصلی (حساب سرویس اتصال) اعطا شده است.

دستور DDL (زبان تعریف داده) زیر را که نشان دهنده ایجاد یک شیء پایگاه داده است، در این مورد، 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 قبلی جایگزین کنید. این پرس‌وجو مدل راه دور را در مجموعه داده "bookshelf" که قبلاً ایجاد کردیم، ایجاد می‌کند.

۸. یک تابع از راه دور ایجاد کنید که تابع ابری جاوا را فراخوانی کند

اکنون با استفاده از تابع ابری جاوا که در آزمایشگاه کد ۱ این مجموعه برای پیاده‌سازی مدل Gemini ایجاد کردیم، یک تابع از راه دور در BigQuery ایجاد خواهیم کرد. این تابع از راه دور برای خلاصه کردن محتوای کتاب استفاده خواهد شد.

توجه: اگر این آزمایشگاه کد را از دست داده‌اید یا این تابع ابری را مستقر نکرده‌اید، می‌توانید از این مرحله صرف نظر کنید و به موضوع بعدی بروید (که خلاصه کردن موضوع کتاب‌ها با استفاده از مدل از راه دور است).

به کنسول BigQuery بروید و عبارت DDL زیر را در Query Editor وارد کنید (می‌توانید با کلیک روی دکمه + یک تب جدید Query Editor ایجاد کنید)

a54c0b0014666cac.png

در زیر DDL ای که می‌توانید کپی کنید، آمده است. به یاد داشته باشید که نقطه پایانی را با نقطه پایانی Cloud Function مستقر شده خود (که از 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 Query Editor، عبارت DDL بالا را جایگذاری کنید. پس از اجرای پرس و جو، می‌توانید پاسخ زیر را مشاهده کنید:

a023d5691acf6f.png

اکنون که مدل و تابع ایجاد شده‌اند، بیایید این دو شیء BigQuery را با اجرای آنها در یک کوئری SELECT آزمایش کنیم.

۹. خلاصه کردن موضوعات با استفاده از مدل از راه دور

بیایید از مدل ریموتی که "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 اجرا کنید و نتیجه را بررسی کنید. ما برای آزمایش، نتیجه کوئری را به ۱ محدود کرده‌ایم. نتیجه به صورت زیر نمایش داده می‌شود:

9b0d33eca61a73d2.png

۱۰. خلاصه کردن متن کامل کتاب‌ها با استفاده از قابلیت کنترل از راه دور

اکنون سعی می‌کنیم با اجرای تابع ابری bookshelf.GEMINI_REMOTE_CALL که قبلاً ایجاد کردیم، خلاصه‌ای از کتاب را استخراج کنیم.

نکته: اگر از ایجاد تابع FUNCTION از راه دور (موضوع قبلی در این آزمایشگاه کد) صرف نظر کرده‌اید، به یاد داشته باشید که فراخوانی تابع bookshelf.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;

توجه داشته باشید که ما یک زیررشته از متن کامل کتاب را برای تولید خلاصه گرفته‌ایم.

نتیجه پرس و جو به شرح زیر است:

658bb0a9c9cf0938.png

۱۱. ذخیره داده‌های کتاب‌ها در یک جدول

اکنون که هر دو فراخوانی LLM (مدل ریموت و تابع) از BigQuery را فقط با استفاده از کوئری‌های SQL آزمایش کرده‌ایم، بیایید یک جدول BigQuery برای ذخیره داده‌های "bookshelf" به همراه بینش‌های تم، در همان مجموعه داده مدل ریموت و تابع، ایجاد کنیم.

در واقع می‌توانیم هم فراخوانی مدل LLM و هم فراخوانی تابع از راه دور را در این مرحله بگنجانیم. اما از آنجایی که فراخوانی تابع از راه دور (که تابع ابری را فراخوانی می‌کند) را به عنوان یک مرحله اختیاری علامت‌گذاری کرده‌ایم، فقط از بینش‌های مدل از راه دور استفاده خواهیم کرد.

در اینجا کوئری‌ای که استفاده خواهیم کرد آمده است:

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 اجرا می‌کنید، نتیجه به شرح زیر است:

2c6e08e75a680867.png

حالا، بیایید از 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 به شرح زیر است:

df6595a4b14f7b9.png

در صورتی که بخواهید آن را مستقیماً از اینجا کپی کنید، این کوئری است:

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، نتیجه به شرح زیر است:

2d1ce716f844b7ad.png

همین! حالا جدول را جستجو کنید و برای اطلاعات بیشتر با داده‌ها بازی کنید.

۱۲. تبریک

تبریک! ما مراحل زیر را با موفقیت انجام دادیم و در برخی از مراحل فرآیند از Gemini نیز استفاده کردیم:

  • یک مدل از راه دور در BigQuery ایجاد کردم که نقطه پایانی "text-bison-32k" مربوط به Vertex AI را فراخوانی می‌کند تا ژانر (یا موضوع) کتاب را از لیستی از کلمات کلیدی جدا شده با ";" در جدول شناسایی کند.
  • یک تابع از راه دور در BigQuery ایجاد کردم که این تابع ابری هوش مصنوعیِ مولدِ مستقر شده را از راه دور فراخوانی می‌کند. این تابع، اعلان را به عنوان ورودی دریافت می‌کند و رشته‌ای را که خلاصه کتاب را در ۵ خط ارائه می‌دهد، به عنوان خروجی ارائه می‌دهد.
  • از مدل و تابع ریموت برای خلاصه کردن موضوع و متن یک کتاب با استفاده از کوئری‌های SQL و نوشتن نتایج در یک جدول جدید در مجموعه داده‌های قفسه کتاب استفاده شد.
  • به عنوان یک تکلیف تکمیلی، سعی کنید از Gemini برای دریافت SQL جهت حذف اشیاء ایجاد شده در BigQuery استفاده کنید. این مرحله پاکسازی را پوشش می‌دهد.