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):
        # جستجوی پروازها، هتل‌ها و جاذبه‌ها بر اساس ترجیحات
        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)

# نمونه استفاده
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)

چرا فراشناخت مهم است

با وارد کردن فراشناخت، نماینده مسافرتی می‌تواند پیشنهادهای سفر شخصی‌تر و دقیق‌تری ارائه دهد و تجربه کلی کاربر را بهبود بخشد.


۲. برنامه‌ریزی در عامل‌ها

برنامه‌ریزی یک جزء حیاتی از رفتار عامل هوش مصنوعی است. این شامل ترسیم گام‌های لازم برای رسیدن به یک هدف است، با در نظر گرفتن وضعیت فعلی، منابع و موانع ممکن.

عناصر برنامه‌ریزی

مثال: در اینجا مراحلی که عامل سفر باید برای کمک به کاربر در برنامه‌ریزی موثر سفر خود انجام دهد آمده است:

مراحل برای عامل سفر

  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)

# نمونه استفاده در یک درخواست booing
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 vs Context Loading

تولید افزوده شده با بازیابی (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)
        

مثال عملی

در اینجا یک نمونه کد ساده شده پایتون است که رویکرد 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

# نمونه استفاده
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)

بارگذاری پیشگیرانه متن

بارگذاری پیش‌گیرانهٔ زمینه شامل بارگذاری اطلاعات مربوطه یا اطلاعات پس‌زمینه در مدل پیش از پردازش یک پرسش است. این بدان معناست که مدل از ابتدا به این اطلاعات دسترسی دارد که می‌تواند به آن کمک کند پاسخ‌های آگاهانه‌تر تولید کند بدون اینکه نیاز باشد در طول فرایند داده‌های اضافی بازیابی کند.

در اینجا یک مثال ساده‌شده از چگونگی بارگذاری پیش‌گیرانهٔ زمینه برای یک برنامهٔ نماینده سفر در پایتون آمده است:

class TravelAgent:
    def __init__(self):
        # مقصدهای محبوب و اطلاعات آنها را از قبل بارگذاری کنید
        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):
        # اطلاعات مقصد را از زمینه‌ی از پیش بارگذاری‌شده دریافت کنید
        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}."

# مثال استفاده
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 اطلاعات مربوطه را از دیکشنری زمینه پیش‌بارگذاری شده استخراج می‌کند.

با پیش‌بارگذاری زمینه، برنامه نماینده سفر می‌تواند به سرعت به پرسش‌های کاربر پاسخ دهد بدون اینکه نیاز باشد این اطلاعات را در زمان واقعی از منبع خارجی بازیابی کند. این باعث می‌شود برنامه کاراتر و پاسخگوتر باشد.

شروع برنامه با یک هدف پیش از تکرار

شروع یک برنامه با تعیین هدف یعنی با داشتن یک هدف یا نتیجهٔ واضح از ابتدا شروع کنیم. با تعریف این هدف در ابتدا، مدل می‌تواند از آن به عنوان اصول راهنما در سراسر فرآیند تکراری استفاده کند. این کمک می‌کند هر تکرار به سمت دستیابی به نتیجهٔ مطلوب حرکت کند و فرآیند را کارآمدتر و متمرکزتر می‌سازد.

در اینجا مثالی از چگونگی شروع یک برنامه سفر با هدف پیش از تکرار برای یک نماینده سفر در پایتون آمده است:

سناریو

یک نماینده سفر می‌خواهد یک سفر سفارشی‌شده برای یک مشتری برنامه‌ریزی کند. هدف ایجاد یک برنامه سفر است که حداکثر رضایت مشتری را بر اساس ترجیحات و بودجهٔ او فراهم کند.

مراحل

  1. تعریف ترجیحات و بودجه مشتری.
  2. شروع برنامه اولیه بر اساس این ترجیحات.
  3. تکرار برای اصلاح برنامه و بهینه‌سازی رضایت مشتری.

کد پایتون

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']

# نمونه استفاده
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): این متد هزینه کل برنامه فعلی را محاسبه می‌کند، از جمله یک مقصد احتمالی جدید.

مثال کاربردی

با شروع برنامه با هدف واضح (مثلاً حداکثر رضایت مشتری) و تکرار برای اصلاح برنامه، نماینده سفر می‌تواند یک برنامه سفر سفارشی و بهینه‌سازی‌شده برای مشتری ایجاد کند. این رویکرد تضمین می‌کند که برنامه سفر از ابتدا با ترجیحات و بودجه مشتری همسو باشد و با هر تکرار بهتر شود.

بهره‌گیری از مدل‌های زبانی بزرگ برای مرتب‌سازی مجدد و امتیازدهی

مدل‌های زبانی بزرگ (LLM) می‌توانند برای مرتب‌سازی مجدد و امتیازدهی با ارزیابی مرتبط بودن و کیفیت اسناد بازیابی شده یا پاسخ‌های تولید شده استفاده شوند. عملکرد این‌گونه است:

بازیابی: مرحله اولیه بازیابی یک مجموعه از اسناد یا پاسخ‌های نامزد شده را بر اساس پرسش دریافت می‌کند.

