"إحصاءات قسم الكتب": استخدام Gemini لإنشاء تطبيقات SQL باستخدام BigQuery والذكاء الاصطناعي التوليدي

1. مقدمة

هل تحب قراءة الكتب ولكنّك تشعر بالارتباك بسبب العدد الهائل من الخيارات؟ تخيل أنّ لديك تطبيقًا مستندًا إلى الذكاء الاصطناعي لا يقترح عليك الكتب المناسبة فحسب، بل يوفّر أيضًا ملخّصًا موجزًا استنادًا إلى النوع الذي تختاره، ما يمنحك لمحة عن جوهر الكتاب. في هذا الدليل التعليمي حول الرموز البرمجية، سأرشدك إلى كيفية إنشاء تطبيق مماثل باستخدام BigQuery وGemini وCloud Functions المستندة إلى Gemini.

نظرة عامة على المشروع

تركّز حالة الاستخدام على المكوّنات الأربعة الرئيسية التالية:

  • قاعدة بيانات الكتب: ستشكّل مجموعة البيانات العامة الواسعة في BigQuery للكتب في أرشيف الإنترنت بمثابة كتالوج شامل للكتب.
  • محرك التلخيص المستنِد إلى الذكاء الاصطناعي: ستُنشئ وظائف Google Cloud، المزوّدة بنموذج اللغة Gemini 1.0 Pro، ملخصات قيّمة مخصّصة لطلبات المستخدمين.
  • دمج BigQuery: وهي دالة بعيدة في BigQuery تستدعي وظيفتنا السحابية لتقديم ملخصات عن الكتب ومواضيعها عند الطلب.
  • واجهة المستخدم: تطبيق ويب مستضاف على Cloud Run سيوفّر تطبيق ويب للمستخدمين لعرض النتائج.

سنقسم عملية التنفيذ إلى 3 ورشات عمل لكتابة الرموز البرمجية:

الدرس التطبيقي 1: استخدام Gemini لإنشاء Java Cloud Function لتطبيق Gemini

Codelab 2: استخدام Gemini لإنشاء تطبيقات SQL باستخدام BigQuery والذكاء الاصطناعي التوليدي

الدرس التطبيقي 3: استخدام Gemini لإنشاء تطبيق ويب Java Spring Boot يتفاعل مع BigQuery

2. استخدام Gemini لإنشاء تطبيقات SQL باستخدام BigQuery والذكاء الاصطناعي التوليدي

ما ستُنشئه

ستنشئ

  • نموذج عن بُعد في BigQuery يستدعي نقطة نهاية text-bison-32k في Vertex AI لتحديد النوع (أو الموضوع) للكتاب من قائمة كلمات رئيسية مفصولة بعلامة ";" في الجدول.
  • الوظيفة عن بُعد في BigQuery والتي ستستدعي وظيفة السحابة الإلكترونية للذكاء الاصطناعي التوليدي المنشورة عن بُعد.
  • استخدِم النموذج والدالة عن بُعد لتلخيص موضوع الكتاب ونصه باستخدام استعلامات SQL وكتابة النتائج في جدول جديد في مجموعة بيانات "رف الكتب".
  • يمكنك تنفيذ هذه الخطوات بمساعدة Gemini.

3- المتطلبات

  • متصفّح، مثل Chrome أو Firefox
  • مشروع على Google Cloud تم تفعيل الفوترة فيه
  • من المفيد نشر Cloud Function كجزء من الدرس التطبيقي حول الترميز في الجزء 1 استخدام Gemini لإنشاء دالة Java Cloud لتطبيق Gemini.
  • شرط: إذا كان بإمكانك في الوقت الحالي الوصول إلى رابط أرصدة Google Cloud المجانية (الذي قد يكون قد زوّدك به منظّم ورشة العمل)، استخدِم التعليمات الواردة في الصفحة أدناه لإكمال خطوات تفعيل الأرصدة وإنشاء المشروع مسبقًا. إذا لم يكن لديك هذا الرابط، اتّبِع الخطوات الأساسية التالية للمشروع والفوترة:

إنشاء مشروعك

يمكنك تخطّي الخطوات أدناه إذا سبق لك تفعيل حساب فوترة وإنشاء مشروع باستخدام الرابط المذكور في الخطوة الشَرطية أعلاه.

  1. في Google Cloud Console، في صفحة أداة اختيار المشاريع، اختَر مشروعًا على Google Cloud أو أنشِئه.
  2. تأكَّد من تفعيل الفوترة لمشروعك على Cloud. تعرَّف على كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع.

