ai-agents-for-beginners

تصميم متعدد الوكلاء

(اضغط على الصورة أعلاه لمشاهدة فيديو الدرس)

التفكير فوق المعرفي في وكلاء الذكاء الاصطناعي

المقدمة

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

أهداف التعلم

بعد إكمال هذا الدرس، ستكون قادرًا على:

  1. فهم تأثير الحلقات المنطقية في تعريفات الوكلاء.
  2. استخدام تقنيات التخطيط والتقييم لمساعدة الوكلاء على تصحيح أنفسهم.
  3. إنشاء وكلاء قادرين على تعديل الكود لإنجاز المهام.

مقدمة في التفكير فوق المعرفي

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

في سياق أنظمة الذكاء الاصطناعي الوكيلية، يمكن أن يساعد التفكير فوق المعرفي في معالجة العديد من التحديات، مثل:

ما هو التفكير فوق المعرفي؟

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

مثال: “لقد أعطيت الأولوية للرحلات الأرخص لأن… قد أكون قد أغفلت الرحلات المباشرة، لذا دعني أتحقق مرة أخرى.” متابعة كيفية أو سبب اختيار مسار معين.

أهمية التفكير فوق المعرفي في وكلاء الذكاء الاصطناعي

يلعب التفكير فوق المعرفي دورًا حيويًا في تصميم وكلاء الذكاء الاصطناعي لعدة أسباب:

أهمية التفكير فوق المعرفي

مكونات وكيل الذكاء الاصطناعي

قبل الغوص في عمليات التفكير فوق المعرفي، من الضروري فهم المكونات الأساسية لوكيل الذكاء الاصطناعي. يتكون وكيل الذكاء الاصطناعي عادةً من:

تعمل هذه المكونات معًا لإنشاء “وحدة خبرة” يمكنها تنفيذ مهام محددة.

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

مثال: التفكير فوق المعرفي في خدمة وكيل السفر

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

المهمة الحالية

المهمة الحالية هي مساعدة المستخدم في تخطيط رحلة إلى باريس.

خطوات إكمال المهمة

  1. جمع تفضيلات المستخدم: اسأل المستخدم عن تواريخ السفر، الميزانية، الاهتمامات (مثل المتاحف، المأكولات، التسوق)، وأي متطلبات محددة.
  2. استرجاع المعلومات: ابحث عن خيارات الرحلات الجوية، أماكن الإقامة، الأماكن السياحية، والمطاعم التي تتوافق مع تفضيلات المستخدم.
  3. إنشاء توصيات: قدم جدولًا شخصيًا يتضمن تفاصيل الرحلات الجوية، حجوزات الفنادق، والأنشطة المقترحة.
  4. التعديل بناءً على الملاحظات: اطلب من المستخدم ملاحظات حول التوصيات وقم بإجراء التعديلات اللازمة.

الموارد المطلوبة

الخبرة والتفكير الذاتي

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

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

مثال عملي للمطور

إليك مثال مبسط عن كيفية ظهور كود وكيل السفر عند تضمين التفكير فوق المعرفي:

class Travel_Agent:
    def __init__(self):
        self.user_preferences = {}
        self.experience_data = []

    def gather_preferences(self, preferences):
        self.user_preferences = preferences

    def retrieve_information(self):
        # Search for flights, hotels, and attractions based on preferences
        flights = search_flights(self.user_preferences)
        hotels = search_hotels(self.user_preferences)
        attractions = search_attractions(self.user_preferences)
        return flights, hotels, attractions

    def generate_recommendations(self):
        flights, hotels, attractions = self.retrieve_information()
        itinerary = create_itinerary(flights, hotels, attractions)
        return itinerary

    def adjust_based_on_feedback(self, feedback):
        self.experience_data.append(feedback)
        # Analyze feedback and adjust future recommendations
        self.user_preferences = adjust_preferences(self.user_preferences, feedback)