مرتب‌سازی مجدد: مدل زبانی بزرگ این نامزدها را ارزیابی کرده و بر اساس مرتبط بودن و کیفیت توسط آنها را مرتب می‌کند. این مرحله تضمین می‌کند که مرتبط‌ترین و باکیفیت‌ترین اطلاعات ابتدا ارائه شود.

امتیازدهی: مدل به هر نامزد امتیاز می‌دهد که نشان‌دهنده مرتبط بودن و کیفیت آنها است. این کمک می‌کند بهترین پاسخ یا سند برای کاربر انتخاب شود.

با استفاده از مدل‌های زبانی بزرگ برای مرتب‌سازی مجدد و امتیازدهی، سیستم می‌تواند اطلاعات دقیق‌تر و مرتبط‌تر با زمینه ارائه دهد و تجربه کاربری کلی را بهبود بخشد.

در اینجا مثالی از چگونگی استفاده نماینده سفر از مدل زبانی بزرگ برای مرتب‌سازی مجدد و امتیازدهی مقاصد سفر بر اساس ترجیحات کاربر در پایتون آمده است:

سناریو - سفر بر اساس ترجیحات

یک نماینده سفر می‌خواهد بهترین مقاصد سفر را بر اساس ترجیحات مشتری توصیه کند. مدل زبانی بزرگ کمک می‌کند مقاصد را مرتب‌سازی مجدد کند و امتیازدهی نماید تا مرتبط‌ترین گزینه‌ها ارائه شوند.

مراحل:

  1. جمع‌آوری ترجیحات کاربر.
  2. بازیابی فهرستی از مقاصد سفر احتمالی.
  3. استفاده از مدل زبانی بزرگ برای مرتب‌سازی مجدد و امتیازدهی مقاصد بر اساس ترجیحات کاربر.

در اینجا نحوه به‌روزرسانی مثال قبلی برای استفاده از سرویس‌های Azure OpenAI آمده است:

نیازمندی‌ها

  1. داشتن اشتراک Azure.
  2. ایجاد منبع Azure OpenAI و دریافت کلید API خود.

مثال کد پایتون

import requests
import json

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

    def get_recommendations(self, preferences, api_key, endpoint):
        # ایجاد یک پرامپت برای آزور OpenAI
        prompt = self.generate_prompt(preferences)
        
        # تعریف هدرها و بار درخواست
        headers = {
            'Content-Type': 'application/json',
            'Authorization': f'Bearer {api_key}'
        }
        payload = {
            "prompt": prompt,
            "max_tokens": 150,
            "temperature": 0.7
        }
        
        # فراخوانی API آزور OpenAI برای دریافت مقصدهای مرتب شده و امتیازدهی شده
        response = requests.post(endpoint, headers=headers, json=payload)
        response_data = response.json()
        
        # استخراج و بازگرداندن پیشنهادات
        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

# مثال استفاده
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 به API Azure OpenAI ارسال می‌کند تا مقاصد مرتب‌شده و امتیازدهی شده را دریافت کند.

  3. ساخت پیام (متد generate_prompt): این متد پیام را برای Azure OpenAI می‌سازد که شامل ترجیحات کاربر و فهرست مقاصد است. این پیام مدل را راهنمایی می‌کند که مقاصد را بر اساس ترجیحات ارائه شده مرتب و امتیازدهی کند.

  4. درخواست API: کتابخانه requests برای ارسال درخواست HTTP POST به نقطه پایانی API Azure OpenAI استفاده می‌شود. پاسخ شامل مقاصد مرتب شده و امتیازدهی شده است.

  5. مثال کاربردی: نماینده سفر ترجیحات کاربر (مانند علاقه به گردشگری و فرهنگ متنوع) را جمع‌آوری می‌کند و از سرویس Azure OpenAI برای دریافت توصیه‌های امتیازدهی شده و مرتب شده برای مقاصد سفر استفاده می‌کند.

مطمئن شوید که your_azure_openai_api_key را با کلید واقعی API Azure OpenAI خود و 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]  # برگرداندن ۱۰ مورد مرتبط برتر
      
  3. پردازش زبان طبیعی (NLP):
    • از تکنیک‌های NLP برای درک پرسش کاربر و بازیابی اطلاعات مرتبط استفاده کنید.
    • مثال:

      def process_query(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]  # بازگرداندن ۱۰ مورد مرتبط برتر

    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

