تحديات التطبيق الوكيلي
جرّب هذه التحديات بعد إتمام الخطوات الوكيلية الخمس كلها.
اختبار المعرفة
-
ما الفرق بين استدعاء عادي لنموذج لغوي كبير (LLM) واستدعاء وكيلي للنموذج نفسه؟
-
ماذا يعني
tool_choice="auto"في OpenAI API؟ -
لماذا نحدّ حلقة الوكيل بعدد أقصى من الدورات؟
-
ما الغرض من
tool_call_idفي رسالة استجابة الأداة؟ -
كيف يحسّن التوجيه بسلسلة التفكير قدرة الذكاء الاصطناعي على الاستدلال؟
تحديات البرمجة
التحدي 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 بسيط.
مشروع مفتوح النهاية: مساعد بحث مخصص
ابنِ مساعد بحث يمكنه:
- البحث في Wikipedia عن معلومات خلفية
- البحث في قاعدة معرفة مخصصة (ملف JSON يحتوي على حقائق)
- تلخيص النتائج في تقرير
- حفظ التقرير في ملف
المتطلبات:
- يتلقى الوكيل موضوعًا كمدخل
- يبحث في مصادر متعددة
- يجمع تقريرًا منظمًا بأقسام
- يحفظ التقرير في ملف .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"