95 lines
3 KiB
Python
95 lines
3 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-Agenten initialisieren
|
||
|
blogschreiber_agent = Agent(
|
||
|
role='Blogschreiber',
|
||
|
goal='Erstelle einen Blogbeitrag in deutscher Sprache basierend auf den neuesten Nachrichten zum Thema Bildung und KI',
|
||
|
backstory='Ein Agent, der fähig ist, informative und ansprechende Blogbeiträge zu schreiben.',
|
||
|
llm=mistral,
|
||
|
verbose=True,
|
||
|
allow_delegation=False
|
||
|
)
|
||
|
|
||
|
# Aufgabe für den Blogschreiber
|
||
|
blog_beitrag_schreiben_task = Task(
|
||
|
description='Schreibe einen deutschsprachigen Blogbeitrag zum den neuesten Entwicklungen, in dem du eine gelungene Einleitung verfasst und danach die Ergebnisse deines Co-Workers kommentierst und die die Links zu den Beiträgen setzt',
|
||
|
agent=blogschreiber_agent,
|
||
|
context=[nachrichten_suchen_task], # Der Blogschreiber verwendet die Ergebnisse des Nachrichtenagenten
|
||
|
expected_output='Ein fertiger Blogbeitrag zum Thema Bildung und KI 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)
|