# Example usage
travel_agent = Travel_Agent()
preferences = {
    "destination": "Paris",
    "dates": "2025-04-01 to 2025-04-10",
    "budget": "moderate",
    "interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)

لماذا التفكير فوق المعرفي مهم؟

من خلال تضمين التفكير فوق المعرفي، يمكن لوكيل السفر تقديم توصيات سفر أكثر تخصيصًا ودقة، مما يعزز تجربة المستخدم بشكل عام.


2. التخطيط في الوكلاء

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

عناصر التخطيط

مثال: إليك الخطوات التي يحتاج وكيل السفر إلى اتخاذها لمساعدة المستخدم في تخطيط رحلته بشكل فعال:

خطوات وكيل السفر

  1. جمع تفضيلات المستخدم
    • اسأل المستخدم عن تفاصيل تواريخ السفر، الميزانية، الاهتمامات، وأي متطلبات محددة.
    • أمثلة: “متى تخطط للسفر؟” “ما هو نطاق ميزانيتك؟” “ما الأنشطة التي تستمتع بها أثناء الإجازة؟”
  2. استرجاع المعلومات
    • ابحث عن خيارات السفر ذات الصلة بناءً على تفضيلات المستخدم.
    • الرحلات الجوية: ابحث عن الرحلات المتاحة ضمن ميزانية المستخدم وتواريخ السفر المفضلة.
    • أماكن الإقامة: ابحث عن الفنادق أو العقارات المؤجرة التي تتوافق مع تفضيلات المستخدم للموقع، السعر، والمرافق.
    • الأماكن السياحية والمطاعم: حدد الأماكن السياحية، الأنشطة، وخيارات الطعام التي تتماشى مع اهتمامات المستخدم.
  3. إنشاء توصيات
    • قم بتجميع المعلومات المسترجعة في جدول شخصي.
    • قدم تفاصيل مثل خيارات الرحلات الجوية، حجوزات الفنادق، والأنشطة المقترحة، مع التأكد من تخصيص التوصيات لتفضيلات المستخدم.
  4. عرض الجدول على المستخدم
    • شارك الجدول المقترح مع المستخدم لمراجعته.
    • مثال: “إليك جدول مقترح لرحلتك إلى باريس. يتضمن تفاصيل الرحلات الجوية، حجوزات الفنادق، وقائمة بالأنشطة والمطاعم الموصى بها. أخبرني برأيك!”
  5. جمع الملاحظات
    • اطلب من المستخدم ملاحظات حول الجدول المقترح.
    • أمثلة: “هل تعجبك خيارات الرحلات الجوية؟” “هل الفندق مناسب لاحتياجاتك؟” “هل هناك أي أنشطة ترغب في إضافتها أو إزالتها؟”
  6. التعديل بناءً على الملاحظات
    • قم بتعديل الجدول بناءً على ملاحظات المستخدم.
    • قم بإجراء تغييرات ضرورية على توصيات الرحلات الجوية، أماكن الإقامة، والأنشطة لتتناسب بشكل أفضل مع تفضيلات المستخدم.
  7. التأكيد النهائي
    • قدم الجدول المحدث للمستخدم للتأكيد النهائي.
    • مثال: “لقد أجريت التعديلات بناءً على ملاحظاتك. إليك الجدول المحدث. هل كل شيء يبدو جيدًا بالنسبة لك؟”
  8. حجز وتأكيد الحجوزات
    • بمجرد موافقة المستخدم على الجدول، قم بحجز الرحلات الجوية، أماكن الإقامة، وأي أنشطة مخططة مسبقًا.
    • أرسل تفاصيل التأكيد إلى المستخدم.
  9. تقديم الدعم المستمر
    • كن متاحًا لمساعدة المستخدم في أي تغييرات أو طلبات إضافية قبل وأثناء رحلته.
    • مثال: “إذا كنت بحاجة إلى أي مساعدة إضافية أثناء رحلتك، لا تتردد في التواصل معي في أي وقت!”

مثال على التفاعل

class Travel_Agent:
    def __init__(self):
        self.user_preferences = {}
        self.experience_data = []

    def gather_preferences(self, preferences):
        self.user_preferences = preferences

    def retrieve_information(self):
        flights = search_flights(self.user_preferences)
        hotels = search_hotels(self.user_preferences)
        attractions = search_attractions(self.user_preferences)
        return flights, hotels, attractions

    def generate_recommendations(self):
        flights, hotels, attractions = self.retrieve_information()
        itinerary = create_itinerary(flights, hotels, attractions)
        return itinerary

    def adjust_based_on_feedback(self, feedback):
        self.experience_data.append(feedback)
        self.user_preferences = adjust_preferences(self.user_preferences, feedback)

# Example usage within a booing request
travel_agent = Travel_Agent()
preferences = {
    "destination": "Paris",
    "dates": "2025-04-01 to 2025-04-10",
    "budget": "moderate",
    "interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)

3. نظام RAG التصحيحي

أولاً، دعونا نبدأ بفهم الفرق بين أداة RAG وتحميل السياق الاستباقي.

RAG مقابل تحميل السياق

توليد معزز بالاسترجاع (RAG)

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

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

نهج RAG التصحيحي

يركز نهج RAG التصحيحي على استخدام تقنيات RAG لتصحيح الأخطاء وتحسين دقة وكلاء الذكاء الاصطناعي. يتضمن ذلك:

  1. تقنية التوجيه: استخدام توجيهات محددة لإرشاد الوكيل في استرجاع المعلومات ذات الصلة.
  2. الأداة: تنفيذ خوارزميات وآليات تمكن الوكيل من تقييم مدى ملاءمة المعلومات المسترجعة وتوليد استجابات دقيقة.
  3. التقييم: تقييم أداء الوكيل باستمرار وإجراء التعديلات لتحسين دقته وكفاءته.

مثال: RAG التصحيحي في وكيل البحث

فكر في وكيل بحث يسترجع المعلومات من الإنترنت للإجابة على استفسارات المستخدم. قد يتضمن نهج RAG التصحيحي:

  1. تقنية التوجيه: صياغة استفسارات البحث بناءً على إدخال المستخدم.
  2. الأداة: استخدام معالجة اللغة الطبيعية وخوارزميات التعلم الآلي لترتيب وتصفية نتائج البحث.
  3. التقييم: تحليل ملاحظات المستخدم لتحديد وتصحيح الأخطاء في المعلومات المسترجعة.

RAG التصحيحي في وكيل السفر

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

يتضمن ذلك:

خطوات تنفيذ RAG التصحيحي في وكيل السفر

  1. التفاعل الأولي مع المستخدم
    • يجمع وكيل السفر التفضيلات الأولية من المستخدم، مثل الوجهة، تواريخ السفر، الميزانية، والاهتمامات.
    • مثال:

      preferences = {
          "destination": "Paris",
          "dates": "2025-04-01 to 2025-04-10",
          "budget": "moderate",
          "interests": ["museums", "cuisine"]
      }
      
  2. استرجاع المعلومات
    • يسترجع وكيل السفر معلومات حول الرحلات الجوية، أماكن الإقامة، الأماكن السياحية، والمطاعم بناءً على تفضيلات المستخدم.
    • مثال:

      flights = search_flights(preferences)
      hotels = search_hotels(preferences)
      attractions = search_attractions(preferences)
      
  3. توليد التوصيات الأولية
    • يستخدم وكيل السفر المعلومات المسترجعة لتوليد جدول شخصي.
    • مثال:

      itinerary = create_itinerary(flights, hotels, attractions)
      print("Suggested Itinerary:", itinerary)
      
  4. جمع ملاحظات المستخدم
    • يطلب وكيل السفر من المستخدم ملاحظات حول التوصيات الأولية.
    • مثال:

      feedback = {
          "liked": ["Louvre Museum"],
          "disliked": ["Eiffel Tower (too crowded)"]
      }
      
  5. عملية RAG التصحيحي
    • تقنية التوجيه: يصيغ وكيل السفر استفسارات بحث جديدة بناءً على ملاحظات المستخدم.
      • مثال:

        if "disliked" in feedback:
            preferences["avoid"] = feedback["disliked"]
        
    • الأداة: يستخدم وكيل السفر خوارزميات لترتيب وتصفية نتائج البحث الجديدة، مع التركيز على الملاءمة بناءً على ملاحظات المستخدم.
      • مثال:

        new_attractions = search_attractions(preferences)
        new_itinerary = create_itinerary(flights, hotels, new_attractions)
        print("Updated Itinerary:", new_itinerary)
        
    • التقييم: يقيم وكيل السفر باستمرار مدى ملاءمة ودقة توصياته من خلال تحليل ملاحظات المستخدم وإجراء التعديلات اللازمة.
      • مثال:

        def adjust_preferences(preferences, feedback):
            if "liked" in feedback:
                preferences["favorites"] = feedback["liked"]
            if "disliked" in feedback:
                preferences["avoid"] = feedback["disliked"]
            return preferences
        
        preferences = adjust_preferences(preferences, feedback)
        

مثال عملي

إليك مثال مبسط لكود Python يتضمن نهج RAG التصحيحي في وكيل السفر:

class Travel_Agent:
    def __init__(self):
        self.user_preferences = {}
        self.experience_data = []

    def gather_preferences(self, preferences):
        self.user_preferences = preferences

    def retrieve_information(self):
        flights = search_flights(self.user_preferences)
        hotels = search_hotels(self.user_preferences)
        attractions = search_attractions(self.user_preferences)
        return flights, hotels, attractions

    def generate_recommendations(self):
        flights, hotels, attractions = self.retrieve_information()
        itinerary = create_itinerary(flights, hotels, attractions)
        return itinerary

    def adjust_based_on_feedback(self, feedback):
        self.experience_data.append(feedback)
        self.user_preferences = adjust_preferences(self.user_preferences, feedback)
        new_itinerary = self.generate_recommendations()
        return new_itinerary

# Example usage
travel_agent = Travel_Agent()
preferences = {
    "destination": "Paris",
    "dates": "2025-04-01 to 2025-04-10",
    "budget": "moderate",
    "interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
new_itinerary = travel_agent.adjust_based_on_feedback(feedback)
print("Updated Itinerary:", new_itinerary)

تحميل السياق بشكل استباقي

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

إليك مثال مبسط عن كيفية تحميل السياق بشكل استباقي لتطبيق وكيل السفر باستخدام Python:

class TravelAgent:
    def __init__(self):
        # Pre-load popular destinations and their information
        self.context = {
            "Paris": {"country": "France", "currency": "Euro", "language": "French", "attractions": ["Eiffel Tower", "Louvre Museum"]},
            "Tokyo": {"country": "Japan", "currency": "Yen", "language": "Japanese", "attractions": ["Tokyo Tower", "Shibuya Crossing"]},
            "New York": {"country": "USA", "currency": "Dollar", "language": "English", "attractions": ["Statue of Liberty", "Times Square"]},
            "Sydney": {"country": "Australia", "currency": "Dollar", "language": "English", "attractions": ["Sydney Opera House", "Bondi Beach"]}
        }

    def get_destination_info(self, destination):
        # Fetch destination information from pre-loaded context
        info = self.context.get(destination)
        if info:
            return f"{destination}:\nCountry: {info['country']}\nCurrency: {info['currency']}\nLanguage: {info['language']}\nAttractions: {', '.join(info['attractions'])}"
        else:
            return f"Sorry, we don't have information on {destination}."

# Example usage
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))

الشرح

  1. التهيئة (طريقة __init__): تقوم فئة TravelAgent بتحميل قاموس يحتوي على معلومات حول الوجهات الشهيرة مثل باريس، طوكيو، نيويورك، وسيدني. يتضمن هذا القاموس تفاصيل مثل البلد، العملة، اللغة، والمعالم الرئيسية لكل وجهة.

  2. استرجاع المعلومات (طريقة get_destination_info): عندما يستفسر المستخدم عن وجهة معينة، تقوم طريقة get_destination_info بجلب المعلومات ذات الصلة من القاموس المحمل مسبقًا.

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

بدء الخطة بهدف واضح قبل التكرار

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

إليك مثال عن كيفية بدء خطة سفر بهدف واضح قبل التكرار لوكيل السفر باستخدام Python:

السيناريو

يريد وكيل السفر تخطيط عطلة مخصصة لعميل. الهدف هو إنشاء جدول سفر يزيد من رضا العميل بناءً على تفضيلاته وميزانيته.

الخطوات

  1. تحديد تفضيلات العميل وميزانيته.
  2. بدء الخطة الأولية بناءً على هذه التفضيلات.
  3. التكرار لتحسين الخطة، مع التركيز على رضا العميل.

كود Python

class TravelAgent:
    def __init__(self, destinations):
        self.destinations = destinations

    def bootstrap_plan(self, preferences, budget):
        plan = []
        total_cost = 0

        for destination in self.destinations:
            if total_cost + destination['cost'] <= budget and self.match_preferences(destination, preferences):
                plan.append(destination)
                total_cost += destination['cost']

        return plan

    def match_preferences(self, destination, preferences):
        for key, value in preferences.items():
            if destination.get(key) != value:
                return False
        return True

    def iterate_plan(self, plan, preferences, budget):
        for i in range(len(plan)):
            for destination in self.destinations:
                if destination not in plan and self.match_preferences(destination, preferences) and self.calculate_cost(plan, destination) <= budget:
                    plan[i] = destination
                    break
        return plan

    def calculate_cost(self, plan, new_destination):
        return sum(destination['cost'] for destination in plan) + new_destination['cost']

# Example usage
destinations = [
    {"name": "Paris", "cost": 1000, "activity": "sightseeing"},
    {"name": "Tokyo", "cost": 1200, "activity": "shopping"},
    {"name": "New York", "cost": 900, "activity": "sightseeing"},
    {"name": "Sydney", "cost": 1100, "activity": "beach"},
]

preferences = {"activity": "sightseeing"}
budget = 2000

travel_agent = TravelAgent(destinations)
initial_plan = travel_agent.bootstrap_plan(preferences, budget)
print("Initial Plan:", initial_plan)

refined_plan = travel_agent.iterate_plan(initial_plan, preferences, budget)
print("Refined Plan:", refined_plan)

شرح الكود

  1. التهيئة (طريقة __init__): يتم تهيئة فئة TravelAgent بقائمة من الوجهات المحتملة، وكل منها يحتوي على خصائص مثل الاسم، التكلفة، ونوع النشاط.

  2. بدء الخطة (طريقة bootstrap_plan): تقوم هذه الطريقة بإنشاء خطة سفر أولية بناءً على تفضيلات العميل وميزانيته. يتم التكرار عبر قائمة الوجهات وإضافتها إلى الخطة إذا كانت تتوافق مع تفضيلات العميل وتناسب الميزانية.

  3. مطابقة التفضيلات (طريقة match_preferences): تتحقق هذه الطريقة مما إذا كانت الوجهة تتوافق مع تفضيلات العميل.

  4. تكرار الخطة (طريقة iterate_plan): تقوم هذه الطريقة بتحسين الخطة الأولية من خلال محاولة استبدال كل وجهة في الخطة بوجهة أفضل، مع مراعاة تفضيلات العميل وقيود الميزانية.

  5. حساب التكلفة (طريقة calculate_cost): تحسب هذه الطريقة التكلفة الإجمالية للخطة الحالية، بما في ذلك الوجهة الجديدة المحتملة.

مثال على الاستخدام

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

الاستفادة من النماذج اللغوية الكبيرة لإعادة الترتيب والتقييم

يمكن استخدام النماذج اللغوية الكبيرة (LLMs) لإعادة الترتيب والتقييم من خلال تقييم مدى ملاءمة وجودة المستندات المسترجعة أو الردود المُنشأة. إليك كيفية عمل ذلك:

الاسترجاع: الخطوة الأولية للاسترجاع تجلب مجموعة من المستندات أو الردود المرشحة بناءً على الاستفسار.

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

التقييم: يقوم النموذج اللغوي الكبير بتعيين درجات لكل مرشح، تعكس مدى ملاءمته وجودته. يساعد ذلك في اختيار أفضل رد أو مستند للمستخدم.

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

إليك مثال عن كيفية استخدام وكيل السفر لنموذج لغوي كبير (LLM) لإعادة ترتيب وتقييم الوجهات السياحية بناءً على تفضيلات المستخدم باستخدام Python:

السيناريو - السفر بناءً على التفضيلات

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

الخطوات:

  1. جمع تفضيلات المستخدم.
  2. استرجاع قائمة الوجهات السياحية المحتملة.
  3. استخدام النموذج اللغوي الكبير لإعادة ترتيب وتقييم الوجهات بناءً على تفضيلات المستخدم.

إليك كيفية تحديث المثال السابق لاستخدام خدمات Azure OpenAI:

المتطلبات

  1. تحتاج إلى اشتراك Azure.
  2. إنشاء مورد Azure OpenAI والحصول على مفتاح API الخاص بك.

كود Python مثال

import requests
import json

class TravelAgent:
    def __init__(self, destinations):
        self.destinations = destinations

    def get_recommendations(self, preferences, api_key, endpoint):
        # Generate a prompt for the Azure OpenAI
        prompt = self.generate_prompt(preferences)
        
        # Define headers and payload for the request
        headers = {
            'Content-Type': 'application/json',
            'Authorization': f'Bearer {api_key}'
        }
        payload = {
            "prompt": prompt,
            "max_tokens": 150,
            "temperature": 0.7
        }
        
        # Call the Azure OpenAI API to get the re-ranked and scored destinations
        response = requests.post(endpoint, headers=headers, json=payload)
        response_data = response.json()
        
        # Extract and return the recommendations
        recommendations = response_data['choices'][0]['text'].strip().split('\n')
        return recommendations

    def generate_prompt(self, preferences):
        prompt = "Here are the travel destinations ranked and scored based on the following user preferences:\n"
        for key, value in preferences.items():
            prompt += f"{key}: {value}\n"
        prompt += "\nDestinations:\n"
        for destination in self.destinations:
            prompt += f"- {destination['name']}: {destination['description']}\n"
        return prompt

# Example usage
destinations = [
    {"name": "Paris", "description": "City of lights, known for its art, fashion, and culture."},
    {"name": "Tokyo", "description": "Vibrant city, famous for its modernity and traditional temples."},
    {"name": "New York", "description": "The city that never sleeps, with iconic landmarks and diverse culture."},
    {"name": "Sydney", "description": "Beautiful harbour city, known for its opera house and stunning beaches."},
]

preferences = {"activity": "sightseeing", "culture": "diverse"}
api_key = 'your_azure_openai_api_key'
endpoint = 'https://your-endpoint.com/openai/deployments/your-deployment-name/completions?api-version=2022-12-01'

travel_agent = TravelAgent(destinations)
recommendations = travel_agent.get_recommendations(preferences, api_key, endpoint)
print("Recommended Destinations:")
for rec in recommendations:
    print(rec)

شرح الكود - حجز التفضيلات

  1. التهيئة: يتم تهيئة فئة TravelAgent بقائمة من الوجهات السياحية المحتملة، وكل منها يحتوي على خصائص مثل الاسم والوصف.

  2. الحصول على التوصيات (طريقة get_recommendations): تقوم هذه الطريقة بإنشاء موجه لخدمة Azure OpenAI بناءً على تفضيلات المستخدم وتُرسل طلب HTTP POST إلى واجهة برمجة التطبيقات للحصول على الوجهات المعاد ترتيبها والمُقيّمة.

  3. إنشاء الموجه (طريقة generate_prompt): تقوم هذه الطريقة ببناء موجه لـ Azure OpenAI، يتضمن تفضيلات المستخدم وقائمة الوجهات. يوجه الموجه النموذج لإعادة ترتيب وتقييم الوجهات بناءً على التفضيلات المقدمة.

  4. استدعاء API: يتم استخدام مكتبة requests لإرسال طلب HTTP POST إلى نقطة النهاية الخاصة بـ Azure OpenAI. يحتوي الرد على الوجهات المعاد ترتيبها والمُقيّمة.

  5. مثال على الاستخدام: يجمع وكيل السفر تفضيلات المستخدم (مثل الاهتمام بمشاهدة المعالم السياحية والثقافة المتنوعة) ويستخدم خدمة Azure OpenAI للحصول على توصيات معاد ترتيبها ومُقيّمة للوجهات السياحية.

تأكد من استبدال your_azure_openai_api_key بمفتاح API الخاص بك وhttps://your-endpoint.com/... بعنوان نقطة النهاية الفعلي لنشر Azure OpenAI الخاص بك.

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

RAG: تقنية التوجيه مقابل الأداة

يمكن أن تكون تقنية الاسترجاع المعزز بالتوليد (RAG) تقنية توجيه أو أداة في تطوير وكلاء الذكاء الاصطناعي. فهم الفرق بين الاثنين يمكن أن يساعدك في الاستفادة من RAG بشكل أكثر فعالية في مشاريعك.

RAG كتقنية توجيه

ما هي؟

كيف تعمل:

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

مثال في وكيل السفر:

RAG كأداة

ما هي؟

كيف تعمل:

  1. التكامل: تضمين RAG داخل بنية وكيل الذكاء الاصطناعي، مما يسمح له بمعالجة مهام الاسترجاع والتوليد تلقائيًا.
  2. الأتمتة: تدير الأداة العملية بأكملها، من استقبال مدخلات المستخدم إلى توليد الرد النهائي، دون الحاجة إلى موجهات صريحة لكل خطوة.
  3. الكفاءة: تعزز أداء الوكيل من خلال تبسيط عملية الاسترجاع والتوليد، مما يتيح ردودًا أسرع وأكثر دقة.

مثال في وكيل السفر:

المقارنة

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

أمثلة عملية

مثال تقنية التوجيه:

def search_museums_in_paris():
    prompt = "Find top museums in Paris"
    search_results = search_web(prompt)
    return search_results

museums = search_museums_in_paris()
print("Top Museums in Paris:", museums)

مثال الأداة:

class Travel_Agent:
    def __init__(self):
        self.rag_tool = RAGTool()

    def get_museums_in_paris(self):
        user_input = "I want to visit museums in Paris."
        response = self.rag_tool.retrieve_and_generate(user_input)
        return response

travel_agent = Travel_Agent()
museums = travel_agent.get_museums_in_paris()
print("Top Museums in Paris:", museums)

تقييم الملاءمة

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

المفاهيم الرئيسية في تقييم الملاءمة

  1. الوعي بالسياق:
    • يجب أن يفهم الوكيل سياق استفسار المستخدم لاسترجاع وتوليد معلومات ذات صلة.
    • مثال: إذا طلب المستخدم “أفضل المطاعم في باريس”، يجب أن يأخذ الوكيل في الاعتبار تفضيلات المستخدم، مثل نوع المطبخ والميزانية.
  2. الدقة:
    • يجب أن تكون المعلومات المقدمة من الوكيل صحيحة وموثوقة.
    • مثال: التوصية بمطاعم مفتوحة حاليًا وتحظى بتقييمات جيدة بدلاً من خيارات قديمة أو مغلقة.
  3. نية المستخدم:
    • يجب أن يستنتج الوكيل نية المستخدم وراء الاستفسار لتقديم المعلومات الأكثر ملاءمة.
    • مثال: إذا طلب المستخدم “فنادق اقتصادية”، يجب أن يعطي الأولوية للخيارات ذات الأسعار المعقولة.
  4. حلقة التغذية الراجعة:
    • يساعد جمع وتحليل التغذية الراجعة من المستخدمين الوكيل في تحسين عملية تقييم الملاءمة.
    • مثال: تضمين تقييمات المستخدمين وردود أفعالهم على التوصيات السابقة لتحسين الردود المستقبلية.

تقنيات عملية لتقييم الملاءمة

  1. تسجيل الملاءمة:
    • تعيين درجة ملاءمة لكل عنصر مسترجع بناءً على مدى تطابقه مع استفسار وتفضيلات المستخدم.
    • مثال:

      def relevance_score(item, query):
          score = 0
          if item['category'] in query['interests']:
              score += 1
          if item['price'] <= query['budget']:
              score += 1
          if item['location'] == query['destination']:
              score += 1
          return score
      
  2. التصفية والترتيب:
    • تصفية العناصر غير ذات الصلة وترتيب العناصر المتبقية بناءً على درجات الملاءمة.
    • مثال:

      def filter_and_rank(items, query):
          ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
          return ranked_items[:10]  # Return top 10 relevant items
      
  3. معالجة اللغة الطبيعية (NLP):
    • استخدام تقنيات NLP لفهم استفسار المستخدم واسترجاع المعلومات ذات الصلة.
    • مثال:

      def process_query(query):
          # Use NLP to extract key information from the user's query
          processed_query = nlp(query)
          return processed_query
      
  4. دمج التغذية الراجعة من المستخدمين:
    • جمع التغذية الراجعة من المستخدمين حول التوصيات المقدمة واستخدامها لتعديل تقييمات الملاءمة المستقبلية.
    • مثال:

      def adjust_based_on_feedback(feedback, items):
          for item in items:
              if item['name'] in feedback['liked']:
                  item['relevance'] += 1
              if item['name'] in feedback['disliked']:
                  item['relevance'] -= 1
          return items
      

مثال: تقييم الملاءمة في وكيل السفر

إليك مثال عملي عن كيفية قيام وكيل السفر بتقييم ملاءمة توصيات السفر:

class Travel_Agent:
    def __init__(self):
        self.user_preferences = {}
        self.experience_data = []

    def gather_preferences(self, preferences):
        self.user_preferences = preferences

    def retrieve_information(self):
        flights = search_flights(self.user_preferences)
        hotels = search_hotels(self.user_preferences)
        attractions = search_attractions(self.user_preferences)
        return flights, hotels, attractions

    def generate_recommendations(self):
        flights, hotels, attractions = self.retrieve_information()
        ranked_hotels = self.filter_and_rank(hotels, self.user_preferences)
        itinerary = create_itinerary(flights, ranked_hotels, attractions)
        return itinerary

    def filter_and_rank(self, items, query):
        ranked_items = sorted(items, key=lambda item: self.relevance_score(item, query), reverse=True)
        return ranked_items[:10]  # Return top 10 relevant items

    def relevance_score(self, item, query):
        score = 0
        if item['category'] in query['interests']:
            score += 1
        if item['price'] <= query['budget']:
            score += 1
        if item['location'] == query['destination']:
            score += 1
        return score

    def adjust_based_on_feedback(self, feedback, items):
        for item in items:
            if item['name'] in feedback['liked']:
                item['relevance'] += 1
            if item['name'] in feedback['disliked']:
                item['relevance'] -= 1
        return items

# Example usage
travel_agent = Travel_Agent()
preferences = {
    "destination": "Paris",
    "dates": "2025-04-01 to 2025-04-10",
    "budget": "moderate",
    "interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_items = travel_agent.adjust_based_on_feedback(feedback, itinerary['hotels'])
print("Updated Itinerary with Feedback:", updated_items)

البحث مع النية

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

المفاهيم الرئيسية في البحث مع النية

  1. فهم نية المستخدم:
    • يمكن تصنيف نية المستخدم إلى ثلاثة أنواع رئيسية: معلوماتية، ملاحية، ومعاملاتية.
      • النية المعلوماتية: يسعى المستخدم للحصول على معلومات حول موضوع معين (مثل “ما هي أفضل المتاحف في باريس؟”).
      • النية الملاحية: يريد المستخدم الانتقال إلى موقع أو صفحة معينة (مثل “الموقع الرسمي لمتحف اللوفر”).
      • النية المعاملاتية: يهدف المستخدم إلى إجراء معاملة، مثل حجز رحلة أو إجراء عملية شراء (مثل “احجز رحلة إلى باريس”).
  2. الوعي بالسياق:
    • يساعد تحليل سياق استفسار المستخدم في تحديد نيته بدقة. يشمل ذلك النظر في التفاعلات السابقة، تفضيلات المستخدم، والتفاصيل المحددة للاستفسار الحالي.
  3. معالجة اللغة الطبيعية (NLP):
    • تُستخدم تقنيات NLP لفهم وتفسير استفسارات اللغة الطبيعية المقدمة من المستخدمين. يشمل ذلك مهام مثل التعرف على الكيانات، تحليل المشاعر، وتفسير الاستفسارات.
  4. التخصيص:
    • يؤدي تخصيص نتائج البحث بناءً على تاريخ المستخدم، تفضيلاته، وتغذيته الراجعة إلى تحسين ملاءمة المعلومات المسترجعة.

      مثال عملي: البحث بنية واضحة في وكيل السفر

لنأخذ وكيل السفر كمثال لنرى كيف يمكن تنفيذ البحث بنية واضحة.

  1. جمع تفضيلات المستخدم

    class Travel_Agent:
        def __init__(self):
            self.user_preferences = {}
    
        def gather_preferences(self, preferences):
            self.user_preferences = preferences
    
  2. فهم نية المستخدم

    def identify_intent(query):
        if "book" in query or "purchase" in query:
            return "transactional"
        elif "website" in query or "official" in query:
            return "navigational"
        else:
            return "informational"
    
  3. الوعي بالسياق

    def analyze_context(query, user_history):
        # Combine current query with user history to understand context
        context = {
            "current_query": query,
            "user_history": user_history
        }
        return context
    
  4. البحث وتخصيص النتائج

    def search_with_intent(query, preferences, user_history):
        intent = identify_intent(query)
        context = analyze_context(query, user_history)
        if intent == "informational":
            search_results = search_information(query, preferences)
        elif intent == "navigational":
            search_results = search_navigation(query)
        elif intent == "transactional":
            search_results = search_transaction(query, preferences)
        personalized_results = personalize_results(search_results, user_history)
        return personalized_results
    
    def search_information(query, preferences):
        # Example search logic for informational intent
        results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
        return results
    
    def search_navigation(query):
        # Example search logic for navigational intent
        results = search_web(query)
        return results
    
    def search_transaction(query, preferences):
        # Example search logic for transactional intent
        results = search_web(f"book {query} to {preferences['destination']}")
        return results
    
    def personalize_results(results, user_history):
        # Example personalization logic
        personalized = [result for result in results if result not in user_history]
        return personalized[:10]  # Return top 10 personalized results
    
  5. مثال على الاستخدام

    travel_agent = Travel_Agent()
    preferences = {
        "destination": "Paris",
        "interests": ["museums", "cuisine"]
    }
    travel_agent.gather_preferences(preferences)
    user_history = ["Louvre Museum website", "Book flight to Paris"]
    query = "best museums in Paris"
    results = search_with_intent(query, preferences, user_history)
    print("Search Results:", results)
    

4. توليد الكود كأداة

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

وكلاء توليد الكود

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

تطبيقات عملية

  1. توليد الكود تلقائيًا: إنشاء مقتطفات كود لمهام محددة مثل تحليل البيانات، استخراج البيانات من الويب، أو تعلم الآلة.
  2. SQL كأداة RAG: استخدام استعلامات SQL لاسترجاع البيانات ومعالجتها من قواعد البيانات.
  3. حل المشكلات: إنشاء وتنفيذ الكود لحل مشكلات محددة، مثل تحسين الخوارزميات أو تحليل البيانات.

مثال: وكيل توليد الكود لتحليل البيانات

تخيل أنك تصمم وكيلًا لتوليد الكود. إليك كيف يمكن أن يعمل:

  1. المهمة: تحليل مجموعة بيانات لتحديد الاتجاهات والأنماط.
  2. الخطوات:
    • تحميل مجموعة البيانات في أداة تحليل البيانات.
    • توليد استعلامات SQL لتصفية وتجميع البيانات.
    • تنفيذ الاستعلامات واسترجاع النتائج.
    • استخدام النتائج لتوليد تصورات ورؤى.
  3. الموارد المطلوبة: الوصول إلى مجموعة البيانات، أدوات تحليل البيانات، وقدرات SQL.
  4. الخبرة: استخدام نتائج التحليل السابقة لتحسين دقة وملاءمة التحليلات المستقبلية.

مثال: وكيل توليد الكود لوكيل السفر

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

نظرة عامة على وكيل توليد الكود

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

التنفيذ خطوة بخطوة

  1. جمع تفضيلات المستخدم

    class Travel_Agent:
        def __init__(self):
            self.user_preferences = {}
    
        def gather_preferences(self, preferences):
            self.user_preferences = preferences
    
  2. توليد الكود لجلب البيانات

    def generate_code_to_fetch_data(preferences):
        # Example: Generate code to search for flights based on user preferences
        code = f"""
        def search_flights():
            import requests
            response = requests.get('https://api.example.com/flights', params={preferences})
            return response.json()
        """
        return code
    
    def generate_code_to_fetch_hotels(preferences):
        # Example: Generate code to search for hotels
        code = f"""
        def search_hotels():
            import requests
            response = requests.get('https://api.example.com/hotels', params={preferences})
            return response.json()
        """
        return code
    
  3. تنفيذ الكود المولد

    def execute_code(code):
        # Execute the generated code using exec
        exec(code)
        result = locals()
        return result
    
    travel_agent = Travel_Agent()
    preferences = {
        "destination": "Paris",
        "dates": "2025-04-01 to 2025-04-10",
        "budget": "moderate",
        "interests": ["museums", "cuisine"]
    }
    travel_agent.gather_preferences(preferences)
       
    flight_code = generate_code_to_fetch_data(preferences)
    hotel_code = generate_code_to_fetch_hotels(preferences)
       
    flights = execute_code(flight_code)
    hotels = execute_code(hotel_code)
    
    print("Flight Options:", flights)
    print("Hotel Options:", hotels)
    
  4. توليد خط سير الرحلة

    def generate_itinerary(flights, hotels, attractions):
        itinerary = {
            "flights": flights,
            "hotels": hotels,
            "attractions": attractions
        }
        return itinerary
    
    attractions = search_attractions(preferences)
    itinerary = generate_itinerary(flights, hotels, attractions)
    print("Suggested Itinerary:", itinerary)
    
  5. التعديل بناءً على الملاحظات

    def adjust_based_on_feedback(feedback, preferences):
        # Adjust preferences based on user feedback
        if "liked" in feedback:
            preferences["favorites"] = feedback["liked"]
        if "disliked" in feedback:
            preferences["avoid"] = feedback["disliked"]
        return preferences
    
    feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
    updated_preferences = adjust_based_on_feedback(feedback, preferences)
       
    # Regenerate and execute code with updated preferences
    updated_flight_code = generate_code_to_fetch_data(updated_preferences)
    updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
       
    updated_flights = execute_code(updated_flight_code)
    updated_hotels = execute_code(updated_hotel_code)
       
    updated_itinerary = generate_itinerary(updated_flights, updated_hotels, attractions)
    print("Updated Itinerary:", updated_itinerary)
    

الاستفادة من الوعي البيئي والتفكير

الاستناد إلى مخطط الجدول يمكن أن يعزز عملية توليد الاستعلامات من خلال الاستفادة من الوعي البيئي والتفكير.

إليك مثالًا على كيفية القيام بذلك:

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

إليك مثالًا محدثًا بلغة Python يدمج هذه المفاهيم:

def adjust_based_on_feedback(feedback, preferences, schema):
    # Adjust preferences based on user feedback
    if "liked" in feedback:
        preferences["favorites"] = feedback["liked"]
    if "disliked" in feedback:
        preferences["avoid"] = feedback["disliked"]
    # Reasoning based on schema to adjust other related preferences
    for field in schema:
        if field in preferences:
            preferences[field] = adjust_based_on_environment(feedback, field, schema)
    return preferences

def adjust_based_on_environment(feedback, field, schema):
    # Custom logic to adjust preferences based on schema and feedback
    if field in feedback["liked"]:
        return schema[field]["positive_adjustment"]
    elif field in feedback["disliked"]:
        return schema[field]["negative_adjustment"]
    return schema[field]["default"]

def generate_code_to_fetch_data(preferences):
    # Generate code to fetch flight data based on updated preferences
    return f"fetch_flights(preferences={preferences})"

def generate_code_to_fetch_hotels(preferences):
    # Generate code to fetch hotel data based on updated preferences
    return f"fetch_hotels(preferences={preferences})"

def execute_code(code):
    # Simulate execution of code and return mock data
    return {"data": f"Executed: {code}"}

def generate_itinerary(flights, hotels, attractions):
    # Generate itinerary based on flights, hotels, and attractions
    return {"flights": flights, "hotels": hotels, "attractions": attractions}

# Example schema
schema = {
    "favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
    "avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}

# Example usage
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)

# Regenerate and execute code with updated preferences
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)

updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)