تفعيل Cloud Shell

  1. ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud ومزوّدة مسبقًا بـ bq:

من Cloud Console، انقر على Activate Cloud Shell (تفعيل Cloud Shell) في أعلى يسار الصفحة: 6757b2fb50ddcc2d.png

  1. بعد الاتصال بخدمة Cloud Shell، من المفترض أن تظهر لك رسالة تفيد بأنّه سبق أن تم مصادقة حسابك وأنّه سبق ضبط المشروع على معرّف مشروعك. نفِّذ الأمر التالي في Cloud Shell لتأكيد مصادقة حسابك:

gcloud auth list

  1. شغّل الأمر التالي في Cloud Shell للتأكد من معرفة الأمر gcloud بمشروعك.

gcloud config list project

  1. إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:

gcloud config set project <YOUR_PROJECT_ID>

راجِع المستندات لمعرفة أوامر gcloud وكيفية استخدامها.

4. تفعيل Gemini لـ Google Cloud وواجهات برمجة التطبيقات اللازمة

تفعيل Gemini

  1. انتقِل إلى Marketplace في Gemini لـ Google Cloud لتفعيل واجهة برمجة التطبيقات. يمكنك أيضًا استخدام الأمر التالي:

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

  1. انتقِل إلى صفحة Gemini وانقر على "بدء المحادثة".

تفعيل واجهات برمجة التطبيقات الأخرى اللازمة

كيف يمكننا إجراء ذلك؟ لنطلب من Gemini ذلك؟ قبل إجراء ذلك، تذكَّر ما يلي:

ملاحظة: قواعد التعلم الآلي المحدودة ليست حتمية. لذلك أثناء تجربة هذه الطلبات، قد يبدو الردّ الذي تتلقّاه مختلفًا عن الردود الواردة في لقطة الشاشة.

انتقِل إلى وحدة تحكّم المحادثة في Gemini من خلال النقر على رمز "فتح Gemini" في أعلى يسار الصفحة بجانب شريط البحث في وحدة تحكّم Google Cloud.

اكتب هذا السؤال في قسم "إدخال طلب هنا":

كيف يمكنني تفعيل واجهات برمجة التطبيقات BigQuery وVertex AI باستخدام أمر gcloud؟

ستظهر لك الاستجابة كما هو موضّح في الصورة التالية:

19c3fd78530794d9.png

انسخ ذلك (يمكنك استخدام رمز النسخ في أعلى مقتطف الأمر) وشغِّله في Cloud Shell Terminal لتفعيل الخدمات المعنيّة:

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

5- استكشاف مجموعة البيانات العامة في BigQuery لبيانات الكتب

ابدأ بالتعرّف على مجموعة البيانات العامة في BigQuery التي تحتوي على معلومات عن العديد من كتب أرشيف الإنترنت.

يمكنك العثور على مجموعة البيانات العامة هذه في لوحة مستكشف BigQuery. يمكنك العثور عليه على يمين الصفحة عند الانتقال إلى وحدة تحكّم BigQuery.

39e2ac03cc99cbac.png

اكتب gdelt-bq أو internetarchivebooks في شريط البحث وانقر على SEARCH ALL PROJECTS (البحث في جميع المشاريع). وسِّع النتيجة وضَع علامة على الكتب في أرشيف الإنترنت كما هو موضّح في الصورة أدناه:

68dba68a79cddfc9.png.

قم بتوسيع مجموعة البيانات، وانقر فوق gdelt-bq.internetarchivebooks، ثم عاين البيانات في جدول 1920. يتضمّن هذا الجدول الكتب المؤرشفة من عام 1920.

لإلقاء نظرة على المخطط الذي سنستخدمه في الأقسام التالية، قم بتشغيل الاستعلام التالي:

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

سنستخدم الحقول الثلاثة التالية في ورشة عمل رموزنا البرمجية:

  • BookMeta_Title (title)
  • المظاهر (المظاهر مفصولة بعلامة "'")
  • BookMeta_FullText (النص الكامل للكتاب)

6- إنشاء مجموعة بيانات BigQuery جديدة تسمى رف الكتب

