"إحصاءات قسم الكتب": استخدام 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

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

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

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

ما ستنشئه

ستنشئ

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

3- المتطلبات

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

إنشاء مشروعك

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

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

تفعيل Cloud Shell

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

من Cloud Console، انقر على "تفعيل 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 لتفعيل الخدمات المعنية:

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

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

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

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

39e2ac03cc99cbac.png

اكتب "gdelt-bq" أو "internetarchivebooks" في شريط البحث وانقر على "البحث في جميع المشاريع". وسِّع النتيجة وامنح كتب Internet Archive نجمة كما هو موضّح في الصورة أدناه:

68dba68a79cddfc9.png.

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

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

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

سنستخدم الحقول الثلاثة التالية في الدرس التطبيقي:

  • BookMeta_Title (title)
  • المواضيع (المواضيع مفصولة بعلامة ";")
  • BookMeta_FullText (النص الكامل للكتاب)

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

نريد إنشاء مجموعة بيانات ضمن المشروع لتخزين جميع عناصر قاعدة البيانات والإحصاءات التي سننشئها في هذا المختبر. لنسأل Gemini عن كيفية إنشاء مجموعة بيانات في 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. أدخِل اسم مجموعة البيانات "bookshelf".
  5. اضبط الموقع الجغرافي على "الولايات المتحدة(مناطق متعدّدة)".
  6. بالنسبة إلى الخطوات 3 و4 و5 و6 من الردّ، اترُك الخيارات التلقائية.
  7. انقر على CREATE DATASET.

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

7. إنشاء نموذج بعيد لاستدعاء النموذج اللغوي الكبير (LLM) في Vertex AI (text-bison-32k)

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

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

كيف يمكن ربط 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 والمنطقة (المنطقة المتعددة "الولايات المتحدة").
  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 السابقة. ينشئ هذا الاستعلام النموذج البعيد في مجموعة البيانات "رف الكتب" التي أنشأناها سابقًا.

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

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

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

انتقِل إلى وحدة تحكّم BigQuery والصِق عبارة DDL التالية في "محرّر طلبات البحث" (يمكنك إنشاء علامة تبويب جديدة في "محرّر طلبات البحث" من خلال النقر على الزرّ +).

a54c0b0014666cac.png

في ما يلي تعريف البيانات الذي يمكنك نسخه. تذكَّر استبدال نقطة النهاية بنقطة نهاية Cloud Functions التي تم تفعيلها (التي تم إنشاؤها من الدرس التطبيقي حول الترميز 1). إذا لم يكن لديك نقطة نهاية، يمكنك استبدال الأحرف المخفية في تعريف البيانات أدناه بـ "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 وافتح علامة تبويب جديدة في "محرّر طلبات البحث". في "محرِّر طلبات البحث" في 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
));

خطوة اختيارية: تكون نتيجة حقل النتائج من إنشاء نموذج اللغة الكبير مضمّنة. لنضِف بعض مَعلمات النماذج اللغوية الكبيرة وسمة "flatten_json_output" إلى طلب البحث. يساعد استخدام السمة "flatten_json_output" في إزالة البنية المتداخلة من حقل النتائج الذي ينشئه النموذج اللغوي الكبير.

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. تلخيص النصوص الكاملة للكتب باستخدام الدالة البعيدة

سنحاول الآن تلخيص الكتاب من خلال تشغيل دالة السحابة الإلكترونية 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

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:

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