1. مقدمة
في هذا الدرس التطبيقي حول الترميز، أدرجتُ الخطوات اللازمة لتلخيص الرمز المصدر من مستودعات Github وتحديد لغة البرمجة في المستودع، وذلك باستخدام النموذج اللغوي الكبير من Vertex AI لإنشاء النصوص ( text-bison) كدالة مستضافة عن بُعد في BigQuery. بفضل مشروع الأرشيف على GitHub، أصبح لدينا الآن لقطة كاملة لأكثر من 2.8 مليون مستودع مفتوح المصدر على GitHub في مجموعات البيانات العامة في Google BigQuery. قائمة الخدمات المستخدَمة هي:
- BigQuery ML
- Vertex AI PaLM API
ما ستنشئه
عليك إنشاء
- مجموعة بيانات في BigQuery لاحتواء النموذج
- نموذج BigQuery يستضيف Vertex AI PaLM API كدالة عن بُعد
- اتصال خارجي لإنشاء اتصال بين BigQuery وVertex AI
2. المتطلبات
3- قبل البدء
- في Google Cloud Console، ضمن صفحة اختيار المشروع، اختَر أو أنشِئ مشروعًا على Google Cloud.
- تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. كيفية التحقّق من تفعيل الفوترة في مشروع
- تأكَّد من تفعيل جميع واجهات برمجة التطبيقات اللازمة (BigQuery API وVertex AI API وBigQuery Connection API).
- ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud ومحمَّلة مسبقًا بأداة bq. يُرجى الرجوع إلى المستندات لمعرفة أوامر gcloud وطريقة استخدامها.
من Cloud Console، انقر على "تفعيل Cloud Shell" في أعلى يسار الصفحة:

إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:
gcloud config set project <YOUR_PROJECT_ID>
- انتقِل إلى وحدة تحكّم BigQuery مباشرةً من خلال إدخال عنوان URL التالي في المتصفّح: https://console.cloud.google.com/bigquery
4. يتم تجهيز البيانات.
في حالة الاستخدام هذه، نستخدِم محتوى رمز المصدر من مجموعة بيانات github_repos في مجموعات بيانات Google BigQuery العامة. لاستخدام هذا الجدول، ابحث عن "github_repos" في وحدة تحكّم BigQuery واضغط على Enter. انقر على النجمة بجانب مجموعة البيانات المُدرَجة كنتيجة بحث. بعد ذلك، انقر على الخيار "عرض البيانات المميزة بنجمة فقط" للاطّلاع على مجموعة البيانات هذه فقط من مجموعات البيانات العامة.

وسِّع الجداول في مجموعة البيانات لعرض المخطط ومعاينة البيانات. سنستخدم sample_contents، الذي يحتوي فقط على عينة (10%) من البيانات الكاملة في جدول المحتويات. في ما يلي معاينة للبيانات:

5- إنشاء مجموعة بيانات BigQuery
مجموعة بيانات BigQuery هي مجموعة من الجداول. يتم تخزين جميع الجداول في مجموعة البيانات في الموقع الجغرافي نفسه. يمكنك أيضًا إرفاق عناصر تحكّم مخصّصة في الوصول للحدّ من الوصول إلى مجموعة بيانات وجداولها.
أنشئ مجموعة بيانات في المنطقة "الولايات المتحدة" (أو أي منطقة من اختيارك) باسم bq_llm

ستتضمّن مجموعة البيانات هذه نموذج تعلُّم الآلة الذي سننشئه في الخطوات القادمة. عادةً ما نخزّن البيانات التي نستخدمها في تطبيق تعلُّم الآلة في جدول ضمن مجموعة البيانات هذه، ولكن في حالة الاستخدام هذه، تكون البيانات متوفّرة في مجموعة بيانات عامة على BigQuery، وسنشير إليها مباشرةً من مجموعة البيانات التي أنشأناها حديثًا حسب الحاجة. إذا كنت تريد تنفيذ هذا المشروع على مجموعة البيانات الخاصة بك المحفوظة في ملف CSV (أو أي ملف آخر)، يمكنك تحميل بياناتك إلى مجموعة بيانات BigQuery في جدول من خلال تنفيذ الأمر أدناه من نافذة Cloud Shell:
bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string
6. إنشاء اتصال خارجي
أنشئ اتصالاً خارجيًا (فعِّل واجهة برمجة التطبيقات BQ Connection API إذا لم يسبق لك إجراء ذلك) ودوِّن رقم تعريف حساب الخدمة من تفاصيل إعدادات الاتصال:
- انقر على الزر "إضافة" (+) في جزء "مستكشف BigQuery" (على يمين وحدة تحكّم BigQuery)، ثمّ انقر على "الربط بمصادر البيانات الخارجية" في المصادر الشائعة المُدرَجة.
- اختَر "BigLake والوظائف البعيدة" كنوع الاتصال وقدِّم "llm-conn" كمعرّف الاتصال

