This repository has been archived on 2024-08-28. You can view files and clone it, but cannot push or open issues or pull requests.
crew-ai-codecollection/crew-suche-information-pruefe-wiki.py

106 lines
3.6 KiB
Python
Raw Normal View History

2024-03-25 12:05:23 +00:00
# Beschreibung: GPT Team für Wissen
# Vorbereitung: pip install python-dotenv crewai langchain langchain-community setuptools wikipedia
# pip install -U duckduckgo-search
# Importieren Sie die erforderlichen Bibliotheken
# Environment Variablen importieren
from dotenv import load_dotenv
load_dotenv()
2024-03-25 13:29:30 +00:00
# Importieren von erforderlichen Bibliotheken für Windows
import asyncio
import platform
if platform.system() == 'Windows':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
2024-03-25 12:05:23 +00:00
# CrewAI importieren
from crewai import Agent, Task, Crew, Process
# Tools importieren
from langchain.agents import load_tools
2024-03-25 13:29:30 +00:00
# DuckDuckGo
# from langchain_community.tools import DuckDuckGoSearchRun
# search_tool = DuckDuckGoSearchRun()
from langchain_community.utilities import DuckDuckGoSearchAPIWrapper
from langchain_community.tools import DuckDuckGoSearchResults
wrapper = DuckDuckGoSearchAPIWrapper(region="de-de", time="d", max_results=10)
search_tool = DuckDuckGoSearchResults(api_wrapper=wrapper, source="text")
2024-03-25 12:05:23 +00:00
# Wikipedia Suche importieren
from langchain_community.tools.wikipedia.tool import WikipediaQueryRun
from langchain_community.utilities.wikipedia import WikipediaAPIWrapper
# Tools definieren
human_tools = load_tools(["human"])
2024-03-25 13:29:30 +00:00
2024-03-25 12:05:23 +00:00
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
# Agenten definieren
wissenspruefer = Agent(
role='Wissensprüfer',
2024-03-25 13:29:30 +00:00
goal='Ermittelt die Fragestellung des Benutzers.',
2024-03-25 12:05:23 +00:00
error_handling='Bei unklaren Fragen um Präzisierung bitten.',
2024-03-25 13:29:30 +00:00
backstory='Als Wissensprüfer bin ich darauf spezialisiert, Fragen der Menschen so zu formulieren, dass sie Präzise beantwortet werden können.',
2024-03-25 12:05:23 +00:00
verbose=True,
allow_delegation=False,
tools=human_tools
)
wikipedia_recherche = Agent(
role='Wikipedia-Recherche',
2024-03-25 13:29:30 +00:00
goal='Finde verlässliche Informationen über Websuche, in Online-Werken, Wissensammlungen und auf Wikipedia.',
2024-03-25 12:05:23 +00:00
error_handling='Bei fehlenden Informationen um spezifischere Themen bitten.',
2024-03-25 13:29:30 +00:00
backstory='Ich nutze das Web als Prüfinstanz, um verlässliche und genaue Informationen zu sammeln, die helfen, Wissensfragen zu beantworten und zu präzisieren.',
2024-03-25 12:05:23 +00:00
verbose=True,
allow_delegation=False,
2024-03-25 13:29:30 +00:00
tools=[search_tool, wikipedia],
2024-03-25 12:05:23 +00:00
)
korrektur_synthese = Agent(
role='Korrektur und Synthese',
goal='Erstelle eine korrigierte und informative Antwort.',
error_handling='Bei unzureichenden Zusatzinformationen die ursprüngliche Antwort zurückgeben.',
backstory='Mit einem Auge fürs Detail und einer Leidenschaft für Genauigkeit nehme ich Antworten unter die Lupe und verbessere sie mithilfe von verifizierten Informationen.',
verbose=True,
allow_delegation=False,
)
# Tasks definieren (wie vorher)
fragenanalyse_task = Task(
description='Analysiere die Frage, um Kernthemen zu identifizieren.',
expected_output='Liste von Kernthemen oder Schlüsselkonzepten.',
agent=wissenspruefer,
)
wikipedia_recherche_task = Task(
description='Suche auf Wikipedia nach relevanten Informationen.',
expected_output='Zusammengefasste Informationen aus Wikipedia.',
agent=wikipedia_recherche,
)
korrektur_synthese_task = Task(
description='Synthetisiere eine korrigierte Antwort.',
expected_output='Eine überarbeitete und korrigierte Antwort.',
agent=korrektur_synthese,
)
# Crew zusammenstellen
wissens_crew = Crew(
agents=[wissenspruefer, wikipedia_recherche, korrektur_synthese],
tasks=[fragenanalyse_task, wikipedia_recherche_task, korrektur_synthese_task],
)
# Crew-Aktion starten
result = wissens_crew.kickoff()
# Ergebnis ausgeben
print(result)