بناء الذكاء الاصطناعي الجدير بالثقة بسرعة 100 ميل في الساعة

1. نظرة عامة

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

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

ستعمل مع مجموعة كبيرة من بيانات القياس عن بُعد، وستحوّلها إلى نموذج مفيد وفعّال للاستدلال باستخدام الذكاء الاصطناعي، وستجمع بين النتائج المستندة إلى النماذج اللغوية الكبيرة والإرشادات البشرية المرمّزة لإنتاج ردود أكثر موثوقية.

ما ستنشئه

في هذا الدرس التطبيقي حول الترميز، ستنشئ نموذجًا أوّليًا موثوقًا للذكاء الاصطناعي يتيح لك إجراء ما يلي:

  • بث بيانات القياس عن بُعد من سيارة سباق افتراضية تعمل على Google Cloud
  • تصوّر السيارة وهي تتحرّك حول مضمار سباق باستخدام Chrome
  • إعادة تشكيل بيانات القياس عن بُعد الأولية لتصبح جاهزة للاستخدام في الذكاء الاصطناعي
  • تطبيق طبقة استراتيجية مستندة إلى Google Gemini
  • الجمع بين نواتج النماذج وإرشادات السلامة وقواعدها المرمّزة
  • تقديم ملاحظات التدريب من خلال واجهة موجّهة للمستخدم

ما ستتعلمه

في نهاية هذا الدرس التطبيقي حول الترميز، ستتمكّن من:

  • شرح العوامل التي تجعل نظام الذكاء الاصطناعي أكثر موثوقية
  • شرح الغرض من بنية الذكاء الاصطناعي المعيارية
  • إنشاء مسار بسيط لمحاكاة بيانات القياس عن بُعد
  • إعداد بيانات منظَّمة ومفيدة لاستخدامها مع نموذج لغوي كبير
  • تطبيق "ضوابط الحماية" و"القواعد التي يضعها الإنسان" لتحسين الثقة
  • تقييم كيفية تطبيق هذه البنية على مجالات أخرى

2. المتطلبات

قبل البدء، تأكَّد من توفّر الحسابات والأدوات والخدمات المطلوبة.

المتطلبات الأساسية

يجب أن يتوفّر لك ما يلي:

  • حساب Google شخصي يستخدم عنوان Gmail
  • الوصول إلى Google Cloud وفهم أساسي لواجهة سطر الأوامر
  • حساب فوترة نشط أو أرصدة سحابية
  • فهم Google Cloud والذكاء الاصطناعي التوليدي باستخدام Gemini بشكل عام

‫Gemini هو نموذج الذكاء الاصطناعي من Google الذي يستند إلى أساس متطوّر من إمكانات الاستدلال التي تساعدك في تحويل أي فكرة إلى واقع. وهو نموذج رائع لفهم مختلف الوسائط والترميز المستند إلى الذكاء الاصطناعي الوكيل والبرمجة الوصفية.

Gemini

الحصول على أرصدة لاستخدام Google Cloud

للمطالبة برصيدك، انتقِل إلى هذا الرابط وسجِّل الدخول باستخدام عنوان بريد إلكتروني على Gmail (النطاق gmail.com). بعد ذلك، اقبل الرصيد في حساب الفوترة على Google Cloud Platform (GCP)، وسيتم تطبيقه على حسابك.

3- أهمية الذكاء الاصطناعي الجدير بالثقة

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

ويصبح ذلك مهمًا بشكل خاص عندما يعمل النظام على بيانات متغيرة بسرعة. قد لا يكون الردّ الذي يصل متأخرًا مفيدًا. قد تكون الإجابة مضلّلة إذا بدت واثقة من نفسها ولكنها تجاهلت سياقًا مهمًا. قد يكون من الصعب الوثوق بردّ لا يستند إلى خبرة بشرية، حتى لو كان يبدو منمّقًا.

في سيناريو سيارة السباق المستخدَم في هذا الدرس العملي، لا تكمن المشكلة في ما إذا كان بإمكان الذكاء الاصطناعي قول شيء مثير للاهتمام. المشكلة هي ما إذا كان بإمكان النظام تقديم نصائح مفيدة وآمنة وفي الوقت المناسب ومناسبة للحالة.

لنلقِ نظرة على عيّنة صغيرة من بيانات القياس عن بُعد ونقارن بين نتيجتَين محتملتَين:

