0Pricing
AI Agents · درس

بناء وكيل موثوق لملء النماذج

دراسة حالة عملية: سجّل الدخول إلى بوابة، واملأ نموذجًا متعدد الصفحات، وتحقق من الإرسال.

بناء وكيل موثوق لملء النماذج درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

مشروع واقعي

وكيل «لملء هذا النموذج متعدد الصفحات». سنجمع بين Playwright وتخطيط LLM وإعادة المحاولة والرجوع إلى الرؤية.

البنية

  1. يقرأ LLM متطلبات الحقول من مواصفة JSON
  2. تفتح Playwright النموذج
  3. لكل حقل، ابحثوا عن المحدّد والقيمة، ثم املؤوه وتحققوا منه
  4. إذا تعذّر تحديد موقع حقل عبر DOM، ارجعوا إلى الرؤية
  5. أرسلوا النموذج وتحققوا من نجاح العملية

Step 1: Define the Task

TASK = {
    'url': 'https://example.com/apply',
    'login': {'user': 'alice', 'pass': '...'},
    'fields': {
        'first_name': 'Alice',
        'last_name': 'Smith',
        'email': 'alice@example.com',
        'role': 'Senior Engineer'
    }
}

Step 2: Login

page.goto(TASK['url'])
if page.locator('input[name="username"]').is_visible():
    page.fill('input[name="username"]', TASK['login']['user'])
    page.fill('input[name="password"]', TASK['login']['pass'])
    page.click('button[type="submit"]')
    page.wait_for_load_state('networkidle')

Step 3: Field Filler

def fill_field(page, field_name, value):
    for selector in [
        f'input[name="{field_name}"]',
        f'input[aria-label="{field_name}"]',
        f'input[placeholder*="{field_name}"]',
        f'label:has-text("{field_name}") + input'
    ]:
        if page.locator(selector).count() > 0:
            page.fill(selector, value)
            return True
    return False

# --- demo ---
class _FakeLocator:
    def __init__(self, found):
        self._found = found
    def count(self):
        return 1 if self._found else 0

class _FakePage:
    """Only the 3rd selector (placeholder) matches, to show the fallback loop."""
    def locator(self, selector):
        return _FakeLocator(found='placeholder*=' in selector)
    def fill(self, selector, value):
        print(f'Filled via selector: {selector} -> {value!r}')

page = _FakePage()
ok = fill_field(page, 'email', 'alice@example.com')
print(f'fill_field succeeded: {ok}')

الخطوة 4: محدّد المواقع بمساعدة LLM

إذا فشلت المحدّدات القياسية، اطلبوا من LLM تحديد موقع الحقل:

def ask_llm_for_selector(html, field_name):
    prompt = f'Find the input element for "{field_name}" in this HTML and return a CSS selector. HTML:\n{html[:5000]}'
    return llm.invoke(prompt).content.strip()

الخطوة 5: الرجوع إلى الرؤية

إذا عجز LLM حتى عن العثور على محدّد، التقطوا لقطة شاشة واستخدموا الرؤية:

if not filled:
    screenshot = page.screenshot()
    coordinate = vision_llm_locate(screenshot, field_name)
    page.mouse.click(coordinate.x, coordinate.y)
    page.keyboard.type(value)

الخطوة 6: التحقق من كل خطوة

بعد الملء، اقرأوا القيمة مرة أخرى:

actual = page.input_value(selector)
assert actual == expected_value, f'Expected {expected_value}, got {actual}'

Step 7: Submit and Verify

page.click('button[type="submit"]')
page.wait_for_load_state('networkidle')
if page.locator('text=Thank you').count() == 0:
    raise SubmissionFailed('Success page not detected')

الخطوة 8: منطق إعادة المحاولة

تتعرض النماذج أحيانًا لأعطال. أعيدوا المحاولة مع إجراء فحوصات عدم التكرار:

@retry(stop=stop_after_attempt(3), wait=wait_fixed(2))
def fill_and_submit(page, task):
    ...

الخطوة 9: التعامل مع CAPTCHA

إذا احتوى النموذج على reCAPTCHA، استخدموا خدمة حل (2Captcha أو Anti-Captcha) — أو تعاملوا مع الفشل بسلاسة واطلبوا مساعدة إنسان.

الخطوة 10: التسجيل وإعادة التشغيل

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

context.tracing.stop(path=f'trace-{task_id}.zip')
# View with: playwright show-trace trace-abc.zip

اعتبارات التزامن

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

احترام الموقع المستهدف

  • خفّفوا سرعة الإجراءات (فالبشر لا يكتبون بسرعة 200 حرف في الثانية)
  • التزموا بملف robots.txt وبشروط الخدمة
  • استخدموا عناوين IP متناوبة فقط عندما يُسمح بذلك
  • تجنبوا إساءة الاستخدام — فحركة الوكيل لا تعني شنّ عملية كشط واسعة

استراتيجية المتانة

ما الاستراتيجية الأكثر موثوقية لملء النماذج التي تحتوي على HTML غير متوقع؟

مراجعة

Playwright + محدّدات بمساعدة LLM + الرجوع إلى الرؤية + التحقق من كل خطوة + إعادة المحاولة + سجلات التتبّع. هذه هي وصفة ملء النماذج بشكل موثوق.

الأسئلة الشائعة

هل درس «بناء وكيل موثوق لملء النماذج» مجاني؟

نعم — نص درس «بناء وكيل موثوق لملء النماذج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «بناء وكيل موثوق لملء النماذج»؟

دراسة حالة عملية: سجّل الدخول إلى بوابة، واملأ نموذجًا متعدد الصفحات، وتحقق من الإرسال. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «بناء وكيل موثوق لملء النماذج»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

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

جميع الدروس في هذه الدورة

  1. أتمتة المتصفح باستخدام Playwright
  2. نماذج الرؤية لفهم الشاشة
  3. أنماط استخدام الحاسوب (Anthropic Computer-Use)
  4. بناء وكيل موثوق لملء النماذج
← العودة إلى AI Agents