2024-04-05 13:07:14 +00:00
# pip install arxiv
import os
import gradio as gr
from crewai import Agent , Task , Crew , Process
# Importieren Sie die benötigten Tools
from langchain_community . llms import Ollama
from langchain_community . tools import DuckDuckGoSearchRun
# ChatCPT 3.5 importieren
from langchain_openai import ChatOpenAI
turbo35 = ChatOpenAI ( model_name = " gpt-3.5-turbo " , temperature = 0.7 )
2024-04-30 16:05:08 +00:00
gpt4 = ChatOpenAI ( model_name = " gpt-4-0125-preview " , temperature = 0.7 )
2024-04-05 13:07:14 +00:00
# Wikipedia Suche importieren
from langchain_community . tools . wikipedia . tool import WikipediaQueryRun
from langchain_community . utilities . wikipedia import WikipediaAPIWrapper
from langchain_community . tools . arxiv . tool import ArxivQueryRun
# Initialisieren Sie die Tools
2024-04-30 16:05:08 +00:00
ollama_llm = Ollama ( model = " solar " )
starcoder2 = Ollama ( model = " starcoder2 " )
2024-04-05 13:07:14 +00:00
search_tool = DuckDuckGoSearchRun ( )
wikipedia = WikipediaQueryRun ( api_wrapper = WikipediaAPIWrapper ( ) )
arxiv = ArxivQueryRun ( )
# Definieren Sie Ihre Agenten mit Rollen und Zielen
informations_sammler = Agent (
role = ' Forscher ' ,
goal = ' Sammeln von Basisinformationen und Zitate zum Thema ' ,
backstory = """ Spezialisiert auf die Sammlung und Analyse von Grundinformationen und wichtiger Zitate. """ ,
verbose = True ,
2024-04-30 16:05:08 +00:00
async_execution = True ,
2024-04-05 13:07:14 +00:00
allow_delegation = False ,
2024-04-30 16:05:08 +00:00
llm = gpt4
2024-04-05 13:07:14 +00:00
)
informations_verifizierer = Agent (
role = ' Datenanalyst ' ,
goal = ' Verifizieren und Erweitern der Informationen durch Websuche. Füge Zitate und Urls als Belege hinzu. Entferne falsche Informationen aus den Ergebnissen. Suche nach weiteren Informationen und Zitaten gegebenenfalls über deutsche und englische Wikipedia. Nutze geignete Begriffe für die Suche in Arxiv. ' ,
backstory = """ Experte in der Überprüfung von Informationen und der Erweiterung durch effektive Websuchen. """ ,
verbose = True ,
2024-04-30 16:05:08 +00:00
allow_delegation = True ,
async_execution = False ,
tools = [ search_tool , wikipedia ] ,
llm = gpt4
2024-04-05 13:07:14 +00:00
)
informations_organisator = Agent (
role = ' Inhaltsmanager ' ,
2024-04-30 16:05:08 +00:00
goal = ' Gliedern der korrekten Informationen, Zitate und Links nach Kategorien ' ,
backstory = """ Zuständig für die Organisation der korrekten Informationen in einer strukturierten Form. """ ,
2024-04-05 13:07:14 +00:00
verbose = True ,
allow_delegation = False ,
2024-04-30 16:05:08 +00:00
async_execution = False ,
llm = gpt4
2024-04-05 13:07:14 +00:00
)
# Erstellen Sie Aufgaben für Ihre Agenten
task1 = Task (
2024-04-30 16:05:08 +00:00
description = """ Sammle grundlegende Informationen über eun Thema. """ ,
agent = informations_sammler ,
expected_output = """ Eine Zusammenfassung von Basisinformationen über das Thema,
2024-04-05 13:07:14 +00:00
einschließlich Definitionen , wichtigsten Fakten und allgemeinem Überblick . """
)
task2 = Task (
2024-04-30 16:05:08 +00:00
description = """ Verifiziere die gesammelten Informationen, streiche falsche und erweitere sie durch zusätzliche Websuchen. """ ,
agent = informations_verifizierer ,
expected_output = """ Eine verifizierte und erweiterte Liste von Informationen zu Thema X,
inklusive zusätzlicher Quellen und tiefergehenden Einsichten . """ ,
context = [ task1 ]
2024-04-05 13:07:14 +00:00
)
task3 = Task (
2024-04-30 16:05:08 +00:00
description = """ Erzeuge aus den gesammelten und verifizierten Informationen eine Zusammenstellung mit entsprechenden Quellenangaben. """ ,
agent = informations_organisator ,
expected_output = """ Eine Liste mit verifizierten Informationen. """ ,
context = [ task2 ]
2024-04-05 13:07:14 +00:00
)
# Instanziieren Sie Ihre Crew mit einem sequenziellen Prozess
crew = Crew (
agents = [ informations_sammler , informations_verifizierer , informations_organisator ] ,
tasks = [ task1 , task2 , task3 ] ,
verbose = 2 ,
2024-04-30 16:05:08 +00:00
manager_llm = gpt4 ,
process = Process . sequential
2024-04-05 13:07:14 +00:00
)
# Starten Sie den Arbeitsprozess!
def cli_interface ( thema ) :
task1 . description = thema
result = crew . kickoff ( )
return result
iface = gr . Interface (
fn = cli_interface ,
inputs = gr . Textbox ( lines = 2 , placeholder = " Recherche zu welchem Theme " , value = " " ) ,
outputs = " text " ,
title = " Recherche " ,
description = " Führt eine Recherche zu einem bestimmten Thema durch und organisiert die gesammelten Informationen. "
)
iface . launch ( share = False )