add google search

This commit is contained in:
Joachim Happel 2024-03-26 18:23:30 +01:00
parent ad96cf315e
commit 33e6acafe4
4 changed files with 103 additions and 7 deletions

View file

@ -13,7 +13,7 @@ turbo35 = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.7)
# erforderlichen Bibliotheken # erforderlichen Bibliotheken
from crewai import Agent, Task, Crew from crewai import Agent, Task, Crew
from crewai_tools import DirectoryReadTool, FileReadTool, WebsiteSearchTool from crewai_tools import DirectoryReadTool, FileReadTool, WebsiteSearchTool, ScrapeWebsiteTool
from datetime import datetime from datetime import datetime
# Set date # Set date
@ -22,20 +22,20 @@ date_today = datetime.now().strftime("%Y-%m-%d")
# Instantiate tools # Instantiate tools
docs_tools = DirectoryReadTool(directory='F:\\blog-posts') docs_tools = DirectoryReadTool(directory='F:\\blog-posts')
file_read_tool = FileReadTool() file_read_tool = FileReadTool()
website_rag = WebsiteSearchTool() website_rag = ScrapeWebsiteTool()
# Create agents # Create agents
researcher = Agent( researcher = Agent(
role='OER Analyst', role='Reseacher',
goal='Finde neue Beiträge auf https://www.theology.de/service/neuesaufeinenblick.php für den Blogpost', goal='Finde neue Beiträge auf https://www.theo-web.de/ für den Blogpost',
backstory='Ein Agent, der im Internet nach den neuesten Entwicklungen im Bereich OER sucht.', backstory='Ein Agent, der im Internet nach den neuesten Entwicklungen im Bereich Theologie, KI und Bildung sucht.',
llm=turbo35, llm=turbo35,
tools=[website_rag] tools=[website_rag]
) )
writer = Agent( writer = Agent(
role='Content Writer', role='Content Writer',
goal='Schreibe einen Blogpost über die neuesten Beiträge auf https://www.theology.de/service/neuesaufeinenblick.php', goal='Schreibe einen Blogpost über dein Beitrag auf https://www.theo-web.de/fileadmin/user_upload/TW_pdfs2_2020/005.pdf',
backstory='Ein Agent, der Blogposts schreibt.', backstory='Ein Agent, der Blogposts schreibt.',
llm=turbo35, llm=turbo35,
tools=[docs_tools, file_read_tool] tools=[docs_tools, file_read_tool]
@ -52,7 +52,7 @@ write = Task(
description='Schreibe für heute einen ansprechenden Blogbeitrag finde eineÜberschrift unter Verwendung der Zusammenfassung in deutsch. Versichere dass es keine Dopplungen mit ihnalten aus anderen Dateien gibt.', description='Schreibe für heute einen ansprechenden Blogbeitrag finde eineÜberschrift unter Verwendung der Zusammenfassung in deutsch. Versichere dass es keine Dopplungen mit ihnalten aus anderen Dateien gibt.',
expected_output='Ein deutschprachiger Blogbeitrag markdown in 4 Absätzen über neue Inhalten. Charset: UTF8', expected_output='Ein deutschprachiger Blogbeitrag markdown in 4 Absätzen über neue Inhalten. Charset: UTF8',
agent=writer, agent=writer,
output_file='F:\\blog-posts\\post_theology_{date_today}.md' output_file=f"F:\\blog-posts\\post_theoweb_{date_today}.md"
) )
# Create and execute crew tasks # Create and execute crew tasks

View file

@ -0,0 +1,96 @@
# 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)

Binary file not shown.