পাইথন প্রজেক্টস ও লাইব্রেরি

Agent 7: Error Log Analyzer Agent

১. এই এজেন্ট কী কাজ করবে?

প্রোগ্রামিং করার সময় লাল রঙের Error মেসেজ দেখলে অনেকেরই মাথা খারাপ হয়ে যায়! এই এজেন্ট আপনার প্রজেক্টের এরর (Error) বা ক্র্যাশ লগ পড়বে এবং নিজে থেকেই StackOverflow বা ইন্টারনেট ঘেঁটে এর সমাধান বের করে আপনাকে জানাবে যে ঠিক কোথায় এবং কেন ক্র্যাশ করেছে।

২. কী কী টুলস এবং লাইব্রেরি লাগবে?

  • requests: StackOverflow বা গুগলে সার্চ করার জন্য।
  • beautifulsoup4: সার্চ রেজাল্ট থেকে সমাধান বের করার জন্য।
  • sys / traceback: পাইথনের এররগুলো ক্যাপচার করার জন্য।

৩. এ টু জেড কোড (A to Z Code)

নিচের কোডটি agent_error_analyzer.py নামে সেভ করুন। এটি কোনো এরর খেলে অটোমেটিক্যালি StackOverflow তে সার্চ করবে।

import traceback
import requests
from bs4 import BeautifulSoup
import sys

class ErrorAnalyzerAgent:
    def __init__(self):
        self.stackoverflow_url = "https://stackoverflow.com/search?q="

    def search_stackoverflow(self, error_message):
        print(f"\n[Agent] StackOverflow-তে সমাধান খোঁজা হচ্ছে... ({error_message})")
        
        # এরর মেসেজটিকে URL এ ব্যবহারের উপযোগী করা (যাতে স্পেসগুলো + হয়ে যায়)
        query = error_message.replace(" ", "+")
        url = self.stackoverflow_url + "python+" + query
        
        headers = {'User-Agent': 'Mozilla/5.0'}
        response = requests.get(url, headers=headers)
        soup = BeautifulSoup(response.text, "html.parser")
        
        # StackOverflow এর সার্চ রেজাল্ট বের করা
        results = soup.find_all("div", class_="s-post-summary")
        
        if not results:
            print("[Agent] দুঃখিত, সরাসরি কোনো সমাধান পাওয়া যায়নি।")
            return

        print("\n💡 সম্ভাব্য সমাধান বা লিংকসমূহ:")
        for idx, result in enumerate(results[:3], start=1): # শীর্ষ ৩টি রেজাল্ট দেখাবে
            title = result.find("h3").get_text(strip=True)
            link = "https://stackoverflow.com" + result.find("a")["href"]
            print(f"{idx}. {title}\n   লিংক: {link}")

def risky_function():
    # একটি ইচ্ছা করে করা ভুল (ZeroDivisionError)
    print("ক্যালকুলেশন শুরু...")
    return 100 / 0 

if __name__ == "__main__":
    agent = ErrorAnalyzerAgent()
    
    try:
        risky_function()
    except Exception as e:
        # এররটির নাম (যেমন: ZeroDivisionError) বের করা
        error_name = type(e).__name__
        error_detail = str(e)
        
        print(f"❌ কোড ক্র্যাশ করেছে! Error: {error_name} - {error_detail}")
        
        # এজেন্টকে কাজে লাগানো
        agent.search_stackoverflow(error_name)

৪. কীভাবে এটি আরও অ্যাডভান্সড করবেন?

  • আপনি চাইলে requests এর বদলে ChatGPT বা Gemini API যুক্ত করতে পারেন, যেন সে লিংক না দিয়ে সরাসরি আপনাকে এররের সমাধান কোডসহ লিখে দেয়।
  • এই এজেন্টকে অন্য যেকোনো পাইথন প্রজেক্টের try...except ব্লকে ইমপোর্ট করে ব্যবহার করতে পারেন।