نريد إنشاء مجموعة بيانات ضمن المشروع لتخزين جميع عناصر قاعدة البيانات والإحصاءات التي سننشئها في هذا المختبر. لنسأل "جيميني" كيفية إنشاء مجموعة بيانات في BigQuery. من المفترض أن تكون محادثة Gemini مفتوحة في علامة تبويب أخرى في المتصفّح من خطوة تفعيل واجهات برمجة التطبيقات. إذا لم يسبق لك ذلك، يمكنك إجراء ذلك الآن. انتقِل إلى Google Cloud Console من خلال الانتقال إلى https://console.cloud.google.com، ومن المفترض أن يظهر رمز Gemini بجانب شريط البحث في أعلى الشاشة. انقر على ذلك وسيفتح لك المحادثة.

26e1491322855614.png

أدخِل الطلب كما هو موضّح أدناه.

إليك الطلب:

How to create a BigQuery dataset?

في ما يلي ردّنا:

f7a989cc9a01009.png

لنتّبع الخطوات الموضّحة في الردّ لإنشاء مجموعة بيانات باسم "رفّ الكتب" في مشروعك النشط.

لإنشاء مجموعة بيانات في BigQuery، اتّبِع الخطوات التالية:

  1. انتقِل إلى صفحة BigQuery في وحدة تحكّم Google Cloud.
  2. في لوحة "المستكشف"، انقر على معرّف مشروعك.
  3. انقر على "إنشاء مجموعة بيانات" (من المفترض أن يكون هذا الخيار مدرجًا في الخيارات عند النقر على النقاط الثلاث بجانب رقم تعريف المشروع).
  4. أدخِل اسم مجموعة البيانات "رفّ كتب".
  5. اضبط الموقع الجغرافي على "الولايات المتحدة(مناطق متعدّدة)".
  6. بالنسبة إلى الخطوات 3 و4 و5 و6 من الردّ، اترك الخيارات التلقائية.
  7. انقر على CREATE DATASET (إنشاء مجموعة بيانات).

سيتم إنشاء مجموعة البيانات وستظهر في لوحة "المستكشف". يمكن الاطّلاع على مجموعة بيانات "رفّ الكتب" على النحو التالي:

7- إنشاء نموذج عن بُعد لاستدعاء Vertex AI LLM (text-bison-32k)

بعد ذلك، نحتاج إلى إنشاء نموذج في BigQuery يستدعي نموذج Vertex AI‏ "text-bison-32k". سيساعد النموذج في تحديد موضوع شائع وسياق للكتاب من قائمة الكلمات الرئيسية لكل كتاب في مجموعة البيانات.

لنطرح هذا السؤال على Gemini. لإجراء ذلك، انتقِل إلى علامة التبويب التي تم فيها فتح وحدة تحكّم Gemini Chat واكتب الطلب أدناه:

