# need env SERPER_API_KEY: https://serper.dev/api-key # Environment Variablen importieren from dotenv import load_dotenv load_dotenv() # Importieren von erforderlichen Bibliotheken für Windows import asyncio import platform if platform.system() == 'Windows': asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) # Import the necessary libraries from crewai import Agent,Crew, Task from langchain.agents import Tool from langchain_community.utilities import GoogleSerperAPIWrapper from crewai_tools import WebsiteSearchTool, ScrapeWebsiteTool # Create a search tool search = GoogleSerperAPIWrapper(gl='de', hl='de', num=5, tbs="qdr:m") # search only for the last month # Create a tool serper_tool = Tool( name="Google", func=search.run, description="Internetsuche", ) readpage = ScrapeWebsiteTool() web_rag_tool = WebsiteSearchTool() # Create an agent researcher = Agent( role='OER Searcher', goal='OER für die Religiöse Bildung finden.', backstory='Ein Agent, der gute Links zu OER für die religiöse Bildung sucht.', tools=[serper_tool,web_rag_tool] ) redakteur = Agent( role='OER Redakteur', goal='geht den Links nach, die er vom OER Searcher bekommt und prüft die Qualität der OER.', backstory='Eine evangelische Religionslehrkraft, die OER für den Unterricht sucht und prüft.', tools=[readpage] ) writer = Agent( role='OER Blog Schreiber', goal='Stellt regelmäßig neue OER, die er vom OER Redakteur bekommt auf seinem Blog kritisch vor.', backstory='Eine evangelischer Theologe, dem guter Reigionsunterricht besonders am Herzen liegt.', ) # Create tasks research = Task( description='Suche nach religions- und ethikrelvanten Materialien, die als OER gekennzeichnet sind oder eine entsprechende Lizenz haben.', expected_output='Eine Liste der Suchergebnisse und der dazugehörenden URL.', agent=researcher ) proof = Task( description='Suche nach religions- und ethikrelvanten Materialien, die als OER gekennzeichnet sind oder eine entsprechende Lizenz haben.', expected_output='Eine Liste der geprüften Materialien inklusive der URLs.', context=[research], agent=redakteur ) write = Task( description='Stelle eine Liste alle neuen materialien zusammen.', expected_output='Ein Artikel der alle geprüften Inhalte in Form eines Blogartikels präsentiert.', context=[proof], agent=writer ) # Create tasks research = Task( description='Suche nach religions- und ethikrelvanten Materialien, die als OER gekennzeichnet sind oder eine entsprechende Lizenz haben.', expected_output='Eine Liste der Suchergebnisse und der dazugehörenden URL.', agent=researcher ) # Crew mit beiden Agenten und Aufgaben initialisieren crew = Crew( agents=[researcher,redakteur,writer], tasks=[research,proof, write], verbose=2 ) # Crew-Aktion starten result = crew.kickoff() # Ergebnis ausgeben print(result)