From 5a31c360b02d2f4af45dac2cf74edf087e436b7a Mon Sep 17 00:00:00 2001 From: Joachim Happel Date: Mon, 25 Mar 2024 22:26:44 +0100 Subject: [PATCH] example added --- README.md | 25 ++++++++++- crew-news-post-mistral.py | 95 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 crew-news-post-mistral.py diff --git a/README.md b/README.md index 1b2227f..46eace8 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,15 @@ -Anleitungsvideo: +# crewAI + +## Anleitungsvideo + [Youtube: CrewAI Python Tutorial for Beginners - Let's Build an AI Crew! ](https://www.youtube.com/watch?v=6NbJQsCg1VQ) +## Open Source Repositorium +https://github.com/joaomdmoura/crewAI # Installation + ```shell py -m venv venv @@ -13,4 +19,21 @@ Anleitungsvideo: #linux python -m venv venv ./venv/bin/activate) + + + pip install python-dotenv crewai langchain langchain-community setuptools wikipedia duckduckgo-search openai + + +## Mit localen Large Language Modulen (LLM) + +## Install Ollama +## https://ollama.com/ + +pip install ollama + + ``` + +Alle Beispiele lassen sich wie folgt starten mit: + +`python beispieldatei.py` diff --git a/crew-news-post-mistral.py b/crew-news-post-mistral.py new file mode 100644 index 0000000..3344f4c --- /dev/null +++ b/crew-news-post-mistral.py @@ -0,0 +1,95 @@ +# 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) \ No newline at end of file