مقدمة
في عالم البرمجة المتسارع، يصبح الجمع بين نماذج اتخاذ القرار التقليدية ونماذج اللغة الكبيرة (LLM) خطوة استراتيجية لتسريع تنفيذ السيناريوهات المعقدة. يهدف هذا الدليل إلى توضيح كيفية بناء تدفق عمل هجين يدمج أتمتة المتصفح مع منطق اتخاذ القرار القائم على القواعد.
لماذا نحتاج إلى نموذج هجين؟
النماذج التقليدية توفر دقة عالية في تنفيذ الإجراءات المحددة سلفًا، بينما تتميز نماذج LLM بالقدرة على فهم النصوص الطبيعية وتوليد حلول مرنة. الجمع بينهما يخلق نظامًا قادرًا على التعامل مع حالات غير متوقعة دون فقدان الاستقرار.
الفوائد الرئيسية
- تقليل الحاجة إلى كتابة سكريبتات يدوية لكل حالة.
- تحسين قابلية الصيانة عبر فصل المنطق عن التنفيذ.
- تمكين المستخدمين غير التقنيين من تعديل القواعد باستخدام لغة طبيعية.
المتطلبات الأساسية
قبل البدء، تأكد من توفر الأدوات التالية:
- Python 3.10 أو أحدث.
- مكتبة
playwrightلأتمتة المتصفح. - واجهة برمجة تطبيقات LLM (مثل OpenAI أو Anthropic).
- بيئة افتراضية لإدارة الحزم.
خطوات بناء التدفق
سنتبع النهج التالي لتجميع المكوّنات:
- تصميم نموذج اتخاذ القرار باستخدام جدول قواعد.
- إعداد واجهة استدعاء LLM لتوليد استجابات مرنة.
- دمج كلا المكوّنين داخل سكريبت Playwright.
- اختبار السيناريوهات وتحسين الأداء.
1. تصميم نموذج اتخاذ القرار
نبدأ بإنشاء ملف rules.yaml يحتوي على شروط وإجراءات واضحة. مثال:
- condition: "صفحة المنتج تحتوي على كلمة 'خصم'" action: "انقر زر الشراء" - condition: "رسالة الخطأ تتضمن 'timeout'" action: "أعد تحميل الصفحة"
يمكن توسيع القواعد لاحقًا بإضافة معايير جديدة دون تعديل الكود الأساسي.
2. إعداد استدعاء LLM
نستخدم مكتبة openai لإنشاء دالة generate_response(prompt) تُعيد نصًا يوضح الخطوة التالية بناءً على سياق الصفحة. مثال على الـ prompt:
You are an assistant that helps automate web browsing. Given the current page content:
"{{page_content}}"
Suggest the next action.
الدالة تعيد نصًا مثل “انقر زر تسجيل الدخول” أو “اكتب كلمة مرور”.
3. دمج Playwright مع LLM
الكود التالي يوضح كيفية ربط القواعد مع ردود LLM داخل حلقة تشغيلية:
import yaml, openai, asyncio
from playwright.async_api import async_playwright
async def run():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
await page.goto('https://example.com')
while True:
content = await page.content()
# 1. تحقق من القواعد الثابتة
for rule in rules:
if rule['condition'] in content:
await execute_action(page, rule['action'])
continue
# 2. إذا لم تطابق أي قاعدة، استعن بـ LLM
prompt = f"You are an assistant that helps automate web browsing. Given the current page content:\n{content}\nSuggest the next action."
response = await generate_response(prompt)
await execute_action(page, response.strip())
asyncio.run(run())
الدالة execute_action تقوم بتحليل النص وتنفذ الأوامر باستخدام Playwright.
4. اختبار وتحسين الأداء
بعد بناء التدفق، يجب تشغيله على مجموعة من المواقع لتقييم الاستجابة. استخدم أدوات مثل pytest لتسجيل الوقت المستغرق لكل خطوة وتحديد الاختناقات.
جدول مقارنة بين النموذجين
| المكوّن | النموذج التقليدي | نموذج LLM |
|---|---|---|
| المدخلات | قواعد ثابتة | نص حر |
| المرونة | منخفضة | عالية |
| صعوبة الصيانة | عالية | منخفضة |
| سرعة الاستجابة | فورية | تعتمد على زمن الشبكة |
| التكلفة | قليلة | متوسطة إلى عالية حسب الاستخدام |
أفضل الممارسات
- احرص على وضع حدود زمنية (timeout) لاستدعاءات LLM لتجنب الانتظار الطويل.
- احتفظ بنسخة احتياطية من القواعد في ملف منفصل لتسهيل التحديث.
- استخدم نماذج LLM صغيرة (مثل GPT‑3.5) في بيئات الاختبار لتقليل التكلفة.
- قم بتسجيل جميع الأحداث في ملف log لتسهيل تتبع الأخطاء.
خاتمة
دمج نماذج اتخاذ القرار مع نماذج اللغة الكبيرة يفتح آفاقًا جديدة لأتمتة المتصفح بذكاء. من خلال اتباع الخطوات المذكورة، يمكن للفرق التقنية بناء تدفقات عمل هجينة تتسم بالمرونة والموثوقية، وتقلل من الاعتماد على كتابة سكريبتات يدوية لكل حالة. استمر في تحسين القواعد وتحديث نماذج LLM لتظل دائمًا في مقدمة الابتكار.
يرتبط هذا المسار أيضاً بحلول عملية أخرى شرحناها بالتفصيل في 10 أسرار لمستقبل GEMINI النموذج الاستثنائي.
[…] نماذج اتخاذ القرار: دليل عملي لبناء تدفق عمل هجين للـ LLM… […]