updated_itinerary = generate_itinerary(updated_flights, updated_hotels, feedback["liked"])
print("Updated Itinerary:", updated_itinerary)

التفسير - الحجز بناءً على الملاحظات

  1. الوعي بالمخطط: يحدد قاموس schema كيفية تعديل التفضيلات بناءً على الملاحظات. يتضمن حقولًا مثل favorites وavoid مع التعديلات المقابلة.
  2. تعديل التفضيلات (طريقة adjust_based_on_feedback): تعدل هذه الطريقة التفضيلات بناءً على ملاحظات المستخدم والمخطط.
  3. التعديلات المستندة إلى البيئة (طريقة adjust_based_on_environment): تخصص هذه الطريقة التعديلات بناءً على المخطط والملاحظات.
  4. توليد وتنفيذ الاستعلامات: يولد النظام كودًا لجلب بيانات محدثة عن الرحلات الجوية والفنادق بناءً على التفضيلات المعدلة ويحاكي تنفيذ هذه الاستعلامات.
  5. توليد خط سير الرحلة: ينشئ النظام خط سير محدثًا بناءً على بيانات الرحلات الجوية والفنادق والمعالم السياحية الجديدة.

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

استخدام SQL كأداة استرجاع معززة بالتوليد (RAG)

SQL (لغة الاستعلامات الهيكلية) هي أداة قوية للتفاعل مع قواعد البيانات. عند استخدامها كجزء من نهج الاسترجاع المعزز بالتوليد (RAG)، يمكن لـ SQL استرجاع البيانات ذات الصلة من قواعد البيانات لإبلاغ وتوليد استجابات أو إجراءات في وكلاء الذكاء الاصطناعي. دعونا نستكشف كيف يمكن استخدام SQL كأداة RAG في سياق وكيل السفر.

