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/reli.py
2024-05-03 16:17:59 +02:00

118 lines
4.3 KiB
Python

# start with the following comando: panel serve chat-panel.py
import os
import platform
# Environment Variablen importieren
from dotenv import load_dotenv
load_dotenv()
from crewai import Crew, Process, Agent, Task
from langchain_openai import ChatOpenAI
from langchain_core.callbacks import BaseCallbackHandler
from typing import TYPE_CHECKING, Any, Dict, Optional
def user_input_callback(content):
input("Bitte geben Sie Ihr Feedback zur Unterrichtsstunde ein: ")
llm = ChatOpenAI(model="gpt-3.5-turbo-0125")
theologe = Agent(
name="Theologe",
role='Theologische Inhalte entwickeln',
backstory='''Langjähriger Theologieprofessor mit Spezialisierung auf historisch-kritische Bibelinterpretation''',
goal="Verständnis für biblische Texte und christliche Lehren fördern.",
llm=llm,
allow_delegation=False,
verbose=True
)
religionswissenschaftler = Agent(
name="Religionswissenschaftler",
role='Interreligiösen Dialog fördern',
backstory='''Religionswissenschaftler mit internationaler Erfahrung im Dialog zwischen Weltreligionen.''',
goal="Förderung von ethischer Argumentation und philosophischem Denken",
llm=llm,
allow_delegation=False,
verbose=True,
)
ethiker = Agent(
name="Ethiker",
role='Ethiker',
backstory='''Ethiker mit Schwerpunkt auf angewandter Ethik''',
goal="Förderung von ethischer Argumentation und philosophischem Denken",
llm=llm,
allow_delegation=False,
verbose=True,
)
moderator = Agent(
name="Moderator",
role='Generiert einen minutiösen Verlaufsplan für eine Stunde Religionsunterricht',
backstory='''Methoden und Didaktik Enthusiast mit besonderem Interesse am religionsbezogener Bildung.''',
goal="Entwicklung von perfekten Unterrichtsstunden für den Religionsunterricht.",
llm=llm,
allow_delegation=True,
verbose=True,
)
def StartCrew(prompt):
task1 = Task(
description=f"""Entwickeln Sie Unterrichtsideen auf deutsch zum Thema {prompt} """,
agent=theologe,
expected_output="Kurze Liste mit Unterrichtsideen mit relevante theologischen Perspektiven und zeitgemäßen Methoden in deutscher Sprache.",
)
task2 = Task(
description=("""Prüfen Sie die Unterrichtsiddeen Ihrer Kollegen und ergänzsen Sie diese vor allem aus Ihrer religionswissenschaftlichen Perspektive.
Ergänzen Sie die Unterrichtsideen um Aspekte des interreligiösen Dialogs und angemessener Methoden."""),
agent=religionswissenschaftler,
expected_output="Feedback und Ergänzungsvorschläge zu den Unterrichtsideen.",
context=[task1],
)
task3 = Task(
description=("""Erstellen Sie aus dem Gesprächverlauf einen finalen Ablaufplan für den Unterricht auf deutsch.
Versichern Sie sich, dass sowohl theologische als auch religionswissenschaftliche Aspekte berücksichtigt wurden.
Stellen Sie sicher, dass der interreligiöse Dialog und zeitgemäße Methoden im Unterrichtsplan enthalten sind.
Wenn das Ergebniss Ihrer Meinung nach gut ist, legen Sie das Ergebnis
einem Menschen zur Prüfung vor.
Make sure to check with a human if the draft is good before finalizing your answer.!
"""),
agent=moderator,
expected_output="Ein perfekter Ablaufplan für den Unterricht in tabellarischer Form auf deutsch.",
context=[task1, task2],
human_input=True,
callback=user_input_callback,
)
task4 = Task(
description=("""Nehmen sie Argumente aus dem menschlichen Feedback auf und ändern sie den Plan entsprechend."""),
agent=moderator,
expected_output="Das Feedback berücksichtigender überarbeiteter tabellarischer Ablauf.",
context=[task3],
)
# Establishing the crew with a hierarchical process
project_crew = Crew(
tasks=[task1, task2, task3, task4], # Tasks to be delegated and executed under the manager's supervision
agents=[theologe, religionswissenschaftler, moderator],
manager_llm=llm,
process=Process.sequential, # Specifies the hierarchical management approach
memory=False,
name="Religionsunterrichtsentwickelerrunde",
verbose=True
)
result = project_crew.kickoff()
print(result)
StartCrew('10 Gebote')