Racing Car Telemetry Data
{
   "speedMph": 118,
   "throttle": 91,
   "frontGrip": "nominal",
   "rearGrip": "low",
   "trackPosition": "Turn 1 Entry"
}

ردّ بسيط من إنشاء الذكاء الاصطناعي

"Stay aggressive on the throttle and carry your speed into Turn 1"

ردّ مراعٍ للثقة

"Rear grip is low at Turn 1 entry. Reduce your throttle slightly and prioritize a stable corner entry"

هل لاحظت الفرق؟

ماذا سيحدث إذا اعتمدنا فقط على ردّ الذكاء الاصطناعي الساذج؟

تبدو الاستجابة الأولى واثقة، لكنّها تتجاهل المخاطر. الردّ الثاني أكثر فائدة لأنّه يعكس السياق والقيد.

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

لننتقل الآن إلى كيفية إنشاء بنية مماثلة.

4. التعرّف على الذكاء الاصطناعي عالي السرعة والبنية المعيارية الموثوقة

تحتاج بعض أنظمة الذكاء الاصطناعي إلى أنواع مختلفة جدًا من السلوك. ويجب أن تتفاعل بسرعة مع الظروف المتغيرة وأن تتيح أيضًا التفكير بشكل أبطأ وأكثر عمقًا.

يفصل التصميم المعياري هذه المسؤوليات إلى مسارات مختلفة. يمكن أن يكون أحد المسارات انعكاسيًا، ويتعامل مع التفسير الفوري والحساس للوقت للإشارات الواردة. يمكن أن يركّز مسار آخر على الاستراتيجية، ما يتيح التفكير بمستوى أعلى واتّخاذ قرارات أكثر وعيًا بالسياق. تستهدف المسارات الأخرى أنواعًا أخرى من الوظائف.

مخطط معماري

يجب اتخاذ بعض القرارات في الوقت الفعلي. تستفيد بعض القرارات من التفكير لفترة أطول.

وغالبًا ما يتطلّب الذكاء الاصطناعي الجدير بالثقة توفُّر كليهما.

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

في هذا البرنامج الصغير، لدينا مسار رد فعل ومسار استراتيجية تم تنفيذهما كدالتين في لغة Python.

const telemetry = {
  speed: 147,
  grip: 0.68,
  corner_type: "sharp",
  lap_trend: "entering_corners_too_fast",
};

function reflexPath(event: typeof telemetry): string {
  if (event.grip < 0.70) {
    return "REFLEX: Reduce throttle now";
  }
  return "REFLEX: No urgent issue";
}

function strategyPath(event: typeof telemetry): string {
  if (event.lap_trend === "entering_corners_too_fast") {
    return "STRATEGY: Brake earlier and prioritize corner exit";
  }
  return "STRATEGY: Driving pattern looks stable";
}

console.log(reflexPath(telemetry));
console.log(strategyPath(telemetry));

تتصرّف الدالتان بشكل مختلف عند توفّر بيانات القياس عن بُعد نفسها. وظيفة رد الفعل هي تحذير فوري. تمنحنا وظيفة الاستراتيجية نصائح تدريبية استنادًا إلى القواعد.

لماذا تعتقد أنّه من المفيد إبقاء هذه المنطق منفصلاً؟

لننشئ الآن تطبيقًا ممتعًا ومتعدد الأجزاء ونرى كيف يمكن لهذا التصميم تحويل ردود الفعل السريعة والاستدلال الأعمق إلى نظام ذكاء اصطناعي موثوق يمكنك تجربته.

5- إنشاء خادم بث بيانات القياس عن بُعد

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

في هذا القسم، ستنشئ بثًا بسيطًا لبيانات القياس عن بُعد لسيارة سباق افتراضية. ستأتي البيانات من مصدر CSV يحتوي على بيانات نظام تحديد المواقع العالمي (GPS) أو بيانات موضع المسار، وسيحوّلها تطبيقك إلى بث مباشر يمكن أن تستهلكه واجهة المستخدم وطبقة الذكاء الاصطناعي.

في هذا القسم، ستتمكّن مما يلي:

  • إنشاء مشروع جديد في Google Cloud لخادم البث والتطبيق
  • إنشاء خادم صغير لإرسال بيانات القياس عن بُعد
  • بثّ هذه الأحداث إلى واجهة مستخدم أو وحدة تحكّم في المتصفّح

1. فتح Cloud Shell