المفاهيم الرئيسية

  1. التفاعل مع قاعدة البيانات:
    • تُستخدم SQL لاستعلام قواعد البيانات، استرجاع المعلومات ذات الصلة، ومعالجة البيانات.
    • مثال: جلب تفاصيل الرحلات الجوية، معلومات الفنادق، والمعالم السياحية من قاعدة بيانات السفر.
  2. التكامل مع RAG:
    • يتم توليد استعلامات SQL بناءً على مدخلات وتفضيلات المستخدم.
    • تُستخدم البيانات المسترجعة لتوليد توصيات أو إجراءات مخصصة.
  3. توليد الاستعلامات الديناميكية:
    • يولد وكيل الذكاء الاصطناعي استعلامات SQL ديناميكية بناءً على السياق واحتياجات المستخدم.
    • مثال: تخصيص استعلامات SQL لتصفية النتائج بناءً على الميزانية، التواريخ، والاهتمامات.

التطبيقات

مثال: وكيل تحليل البيانات:

  1. المهمة: تحليل مجموعة بيانات للعثور على الاتجاهات.
  2. الخطوات:
    • تحميل مجموعة البيانات.
    • توليد استعلامات SQL لتصفية البيانات.
    • تنفيذ الاستعلامات واسترجاع النتائج.
    • توليد تصورات ورؤى.
  3. الموارد: الوصول إلى مجموعة البيانات، قدرات SQL.
  4. الخبرة: استخدام النتائج السابقة لتحسين التحليلات المستقبلية.

