95 lines
3.5 KiB
Python
95 lines
3.5 KiB
Python
# Beschreibung: GPT Team aus OpenAI und Ollama
|
|
|
|
# Vorbereitung: pip install ollama openai
|
|
|
|
# Importieren Sie die erforderlichen Bibliotheken
|
|
import asyncio
|
|
import platform
|
|
|
|
if platform.system() == 'Windows':
|
|
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
|
|
|
|
|
# Environment Variablen importieren
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
|
|
# CrewAI importieren
|
|
from crewai import Agent, Task, Crew, Process
|
|
|
|
# Suche-Tool importieren
|
|
from langchain_community.tools import DuckDuckGoSearchRun
|
|
|
|
|
|
# LLMs von OpenAI und Ollama importieren
|
|
from langchain_community.llms import OpenAI, Ollama
|
|
from langchain_openai import ChatOpenAI
|
|
|
|
mistral = Ollama(model="mistral");
|
|
phi = Ollama(model="phi");
|
|
turbo35 = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.7)
|
|
chatgpt4 = ChatOpenAI(model_name="gpt-4", temperature=0.8)
|
|
|
|
|
|
# Tools importieren
|
|
from langchain.agents import load_tools
|
|
|
|
from langchain.tools import tool
|
|
|
|
|
|
@tool('DuckDuckGoSearch')
|
|
def search(search_query: str):
|
|
"""Suche im Internet nach Informationen zu einem bestimmten Thema"""
|
|
return DuckDuckGoSearchRun().run(search_query)
|
|
|
|
|
|
|
|
# Nachrichtenagenten initialisieren
|
|
nachrichten_agent = Agent(
|
|
role='Nachrichtenagent',
|
|
goal='Finde die neuesten Nachrichten zum Thema Bildung und KI im deutschsprachigen Internet',
|
|
backstory='Ein Agent, der im Internet nach den neuesten Entwicklungen im Bereich Bildung und Künstliche Intelligenz sucht.',
|
|
tools=[DuckDuckGoSearchRun()],
|
|
llm=mistral,
|
|
deligate_tools=False,
|
|
verbose=True
|
|
|
|
)
|
|
|
|
|
|
# Aufgabe für den Nachrichtenagenten
|
|
nachrichten_suchen_task = Task(
|
|
description='Suche nach den neuesten Meldungen zum Thema Theologie und KI mit DuckDuckGo. ',
|
|
agent=nachrichten_agent,
|
|
expected_output='Eine Liste der neuesten Nachrichten zum Thema Bildung und KI'
|
|
)
|
|
|
|
# Blogschreiber-Agent für Theologie und KI initialisieren
|
|
blogschreiber_agent = Agent(
|
|
role='Wissenschaftsjournalist und Influencer',
|
|
goal='Erstelle einen Blogbeitrag, der die neuesten Beiträge im Schnittbereich von Ethik, Theologie und KI-Forschung kommentiert und analysiert',
|
|
backstory='Ein Agent, der sich auf der Schnittstelle zwischen Theologie und KI-Forschung bewegt und regelmäßig Beiträge zu Ethik, Bildung und der Bedeutung dieser Themen im Kontext von KI schreibt.',
|
|
llm=mistral,
|
|
verbose=True,
|
|
allow_delegation=False
|
|
)
|
|
|
|
# Aufgabe für den Blogschreiber spezifiziert für Theologie und KI
|
|
blog_beitrag_schreiben_task = Task(
|
|
description='Recherchiere die neuesten Beiträge im Bereich Theologie und KI, Finde einen passenenden Titel für deinen Beitrag und schreibe eine einleitende Analyse und diskutiere die ethischen, theologischen sowie bildungsrelevanten Implikationen. Verlinke die recherchierten Beiträge und integriere sie in eine umfassende Diskussion.',
|
|
agent=blogschreiber_agent,
|
|
context=[nachrichten_suchen_task], # Der Blogschreiber nutzt die Ergebnisse des Nachrichtenagenten
|
|
expected_output='Ein tiefgründiger Blogbeitrag mit wervollen Links zum aktuellen Diskurs, der die Verbindung zwischen Theologie, Ethik und KI-Forschung beleuchtet, mit Bezug auf aktuelle Forschung und Diskussionen. Der Beitrag ist in Mardown und auf deutsch'
|
|
)
|
|
|
|
# Crew mit beiden Agenten und Aufgaben initialisieren
|
|
crew = Crew(
|
|
agents=[nachrichten_agent, blogschreiber_agent],
|
|
tasks=[nachrichten_suchen_task, blog_beitrag_schreiben_task],
|
|
process=Process.sequential,
|
|
verbose=2
|
|
)
|
|
|
|
# Crew-Aktion starten
|
|
result = crew.kickoff()
|
|
print(result) |