أ. انتقِل إلى Google Cloud Console.
ب- أنشِئ مشروعًا جديدًا لهذا الدرس العملي. انقر على القائمة المنسدلة للمشروع في أعلى الصفحة.

Google Cloud Console

عند إنشاء مشروع، يمكنك ربط حساب الفوترة:
ربط حساب الفوترة

اختياريًا، إذا سبق لك إنشاء مشروع، يمكنك فتح اللوحة اليمنى والنقر على Billing والتحقّق ممّا إذا كان حساب الفوترة مرتبطًا بحساب GCP هذا.

ج. الحصول على مفتاح Gemini API

بعد تفعيل رصيد Google Cloud، ستحتاج إلى مفتاح Gemini API للوصول إلى Gemini في Google Cloud.

لإنشاء مفتاح Gemini API، يجب استخدام Google Vertex AI Studio لإنشاء المفاتيح.

في Vertex AI Studio، انقر على "الحصول على مفتاح واجهة برمجة التطبيقات" في أسفل يمين الصفحة فوق "المستندات". أنشئ مفتاح API لـ Gemini (يبدو كسلسلة طويلة من الأحرف العشوائية على ما يبدو). احفظ هذا المفتاح في مكان آمن. سنستخدم مفتاح واجهة برمجة التطبيقات هذا في الخطوة 6 "إنشاء محاكي سباق السيارات" للمصادقة على إذن الوصول إلى Gemini في Google Cloud.

د. انقر على رمز Cloud Shell في شريط الأدوات العلوي (رمز النافذة الطرفية) لفتح نافذة طرفية مستندة إلى المتصفّح.
Cloud Shell

E. انتظِر إلى أن تبدأ جلسة الوحدة الطرفية.

جلسة الوحدة الطرفية

2. الحصول على الشفرة‏

استنسِخ مستودع البيانات الرئيسي.

git clone https://github.com/ocupop/trustable-ai-codelab.git
cd trustable-ai-codelab

لاحظ أنّ هناك مجلدَين في هذا المستودع: "koru-application" (تطبيق ويب) و "streaming-telemetry-server" (بيانات قياس عن بُعد لسيارة سباق محاكاة في الوقت الفعلي). تصف هذه الخطوة "خادم قياس استخدام البيانات المتدفقة". سنستخدم "koru-application" في الخطوة التالية.

3- تفعيل واجهات برمجة التطبيقات المطلوبة

يتم تشغيلها مرة واحدة لكل مشروع:

# Set Project ID
gcloud config set project YOUR_PROJECT_ID
# Enable APIs
gcloud services enable \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com

استبدِل YOUR_PROJECT_ID برقم تعريف مشروعك الفعلي (أو تخطَّ السطر الأول إذا كان المشروع قد تم إعداده).

يمكنك العثور على YOUR_PROJECT_ID في قائمة المشاريع

جلسة الوحدة الطرفية

4. نشر الخلفية على Cloud Run

من جذر المستودع (أي تأكَّد من أنّك في المجلد trustable-ai-codelab):

gcloud run deploy streaming-telemetry-server \
  --source streaming-telemetry-server \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

ملاحظة: قد تحتاج إلى الضغط على "Y" عندما يُطلب منك ذلك.

  • قد يطلب منك التشغيل الأول تفعيل واجهات برمجة التطبيقات أو إنشاء مستودع Artifact Registry، لذا عليك الموافقة حسب الحاجة.
  • إذا كنت تستخدم منطقة مختلفة عن us-central1، حدِّد تلك المنطقة باستخدام --region
  • عند انتهاء عملية النشر، تطبع gcloud service-URL. ما علينا سوى إضافة "events" إلى عنوان URL هذا لاستخدامه كنقطة نهاية كاملة لخادم القياس عن بُعد.

5- استخدام عنوان URL الخاص بالبث

يُصدر خادم القياس عن بُعد الآن بيانات قياس عن بُعد محاكاة باستخدام أحداث يتم إرسالها من الخادم (SSE) في نقطة نهاية بالصيغة التالية :

service-URL/events		// service-URL - the last line displayed by "deploy"

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

الناتج من نقطة نهاية البث في علامة تبويب المتصفّح

يمكنك إغلاق علامة تبويب المتصفّح لإنهاء الاتصال.

الاختبار باستخدام curl:

الآن، لنختبر من سطر أوامر shell.

curl -N service-URL/events		# Replace service-URL with actual deployment endpoint