مثال عملي: استخدام SQL في وكيل السفر

  1. جمع تفضيلات المستخدم

    class Travel_Agent:
        def __init__(self):
            self.user_preferences = {}
    
        def gather_preferences(self, preferences):
            self.user_preferences = preferences
    
  2. توليد استعلامات SQL

    def generate_sql_query(table, preferences):
        query = f"SELECT * FROM {table} WHERE "
        conditions = []
        for key, value in preferences.items():
            conditions.append(f"{key}='{value}'")
        query += " AND ".join(conditions)
        return query
    
  3. تنفيذ استعلامات SQL

    import sqlite3
    
    def execute_sql_query(query, database="travel.db"):
        connection = sqlite3.connect(database)
        cursor = connection.cursor()
        cursor.execute(query)
        results = cursor.fetchall()
        connection.close()
        return results
    
  4. توليد التوصيات

    def generate_recommendations(preferences):
        flight_query = generate_sql_query("flights", preferences)
        hotel_query = generate_sql_query("hotels", preferences)
        attraction_query = generate_sql_query("attractions", preferences)
           
        flights = execute_sql_query(flight_query)
        hotels = execute_sql_query(hotel_query)
        attractions = execute_sql_query(attraction_query)
           
        itinerary = {
            "flights": flights,
            "hotels": hotels,
            "attractions": attractions
        }
        return itinerary
    
    travel_agent = Travel_Agent()
    preferences = {
        "destination": "Paris",
        "dates": "2025-04-01 to 2025-04-10",
        "budget": "moderate",
        "interests": ["museums", "cuisine"]
    }
    travel_agent.gather_preferences(preferences)
    itinerary = generate_recommendations(preferences)
    print("Suggested Itinerary:", itinerary)
    

