118 lines
4.3 KiB
Python
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') |