من المفترض أن تظهر لك البيانات المتدفّقة الواردة في نافذة Cloud Shell.

الناتج من نقطة النهاية للبث عبر سطر أوامر shell

سنستخدم بيانات القياس عن بُعد هذه لمحاكاة البيانات التي ترسلها أجهزة الاستشعار في سيارة سباق. سيتم استخدام هذه البيانات في بقية الدرس العملي. يمكنك إنهاء برنامج curl من خلال إدخال CTRL-C في نافذة الوحدة الطرفية.

ما يجب الانتباه إليه

أثناء إكمال هذا القسم، انتبه إلى طبيعة البيانات الواردة. غالبًا ما تكون بيانات القياس عن بُعد الأولية كبيرة الحجم وحساسة للوقت وغير مناسبة على الفور للاستدلال المستند إلى الذكاء الاصطناعي. بعد إنشاء تطبيق الواجهة الأمامية، سنحتاج إلى فلترة البيانات الأولية إلى تنسيق فعّال يمكن للنموذج اللغوي الكبير معالجته بسرعة.

ولكن أولاً، لننشئ واجهة مستخدم على الويب لعرض البيانات.

6. Build the Racing Car Simulator

في هذا القسم، ستتمكّن مما يلي:

  • إنشاء محاكاة لسيارة سباق
  • ربط خادم بيانات القياس عن بُعد بتطبيق الويب الخاص بسيارة السباق
  • عرض السباقات المحاكاة

في هذه المرحلة، لدينا محاكاة عملية لبيانات القياس عن بُعد من سيارة سباق تعمل على السحابة الإلكترونية. لننشئ الآن التطبيق الذي يعمل على جهازك المحلي ويتصل بخدمة Google Cloud ويعرض هذه البيانات بشكل مرئي.

يستفيد تطبيق الذكاء الاصطناعي الموثوق به من إمكانات ومرونة خدمات Google Cloud والذكاء المحلي الذي يتم تشغيله في Chrome.

تعمل خدمة قياس استخدام البيانات المتدفقة عن بُعد في Google Cloud، ولكن يعمل تطبيق سيارة السباق على جهازك المحلي. وهذا يعني أنّه عليك استنساخ المستودع مرة أخرى، ولكن هذه المرة على الكمبيوتر المحمول أو الكمبيوتر المكتبي.

ولتبسيط الأمر، يحتوي المستودع نفسه على الرمز البرمجي لكل من خادم البث وتطبيق سيارة السباق.

استنسِخ تطبيق الواجهة الأمامية من GitHub:

git clone https://github.com/ocupop/trustable-ai-codelab.git
cd trustable-ai-codelab

بعد استنساخ المستودع على الكمبيوتر المحمول أو الكمبيوتر المكتبي، لنشغّل التطبيق.

cd koru-application		# racing car simulation app
npm install
npm run dev

VITE