أمثلة على استعلامات SQL

  1. استعلام الرحلات الجوية

    SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
    
  2. استعلام الفنادق

    SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
    
  3. استعلام المعالم السياحية

    SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
    

من خلال الاستفادة من SQL كجزء من تقنية الاسترجاع المعزز بالتوليد (RAG)، يمكن لوكلاء الذكاء الاصطناعي مثل وكيل السفر استرجاع واستخدام البيانات ذات الصلة ديناميكيًا لتقديم توصيات دقيقة ومخصصة.

مثال على التفكير فوق المعرفي

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

كيف يوضح هذا التفكير فوق المعرفي:

  1. القرار الأولي: سيختار الوكيل الفندق الأرخص، دون فهم تأثير الجودة.
  2. التأمل والتقييم: بعد الاختيار الأولي، سيتحقق الوكيل مما إذا كان الفندق خيارًا “سيئًا” باستخدام ملاحظات المستخدم. إذا وجد أن جودة الفندق كانت منخفضة جدًا، فإنه يتأمل في تفكيره.
  3. تعديل الاستراتيجية: يعدل الوكيل استراتيجيته بناءً على تأمله، ويتحول من “الأرخص” إلى “الأعلى جودة”، مما يحسن عملية اتخاذ قراراته في التكرارات المستقبلية.