- بعد إنشاء الاتصال، سجِّل حساب الخدمة الذي تم إنشاؤه من تفاصيل إعدادات الاتصال.
7. منح الأذونات
في هذه الخطوة، سنمنح حساب الخدمة أذونات الوصول إلى خدمة Vertex AI:
افتح "إدارة الهوية وإمكانية الوصول" (IAM) وأضِف حساب الخدمة الذي نسخته بعد إنشاء الاتصال الخارجي كجهة أساسية، ثم اختَر دور "مستخدم Vertex AI".

8. إنشاء نموذج تعلُّم آلة عن بُعد
أنشئ النموذج البعيد الذي يمثّل نموذجًا لغويًا كبيرًا مستضافًا على Vertex AI:
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
يتم إنشاء نموذج باسم llm_model في مجموعة البيانات bq_llm التي تستخدم واجهة برمجة التطبيقات CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 من Vertex AI كدالة بعيدة. سيستغرق إكمال هذه الخطوة عدة ثوانٍ.
9- إنشاء نص باستخدام نموذج تعلُّم الآلة
بعد إنشاء النموذج، استخدِمه لإنشاء نص أو تلخيصه أو تصنيفه.
SELECT
ml_generate_text_result['predictions'][0]['content'] AS generated_text,
ml_generate_text_result['predictions'][0]['safetyAttributes']
AS safety_attributes,
* EXCEPT (ml_generate_text_result)
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens));
**التفسير:
**ml_generate_text_result** هي الاستجابة من نموذج إنشاء النصوص بتنسيق JSON الذي يحتوي على سمات المحتوى والسلامة: أ. يمثّل المحتوى نتيجة النص الذي تم إنشاؤه ب. تمثّل "سمات الأمان" فلتر المحتوى المضمّن الذي يتضمّن حدًا قابلاً للتعديل ويتم تفعيله في Vertex AI Palm API لتجنُّب أي ردود غير مقصودة أو غير متوقّعة من النموذج اللغوي الكبير، ويتم حظر الردّ إذا كان ينتهك حد الأمان.
ML.GENERATE_TEXT هي البنية التي تستخدمها في BigQuery للوصول إلى النموذج اللغوي الكبير (LLM) في Vertex AI من أجل تنفيذ مهام إنشاء النصوص.
تضيف الدالة CONCAT عبارة PROMPT وسجلّ قاعدة البيانات
github_repos هو اسم مجموعة البيانات، وsample_contents هو اسم الجدول الذي يحتوي على البيانات التي سنستخدمها في تصميم الطلب.
درجة العشوائية هي مَعلمة الطلب التي تتحكّم في عشوائية الردّ، وكلما كانت أقل، كان ذلك أفضل من حيث الصلة بالموضوع.
Max_output_tokens هو عدد الكلمات التي تريدها في الرد.
تبدو استجابة الاستعلام على النحو التالي:

10. تسوية نتيجة طلب البحث
لنعمل على تسوية النتيجة حتى لا نضطر إلى فك ترميز JSON بشكل صريح في طلب البحث:
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
**التفسير:
يمثّل flatten_json_output** القيمة المنطقية التي إذا تم ضبطها على "صحيح"، تعرض نصًا مسطّحًا قابلاً للفهم تم استخراجه من استجابة JSON.
تبدو استجابة الاستعلام على النحو التالي:

11. تَنظيم
لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذه المشاركة، اتّبِع الخطوات التالية:
- في Google Cloud Console، انتقِل إلى صفحة إدارة الموارد.
- في قائمة المشاريع، اختَر المشروع الذي تريد حذفه، ثم انقر على "حذف".
- في مربّع الحوار، اكتب رقم تعريف المشروع، ثم انقر على "إيقاف" لحذف المشروع.
12. تهانينا
تهانينا! لقد استخدمت بنجاح برنامجًا من نماذج اللغات الكبيرة (LLM) لإنشاء النصوص في Vertex AI بشكل آلي لإجراء تحليل نصي لبياناتك باستخدام استعلامات SQL فقط. يمكنك الاطّلاع على مستندات منتج Vertex AI LLM لمعرفة المزيد عن النماذج المتاحة.