106 lines
3.6 KiB
Python
106 lines
3.6 KiB
Python
# 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()
|
|
|
|
# Importieren von erforderlichen Bibliotheken für Windows
|
|
import asyncio
|
|
import platform
|
|
if platform.system() == 'Windows':
|
|
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
|
|
|
# CrewAI importieren
|
|
from crewai import Agent, Task, Crew, Process
|
|
|
|
# Tools importieren
|
|
from langchain.agents import load_tools
|
|
|
|
# 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")
|
|
|
|
# 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"])
|
|
|
|
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
|
|
|
|
# Agenten definieren
|
|
wissenspruefer = Agent(
|
|
role='Wissensprüfer',
|
|
goal='Ermittelt die Fragestellung des Benutzers.',
|
|
error_handling='Bei unklaren Fragen um Präzisierung bitten.',
|
|
backstory='Als Wissensprüfer bin ich darauf spezialisiert, Fragen der Menschen so zu formulieren, dass sie Präzise beantwortet werden können.',
|
|
verbose=True,
|
|
allow_delegation=False,
|
|
tools=human_tools
|
|
)
|
|
|
|
wikipedia_recherche = Agent(
|
|
role='Wikipedia-Recherche',
|
|
goal='Finde verlässliche Informationen über Websuche, in Online-Werken, Wissensammlungen und auf Wikipedia.',
|
|
error_handling='Bei fehlenden Informationen um spezifischere Themen bitten.',
|
|
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.',
|
|
verbose=True,
|
|
allow_delegation=False,
|
|
tools=[search_tool, wikipedia],
|
|
)
|
|
|
|
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)
|