إليك مثالًا:

class HotelRecommendationAgent:
    def __init__(self):
        self.previous_choices = []  # Stores the hotels chosen previously
        self.corrected_choices = []  # Stores the corrected choices
        self.recommendation_strategies = ['cheapest', 'highest_quality']  # Available strategies

    def recommend_hotel(self, hotels, strategy):
        """
        Recommend a hotel based on the chosen strategy.
        The strategy can either be 'cheapest' or 'highest_quality'.
        """
        if strategy == 'cheapest':
            recommended = min(hotels, key=lambda x: x['price'])
        elif strategy == 'highest_quality':
            recommended = max(hotels, key=lambda x: x['quality'])
        else:
            recommended = None
        self.previous_choices.append((strategy, recommended))
        return recommended

    def reflect_on_choice(self):
        """
        Reflect on the last choice made and decide if the agent should adjust its strategy.
        The agent considers if the previous choice led to a poor outcome.
        """
        if not self.previous_choices:
            return "No choices made yet."

        last_choice_strategy, last_choice = self.previous_choices[-1]
        # Let's assume we have some user feedback that tells us whether the last choice was good or not
        user_feedback = self.get_user_feedback(last_choice)

        if user_feedback == "bad":
            # Adjust strategy if the previous choice was unsatisfactory
            new_strategy = 'highest_quality' if last_choice_strategy == 'cheapest' else 'cheapest'
            self.corrected_choices.append((new_strategy, last_choice))
            return f"Reflecting on choice. Adjusting strategy to {new_strategy}."
        else:
            return "The choice was good. No need to adjust."

    def get_user_feedback(self, hotel):
        """
        Simulate user feedback based on hotel attributes.
        For simplicity, assume if the hotel is too cheap, the feedback is "bad".
        If the hotel has quality less than 7, feedback is "bad".
        """
        if hotel['price'] < 100 or hotel['quality'] < 7:
            return "bad"
        return "good"