كيف يمكنك الربط بين BigQuery وVertex AI لاستدعاء نقطة نهاية النموذج اللغوي الكبير (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"، انقر على الزر "+إضافة" ثمّ انقر على "عمليات الربط بمصادر بيانات خارجية".
  3. في هذه المرحلة، سيُطلب منك تفعيل BigQuery Connection API. انقر على "تفعيل واجهة برمجة التطبيقات":

ded96126495ffe9.png

  1. انقر على "عمليات الربط بمصادر بيانات خارجية"، ومن المفترض أن تظهر لك شريحة مصدر البيانات الخارجي كما هو موضّح أدناه . من قائمة المصادر الخارجية، اختَر مصدر Vertex AI.

434cdbbb3a9436f2.png

  1. اكتب رقم تعريف الاتصال (يمكن أن يكون معرّفًا من اختيارك، ولكن في الوقت الحالي، يجب ضبطه على "bq-vx" والمنطقة (متعدّدة المناطق "US").
  2. انقر على "إنشاء اتصال".

d3a2aeebc3ecdfae.png

  1. بعد إنشاء عملية الربط، انقر على "الانتقال إلى عملية الربط".
  2. في صفحة معلومات الربط، انسخ رقم تعريف حساب الخدمة لأنّنا سنستخدم هذا الرقم في الخطوات اللاحقة.
  3. بعد إنشاء عملية الربط، لنحدّد أذونات لرقم تعريف حساب الخدمة هذا الذي نسخناه لنتمكّن من استخدام Vertex AI.
  4. من صفحة Google Cloud Console، افتح Google Cloud IAM أو انتقِل إلى الرابط.
  5. انقر على منح إذن الوصول ضمن قسم العرض حسب المستخدمين الرئيسيين.

5317eed5da0bb8c5.png

  1. في مربّع الحوار "منح الإذن بالوصول"، أدخِل رقم تعريف حساب الخدمة الذي سبق أن ذكرناه في مربّع نص "المبادئ الجديدة".
  2. اضبط الدور على "مستخدم Vertex AI".

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" التي أنشأناها سابقًا.

8. إنشاء دالة عن بُعد تستدعي دالة Java Cloud

سننشئ الآن دالة عن بُعد في BigQuery باستخدام وظيفة Java Cloud التي أنشأناها في الدرس التطبيقي حول الترميز 1 من هذه السلسلة لتطبيق نموذج Gemini. سيتم استخدام هذه الدالة البعيدة لتلخيص محتوى الكتاب.

ملاحظة: إذا لم تُكمل دورة codelab هذه أو لم يتم نشر دالة Cloud Function هذه، يمكنك تخطّي هذه الخطوة والانتقال إلى الموضوع التالي (أي تلخيص موضوع الكتب باستخدام النموذج عن بُعد).

انتقل إلى وحدة تحكم BigQuery وألصق عبارة DDL التالية في "Query Editor" (محرر الاستعلام) (يمكنك إنشاء علامة تبويب جديدة "Query Editor" (محرر الاستعلام) بالنقر فوق الزر +)

a54c0b0014666cac.png

في ما يلي ملف DDL الذي يمكنك نسخه. تذكَّر استبدال نقطة النهاية بنقطة نهاية Cloud Function المنشورة (التي تم إنشاؤها من الدورة التدريبية 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 Platform وافتح علامة تبويب جديدة في "Query Editor" (محرر طلبات البحث). في "محرِّر طلبات البحث في BigQuery"، الصِق عبارة DDL أعلاه. يمكنك الاطّلاع على الردّ التالي بعد تنفيذ طلب البحث:

a023d5691acf6f.png

الآن بعد أن تم إنشاء النموذج والدالة، لنختبر هذين العنصرين من 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 والسمة "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 لأغراض الاختبار. يتم عرض النتيجة على النحو التالي:

9b0d33eca61a73d2.png

10. تلخيص النصوص الكاملة للكتب باستخدام الوظيفة عن بُعد

سنحاول الآن تلخيص الكتاب من خلال تشغيل دالة Cloud bookshelf.GEMINI_REMOTE_CALL التي أنشأناها سابقًا.

ملاحظة: إذا تخطّيت إنشاء الدالة عن بُعد (الموضوع السابق في هذا الدليل التعليمي)، احرص على تخطّي طلب الدالة 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

11. تخزين بيانات الكتب في جدول

بعد أن اختبرنا كلّ من طلبات النموذج اللغوي الكبير (النموذج والدالة عن بُعد) من 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"، تكون النتيجة على النحو التالي:

2c6e08e75a680867.png

الآن، لنطلب من Gemini إنشاء جدول باسم bookshelf.books من طلب البحث أعلاه. انتقِل إلى وحدة تحكّم محادثات Gemini في Google Cloud Console وأدخِل الطلب التالي.

إليك الطلب الذي سنستخدمه:

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 Chat:

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

هذا كل شيء! يمكنك الآن إجراء طلب بحث عن الجدول والاطّلاع على البيانات للحصول على المزيد من الإحصاءات.

12. تهانينا

تهانينا! لقد أكملنا الخطوات التالية واستخدمنا Gemini في بعض خطوات العملية أيضًا:

  • تم إنشاء نموذج عن بُعد في BigQuery يستدعي نقطة نهاية Vertex AI "text-bison-32k" لتحديد النوع (أو الموضوع) للكتاب من قائمة بالكلمات الرئيسية المفصولة بعلامة ";" في الجدول.
  • تم إنشاء دالة عن بُعد في BigQuery ستستدعي هذه الوظيفة المُنشِئة للذكاء الاصطناعي المُنشِئ على السحابة الإلكترونية عن بُعد. ستتعامل هذه الدالة مع الطلب كإدخال وإخراج سلسلة تلخص الكتاب في 5 أسطر.
  • استخدَم النموذج والدالة عن بُعد لتلخيص موضوع الكتاب ونصه باستخدام استعلامات SQL وكتابة النتائج في جدول جديد في مجموعة بيانات "رفّ الكتب".
  • كعملية متابعة، جرِّب استخدام Gemini للحصول على لغة الاستعلامات البنيوية (SQL) لحذف العناصر التي تم إنشاؤها في BigQuery. سيتناول هذا القسم خطوة التنظيف.