تحديات التطبيق الوكيلي

جرّب هذه التحديات بعد إتمام الخطوات الوكيلية الخمس كلها.


اختبار المعرفة

  1. ما الفرق بين استدعاء عادي لنموذج لغوي كبير (LLM) واستدعاء وكيلي للنموذج نفسه؟

  2. ماذا يعني tool_choice="auto" في OpenAI API؟

  3. لماذا نحدّ حلقة الوكيل بعدد أقصى من الدورات؟

  4. ما الغرض من tool_call_id في رسالة استجابة الأداة؟

  5. كيف يحسّن التوجيه بسلسلة التفكير قدرة الذكاء الاصطناعي على الاستدلال؟


تحديات البرمجة

التحدي 1: اكتب الاختبارات أولًا (TDD)

تدرّب على التطوير المدفوع بالاختبارات: اكتب اختبار أداة الطقس قبل أن تبني الأداة.

def test_get_weather_known_city():
    from agent import get_weather
    result = get_weather("Paris")
    assert "°C" in result


def test_get_weather_unknown_city():
    from agent import get_weather
    result = get_weather("Atlantis")
    assert "not available" in result

شغّل الاختبارات — ستكون نتيجتها الفشل لأن الدالة get_weather غير موجودة بعد. الآن ابنِ الأداة واجعل الاختبارات تنجح.

التحدي 2: وكيل الطقس

أضف أداة طقس حقيقية تستدعي API مجانيًا للطقس (مثل wttr.in أو OpenWeatherMap) بدلًا من الدالة الوهمية get_weather.

تلميح: لا يحتاج wttr.in إلى مفتاح API:

response = requests.get(f"https://wttr.in/{city}?format=%C+%t")

التحدي 2: وكيل استعلامات SQL

ابنِ أداة تتيح للذكاء الاصطناعي أن يستعلم قاعدة بيانات SQLite مباشرة:

def query_database(sql: str) -> str:
    """Execute a SQL query and return results."""
    # لا تسمح إلا بعبارات SELECT حفاظًا على السلامة
    ...

ثم اختبر: «كم رسالة أرسلت؟» أو «اعرض لي كل رسائل اليوم».

التحدي 3: وكيل متعدد الذكريات

أضف أداتين هما "remember" و"forget" ليتيحا للذكاء الاصطناعي تخزين الحقائق واسترجاعها عبر المحادثات:

المستخدم: "تذكّر أن اسمي أليس"
الذكاء الاصطناعي: "سأتذكر ذلك."  (يستدعي remember("name", "Alice"))

المستخدم: "ما اسمي؟"
الذكاء الاصطناعي: "اسمك أليس."  (يستدعي recall("name") → "Alice")

خزّن الذكريات في قاموس (dictionary) أو في ملف JSON بسيط.


مشروع مفتوح النهاية: مساعد بحث مخصص

ابنِ مساعد بحث يمكنه:

  1. البحث في Wikipedia عن معلومات خلفية
  2. البحث في قاعدة معرفة مخصصة (ملف JSON يحتوي على حقائق)
  3. تلخيص النتائج في تقرير
  4. حفظ التقرير في ملف

المتطلبات: - يتلقى الوكيل موضوعًا كمدخل - يبحث في مصادر متعددة - يجمع تقريرًا منظمًا بأقسام - يحفظ التقرير في ملف .md

أهداف إضافية: - أضف أداة "generate image" باستخدام DALL-E - أضف أداة "translate" باستخدام API للترجمة - أضف أداة "send email" (وهمية) - ابنِ واجهة مستخدم ويب لوكيل البحث باستخدام Flask

مثال على سير العمل:

المستخدم: "ابحث عن الطاقة المتجددة واكتب تقريرًا"

1. search_wikipedia("Solar power") → ملخص
2. search_wikipedia("Wind power") → ملخص
3. search_wikipedia("Hydroelectric power") → ملخص
4. save_report("renewable-energy.md", report_text)
5. الذكاء الاصطناعي: "كتبت تقريرًا عن الطاقة المتجددة في renewable-energy.md"