# Simulate a list of hotels (price and quality)
hotels = [
    {'name': 'Budget Inn', 'price': 80, 'quality': 6},
    {'name': 'Comfort Suites', 'price': 120, 'quality': 8},
    {'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]

# Create an agent
agent = HotelRecommendationAgent()

# Step 1: The agent recommends a hotel using the "cheapest" strategy
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")

# Step 2: The agent reflects on the choice and adjusts strategy if necessary
reflection_result = agent.reflect_on_choice()
print(reflection_result)

# Step 3: The agent recommends again, this time using the adjusted strategy
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")

قدرات التفكير فوق المعرفي للوكلاء

النقطة الرئيسية هنا هي قدرة الوكيل على:

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

الخاتمة

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

هل لديك المزيد من الأسئلة حول نمط تصميم التفكير فوق المعرفي؟

انضم إلى خادم Discord الخاص بـ Azure AI Foundry للتواصل مع متعلمين آخرين، حضور ساعات المكتب، والحصول على إجابات لأسئلتك حول وكلاء الذكاء الاصطناعي.

الدرس السابق

نمط تصميم الوكلاء المتعددين

الدرس التالي

وكلاء الذكاء الاصطناعي في الإنتاج


إخلاء المسؤولية:
تمت ترجمة هذه الوثيقة باستخدام خدمة الترجمة الآلية Co-op Translator. على الرغم من أننا نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.