# نمونه استفاده
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):
        # ترکیب پرس‌وجوی فعلی با تاریخچه کاربر برای درک زمینه
        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):
        # منطق جستجوی نمونه برای هدف اطلاع‌رسانی
        results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
        return results
    
    def search_navigation(query):
        # منطق جستجوی نمونه برای هدف مسیریابی
        results = search_web(query)
        return results
    
    def search_transaction(query, preferences):
        # منطق جستجوی نمونه برای هدف تراکنشی
        results = search_web(f"book {query} to {preferences['destination']}")
        return results
    
    def personalize_results(results, user_history):
        # منطق نمونه شخصی‌سازی
        personalized = [result for result in results if result not in user_history]
        return personalized[:10]  # بازگرداندن ۱۰ نتیجه شخصی‌سازی شده برتر
    
  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):
        # مثال: تولید کدی برای جستجوی پروازها بر اساس ترجیحات کاربر
        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):
        # مثال: تولید کدی برای جستجوی هتل‌ها
        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):
        # اجرای کد تولید شده با استفاده از 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):
        # تنظیم اولویت‌ها بر اساس بازخورد کاربر
        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)
       
    # بازتولید و اجرای کد با اولویت‌های به‌روزرسانی‌شده
    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. تولید و اجرای کوئری‌ها: سیستم کوئری‌ها را تولید و اجرا می‌کند تا داده‌های به‌روز شده پرواز و هتل را بر اساس ترجیحات جدید دریافت کند.

در اینجا یک نمونه کد پایتون به‌روزرسانی شده که این مفاهیم را ادغام می‌کند آمده است:

def adjust_based_on_feedback(feedback, preferences, schema):
    # تنظیم ترجیحات بر اساس بازخورد کاربر
    if "liked" in feedback:
        preferences["favorites"] = feedback["liked"]
    if "disliked" in feedback:
        preferences["avoid"] = feedback["disliked"]
    # استدلال بر اساس طرح برای تنظیم سایر ترجیحات مرتبط
    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):
    # منطق سفارشی برای تنظیم ترجیحات بر اساس طرح و بازخورد
    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):
    # تولید کد برای دریافت داده‌های پرواز بر اساس ترجیحات به‌روزشده
    return f"fetch_flights(preferences={preferences})"

def generate_code_to_fetch_hotels(preferences):
    # تولید کد برای دریافت داده‌های هتل بر اساس ترجیحات به‌روزشده
    return f"fetch_hotels(preferences={preferences})"

def execute_code(code):
    # شبیه‌سازی اجرای کد و بازگرداندن داده‌های نمونه
    return {"data": f"Executed: {code}"}

def generate_itinerary(flights, hotels, attractions):
    # تولید برنامه سفر بر اساس پروازها، هتل‌ها و جاذبه‌ها
    return {"flights": flights, "hotels": hotels, "attractions": attractions}

# نمونه طرح
schema = {
    "favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
    "avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}

# استفاده نمونه
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)

# بازتولید و اجرای کد با ترجیحات به‌روزشده
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 = []  # هتل‌های انتخاب‌شده قبلی را ذخیره می‌کند
        self.corrected_choices = []  # انتخاب‌های اصلاح‌شده را ذخیره می‌کند
        self.recommendation_strategies = ['cheapest', 'highest_quality']  # استراتژی‌های موجود

    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]
        # فرض کنیم بازخوردی از کاربر داریم که به ما می‌گوید آیا انتخاب قبلی خوب بوده یا نه
        user_feedback = self.get_user_feedback(last_choice)

        if user_feedback == "bad":
            # اگر انتخاب قبلی رضایت‌بخش نبود، استراتژی را تنظیم کن
            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"

# شبیه‌سازی لیستی از هتل‌ها (قیمت و کیفیت)
hotels = [
    {'name': 'Budget Inn', 'price': 80, 'quality': 6},
    {'name': 'Comfort Suites', 'price': 120, 'quality': 8},
    {'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]

# یک عامل ایجاد کن
agent = HotelRecommendationAgent()

# مرحله ۱: عامل با استفاده از استراتژی "ارزان‌ترین" یک هتل را توصیه می‌کند
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")

# مرحله ۲: عامل در انتخاب تأمل می‌کند و در صورت نیاز استراتژی را تنظیم می‌کند
reflection_result = agent.reflect_on_choice()
print(reflection_result)

# مرحله ۳: عامل دوباره توصیه می‌دهد، این بار با استفاده از استراتژی تنظیم‌شده
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")

توانمندی‌های متاکاگنیشن عوامل

نکته کلیدی این است که عامل توانایی دارد:

این شکلی ساده از متاکاگنیشن است که سیستم قادر است فرآیند استدلال خود را بر اساس بازخورد داخلی تنظیم کند.

نتیجه‌گیری

متاکاگنیشن ابزاری قدرتمند است که می‌تواند قابلیت‌های عوامل هوش مصنوعی را به‌طرز قابل توجهی بهبود بخشد. با ادغام فرآیندهای متاکاگنیتیو، می‌توانید عواملی طراحی کنید که هوشمندتر، سازگارتر و کارآمدتر باشند. از منابع اضافی استفاده کنید تا دنیای جذاب متاکاگنیشن در عوامل هوش مصنوعی را بیشتر بشناسید.

سوالات بیشتری در مورد الگوی طراحی متاکاگنیشن دارید؟

به Microsoft Foundry Discord بپیوندید تا با دیگر یادگیرندگان ملاقات کنید، در ساعات اداری شرکت کنید و سوالات خود درباره عوامل هوش مصنوعی را مطرح کنید.

درس قبلی

الگوی طراحی چندعاملی

درس بعدی

عوامل هوش مصنوعی در تولید


سلب مسئولیت: این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.