في Chrome، افتح المنفذ على جهازك المحلي (http://localhost:5173 كما في المثال أعلاه). ستظهر لك الصفحة المقصودة لتطبيق "التدريب على سباق السيارات باستخدام الذكاء الاصطناعي".

Your Corner Coach

انقر على الزر "فتح لوحة البيانات ->". سيؤدي ذلك إلى بدء واجهة مستخدم التطبيق.

لوحة بيانات Koru

في هذه المرحلة، يكون لديك خادم قياس عن بُعد ينشئ بيانات قياس عن بُعد محاكاة لسيارة سباق في Google Cloud، وتطبيق ويب محلي يمكنه عرض هذه البيانات والاتصال بنموذج لغوي كبير. لنربطها أيضًا بخدمات نماذج اللغة الكبيرة من Gemini.

في أعلى يسار التطبيق، انقر على رمز الترس (الإعدادات).

إعدادات Koru

أدخِل مفتاح Gemini API من الخطوة 2. يتيح لك ذلك الوصول إلى خدمات Gemini في Google Cloud.

انقر على "حفظ" لكي يتذكّر التطبيق مفتاح واجهة برمجة التطبيقات.

الآن، لنربط التطبيق بخادم بيانات القياس عن بُعد. في لوحة بيانات التطبيق، انقر على "الجلسة المباشرة".

إدخال بث SSE في Koru

أدخِل عنوان URL المحدّد لخادم قياس استخدام المنتج المستند إلى السحابة الإلكترونية (الخطوة 5) في حقل النص الذي يظهر فيه "SSE URL or .txt file path". كان عنوان URL لخدمة SSE بالتنسيق التالي:

https://streaming-telemetry-server-${PROJECT_NUMBER}.${REGION}.run.app/events

بعد إدخال عنوان URL لنقطة نهاية خادم القياس عن بُعد، انقر على "ربط" (على يسار حقل النص). لا تنسَ إضافة "events" في نهاية عنوان URL.

من المفترض أن يظهر لك الآن التطبيق الذي يعرض البيانات المحاكاة.

إذا كان مستوى صوت مكبّر الصوت مرتفعًا، يمكنك سماع نصائح سباق السيارات من أنواع مختلفة من المدربين. لكل مدرب شخصية مختلفة. جرِّب اختيار مدربين مختلفين للاطّلاع على نصائحهم المتنوعة بشأن السباقات وأساليبهم الصوتية المختلفة. يمكنك إيقاف الصوت بالنقر على رمز مكبّر الصوت إذا لزم الأمر.

مثال على تشغيل التطبيق

بعد أن أصبح لدينا تطبيق يعمل، لنستكشف كيف أعددنا البيانات لمعالجتها بكفاءة من خلال النموذج اللغوي الكبير وكيف يمكننا إضافة ميزات إضافية لتعزيز موثوقية النظام بشكل عام.

7. Prepare Telemetry for AI Reasoning

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

في هذا القسم، ستعيد تشكيل بيانات القياس عن بُعد لتصبح أكثر فائدة.

في هذا القسم، ستتمكّن مما يلي:

  • فحص ملف JSON غير المعالَج الخاص بقياس الأداء عن بُعد
  • تحديد الحقول الأكثر صلة بالاستدلال
  • فلترة البيانات أو تلخيصها
  • تقليل التفاصيل غير الضرورية
  • إعداد تمثيل متوافق مع الذكاء الاصطناعي لحالة القيادة

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

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

../src/services/telemetryStreamService.ts near line 180

// Clamp G-forces
gLat = Math.max(-3, Math.min(3, gLat));		// sideways G-force
gLong = Math.max(-3, Math.min(3, gLong));	// front/back G-force

تقيس قوى الجاذبية في السيارة التسارع أو التباطؤ. في سيارة السباق، يساعد فهم قوى الجاذبية في التحكّم في السيارة وتحسين أدائها بشكل عام. إذا لم يتوفّر هذا النوع من المعلومات في تطبيقنا، سيكون من الصعب تقديم نصائح للسائق. علِّق على هذين السطرين، واضبط قيمتَي gLat وgLong على 0.0، وأعِد تشغيل التطبيق.

يُرجى العِلم أنّه لا يتم تقديم أي نصائح عندما تقترب السيارة من منعطف. هذا ليس مفيدًا جدًا لسائق سباق!

بعد ذلك، تراجَع عن التغيير وأعِد تشغيل التطبيق. هل لاحظت النصائح الصوتية المفيدة عندما تصل السيارة إلى زاوية؟ تُعدّ نقاط بيانات قوة الجاذبية مهمة لتقديم النصائح للسائق.

والآن، لنفرض قيودًا اصطناعية على سرعة السيارة لتصبح 30 ميلاً في الساعة. لن نفوز بأي سباقات بهذه السرعة، ولكنّها ستوضّح بالتأكيد نوع التدريب الذي نتلقّاه.

في الملف نفسه (telemetryStreamService.ts) بالقرب من السطر 158، ستجد الدالة processPoint(). لنقيّد السرعة في هذه الدالة.

تغيير:

private processPoint(point: GpsSSEPoint) {
...
 const speedKmh = point.speed > 200 ? point.speed : point.speed * 3.6;
...

إلى:

private processPoint(point: GpsSSEPoint) {
...
 let speedKmh = point.speed > 200 ? point.speed : point.speed * 3.6;
 speedKmh = Math.min(speedKmh, 48);   // 48 kmh is approx 30 mph
...

أعِد تشغيل التطبيق. ما هو نوع النصائح التدريبية التي نتلقّاها الآن؟ لا نحتاج إلى الكثير إذا كنا نقود السيارة بشكل مريح.

الآن، ألغِ هذه التغييرات وأعِد تشغيل التطبيق.

من الواضح أنّ سرعة السيارة هي نقطة بيانات قيّمة. من المهم جدًا فهم البيانات المحدّدة التي تعتبر ضرورية لتقديم نصائح مفيدة. من المهم أيضًا تقييم البيانات غير ذات الصلة.

يجب أن تبدأ أيضًا بالتفكير في الأمان والثقة هنا. وحتى إذا كانت البيانات المدخلة مُعدّة بشكل جيد، لا يمكن ضمان الحصول على إجابة موثوقة. ولا يزال علينا تقديم قواعد موجّهة من قِبل الإنسان وقيود واضحة.

إعداد البيانات ليس مجرد خطوة معالجة مسبقة. وهي جزء مهم من استراتيجية الثقة. غالبًا ما تؤدي المدخلات الأكثر وضوحًا إلى الحصول على نتائج أكثر تركيزًا وموثوقية.

8. إضافة ضوابط الحماية والخبرة البشرية المرمّزة

يجب ألا يعتمد نظام الذكاء الاصطناعي الجدير بالثقة على مخرجات النموذج وحده. في كثير من الحالات، تجمع الأنظمة الأكثر موثوقية بين قدرات الاستدلال في النماذج اللغوية الكبيرة والقواعد الواضحة ومعرفة المجال والقيود التي يفرضها الإنسان.

في هذا القسم، ستضيف هذه الطبقة.

يمكن اعتبار هذه الطبقة بمثابة معرفة تدريبية مبرمَجة. وقد تتضمّن أنماط الردود المفضّلة أو قواعد التحقّق من الصحة أو عمليات التحقّق من الأمان أو الإرشادات المنظَّمة التي تساعد النظام في الحفاظ على دقته وفائدته.

في هذا القسم، ستتمكّن مما يلي:

  • تقديم قواعد الردود التي تحدّد سلوك النموذج
  • تطبيق عمليات التحقّق من الأمان للحدّ من النصائح المضلّلة
  • تضمين الخبرة البشرية المرمّزة في مسار المعالجة
  • مقارنة الردود قبل هذه الإضافات وبعدها

لنستكشف كيفية إضافة خبرة المجال إلى تطبيقنا.

عادةً ما لا يتم تدريب النماذج اللغوية الكبيرة على السباقات أو على فيزياء أداء سيارات السباق. إذا كان تطبيقنا يتضمّن هذه الخبرة في المجال، يمكن للمستخدمين الوثوق بشكل أكبر بإرشاداته. تستند هذه الإرشادات إلى قواعد تستند إلى الخبرة البشرية، أي طبقة خبرة في مجال معيّن.

../src/utils/coachingKnowledge.ts near line 115

...
export const RACING_PHYSICS_KNOWLEDGE = `
CORE PRINCIPLES:
1. **The Friction Circle:** A tire has 100% grip. If you use 100% for braking, you have 0% for turning.
  - *Error:* Turning while 100% braking = Understeer (Plowing).
  - *Fix:* "Trail braking" (releasing brake pressure as steering angle increases).

2. **Weight Transfer:**
  - Braking shifts weight forward (Front grip UP, Rear grip DOWN).
  - Accelerating shifts weight backward (Front grip DOWN, Rear grip UP).
  - *Error:* Lifting off throttle mid-corner shifts weight forward abruptly -> Oversteer (Spin risk).

3. **The racing line:**
...

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

لنُزِل RACING_PHYSICS_KNOWLEDGE ونستكشف نصائحنا بشأن السباقات.

export const RACING_PHYSICS_KNOWLEDGE = ``;

أعِد تشغيل التطبيق. ما هو نوع النصائح التدريبية التي نتلقّاها الآن؟

لاحظ النصيحة العامة.

لم تعُد تصلنا معلومات تفصيلية حول الاحتكاك ونقل الوزن وسرعة الخروج وما إلى ذلك، وبالتالي انخفضت درجة موثوقية البيانات لدينا. استعادة هذه الخبرة في السباقات وإعادة تشغيل التطبيق

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

تشكّل النماذج اللغوية الكبيرة جزءًا من الحل، ولكنّها ليست الحل الكامل. تتحسّن الثقة عندما يتم توجيه نتائج الذكاء الاصطناعي من خلال المعرفة البشرية الواضحة.

9- تصميم شخصيات التدريب وتجربة المستخدم

بعد إعداد مسار الاستدلال، السؤال التالي هو كيفية تواصل النظام مع المستخدم.

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

في هذا القسم، ستتمكّن مما يلي:

  • إنشاء تعليمات نظام لشخصية تدريبية أو تحسينها
  • تجربة أساليب تدريب مختلفة
  • مراقبة تأثير التغييرات في الطلبات على الردود
  • تحديد متطلبات واجهة المستخدم للحصول على ملاحظات موثوقة
  • التعرّف على إمكانية استخدام ميزة "تحويل النص إلى كلام" (TTS) للرسائل العاجلة وغير العاجلة

يتضمّن تطبيقنا العديد من شخصيات التدريب. ويقدّم كلّ منها أنواعًا مختلفة من نصائح التدريب.

PERSONA

الخصائص

Tony

تحفيزية، قائمة على المشاعر

راشيل

تقني، يركّز على الفيزياء

AJ

أوامر مباشرة وصريحة

Garmin

التحسين المستند إلى البيانات

Super AJ

مفاتيح التبديل التكيُّفية حسب نوع الخطأ

يتم تحديد هذه الشخصيات في الملف ../src/utils/coachingKnowledge.ts.

في هذا الملف، ستلاحظ خريطة كائنات (COACHES) تربط مفاتيح السلسلة بـ CoachPersonas. يحتوي CoachPersona على سمات لكل نوع من المدربين. إحدى السمات المهمة هي systemPrompt. لكل شخصية systemPrompt خاص بها يوجّه النموذج اللغوي الكبير في طريقة الرد.

لنغيّر إحدى هاتين الكلمتين system prompts ونرى كيف سيردّ النموذج اللغوي الكبير.

بالقرب من السطر 31، سترى systemPrompt لـ "أ. ج." الذي يقدّم نصائحه بأسلوب مباشر وصريح جدًا. لنغيّر ذلك systemPrompt لكي يكون AJ مؤدبًا بشكل مفرط.

systemPrompt: `You are AJ, a race engineer that is excessively polite. 
	Use telemtry terminology.  Be actionable
	Examples: 	"Lat G settling. please throttle", 
				"Brake when its convenient."
	Keep responses under 12 words. Never explain  just command.`

أعِد تشغيل التطبيق، واختَر AJ كمدرب، واطّلِع على نوع الردود التي يتم إنشاؤها.

الآن، استعِد systemPrompt الأصلي وأعِد تشغيل التطبيق. يُرجى العِلم أنّ طلب النظام مهم جدًا في توجيه النموذج اللغوي الكبير لتقديم ردّ يتناسب مع الشخصية.

لا يقتصر مفهوم الثقة على الدقة. يتعلّق الأمر أيضًا بالتسليم. قد تكون النصيحة غير فعّالة حتى لو كانت دقيقة من الناحية الفنية، وذلك إذا كانت غير واضحة أو في وقت غير مناسب أو مشتّتة.

يجب أن يتواصل النظام الموثوق به بشكل جيد. تجربة المستخدم هي جزء من بنية الثقة.

10. مراجعة بنية التشفير التام بين الأطراف

في هذه المرحلة، تكون قد أنشأت الأجزاء الرئيسية من النظام. حان الوقت الآن للتراجع ومراجعة كيفية عملها معًا.

يتضمّن تطبيقك الآن المكوّنات التالية:

  • مصدر بيانات القياس عن بُعد
  • طبقة العرض المرئي
  • مرحلة تحويل البيانات الجاهزة للذكاء الاصطناعي
  • مكوّنات الاستراتيجية المستندة إلى نموذج لغوي كبير قادر على الاستنتاج
  • ضوابط الحماية والتوجيه البشري المرمّز
  • تجربة التدريب المباشر للمستخدمين

من الطرق المفيدة والبسيطة لفهم التدفق العام لهذه المكوّنات هي إضافة تسجيل إلى تطبيقنا.

سنضيف تسجيلًا لعرض بيانات القياس عن بُعد أثناء انتقالها عبر المسارات.

لنبدأ بعرض بيانات القياس عن بُعد. في telemetryStreamService.ts، بالقرب من السطر 212 (قبل this.emit(frame))، أضِف سطرًا يعرض السرعة وقوة الجاذبية الجانبية (التسارع الجانبي) ومدى الضغط الذي يمارسه السائق على دواسة الفرامل.

console.log('FRAME', { 
    speed: frame.speed.toFixed(1), 
    gLat: frame.gLat.toFixed(2),
    brake: frame.brake.toFixed(0) }
);

أعِد تحميل التطبيق. قبل تشغيل التطبيق، لنفتح وحدة التحكّم في "أدوات المطوّرين" في Chrome لعرض معلومات تصحيح الأخطاء هذه.

وحدة تحكّم أدوات مطوّري البرامج

في التطبيق، أدخِل نقطة نهاية القياس عن بُعد وانقر على "ربط". يمكنك الآن الاطّلاع على بيانات القياس عن بُعد الواردة.

الآن، لنضِف تسجيلًا لمسار رد الفعل ومسار الاستراتيجية.

في ../src/services/coachingService.ts حول السطر 71 قبل this.emit()، أضِف سطر تسجيل لمسار reflex:

console.log('Reflex', { 
	action: rule.action, 
	text, 
	coach: this.coachId }
);

وفي الملف نفسه، بالقرب من السطر 287، قبل this.emit()، أضِف سطر تسجيل مشابهًا لمسار الاستراتيجية (لنضِف ردّ التدريب text الذي تعرضه Gemini API):

console.log('Strategy', { 
	coach: coach.id, 
	chars: text.length, 
	preview: text.slice(0, 60) }
);

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

لاحظ أنّنا ربطنا المكوّنات الفنية المختلفة لتحقيق الهدف الأكبر المتمثل في توفير تكنولوجيات ذكاء اصطناعي جديرة بالثقة. لا تكمن قيمة البنية في أي مكوّن بمفرده. تكمن القيمة في كيفية تعزيز الأجزاء لبعضها البعض.

الذكاء الاصطناعي الجدير بالثقة هو نتيجة معمارية، وليس ميزة واحدة.

إيقاف الخدمة (إزالتها)

من المهم تذكُّر إزالة الخدمة عند الاستغناء عنها. بعد الانتهاء من اختبار خادم القياس عن بُعد مع التطبيق، عليك حذف خدمة Cloud Run وإيقاف الفوترة الخاصة بها باتّباع الخطوات التالية:

gcloud run services delete streaming-telemetry-server \
  --region us-central1 \
  --platform managed

تذكَّر استبدال us-central1 بالمنطقة التي استخدمتها عند النشر، إذا لزم الأمر. أكِّد اختيارك عندما يُطلب منك ذلك.

11. التحديات

بعد أن أصبح التطبيق الأساسي يعمل وأصبحت على دراية بالمكوّنات المختلفة، جرِّب توسيع التصميم.

التحديات المقترَحة

  • نقل المزيد من منطق التدريب إلى الحافة
  • تعديل المحاكاة لتشمل المطر أو انخفاض قوة الجر
  • استكشاف كيف يمكن أن يؤدي ضبط النموذج أو التعديل الدقيق إلى تحسين الأداء
  • تكييف البنية مع مجال آخر، مثل الطب أو التصنيع أو الخدمات اللوجستية

على سبيل المثال، ضع في اعتبارك هذه الأسئلة عند تطبيق الدروس المستفادة في هذا الدرس التطبيقي على نطاق آخر:

  • ما هو المكافئ لبيانات قياس الأداء في السباقات، أي البيانات المستمرة، في مجال آخر؟
  • ما هي القرارات التي يجب اتخاذها على الفور وما هي القرارات الأكثر استراتيجية؟
  • ما هو نوع الخبرة البشرية التي يجب ترميزها؟
  • ما الذي يحتاج المستخدمون إلى رؤيته ليثقوا في النظام؟

تشجّعك هذه التحديات على التفكير في ما هو أبعد من مثال السباق والتعرّف على نمط التصميم الأوسع نطاقًا الخاص بالجدارة بالثقة الذي يقدّمه هذا الدرس التطبيقي حول الترميز.

12. الخلاصة والخطوات التالية

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

بدأت باستخدام بيانات قياس عن بُعد أولية، وحوّلتها إلى تنسيق مفيد لنموذج لغوي كبير، وطبّقت أسلوب التفكير المستند إلى الذكاء الاصطناعي، وعزّزت الناتج بإرشادات مشفّرة من الإنسان وقيود على الردود. خلال هذه الرحلة، تبيّن لك أنّ الثقة تنبع من البنية الأساسية، وليس من مخرجات النموذج وحدها.

غالبًا ما يجمع نظام الذكاء الاصطناعي الجدير بالثقة بين ما يلي:

  • بيانات منظَّمة في الوقت الفعلي
  • الاستدلال المستند إلى النموذج
  • خبرة في مجال الترميز
  • ضوابط حماية صريحة
  • تصميم مدروس لتجربة المستخدم

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

خط النهاية