Ich liebe es zu schreiben. Sie können das bemerken, wenn Sie mir oder meinem Weblog folgen. Aus diesem Grund produziere ich ständig neue Inhalte und spreche über Datenwissenschaft und künstliche Intelligenz.
Ich habe diese Leidenschaft vor ein paar Jahren entdeckt, als ich gerade meinen Weg in der Datenwissenschaft begann, meine Fähigkeiten lernte und weiterentwickelte. Zu dieser Zeit hörte ich einige erfahrene Fachleute in der Area, dass eine gute Studientechnik darin bestand, neue Fähigkeiten zu üben und irgendwo darüber zu schreiben und alles zu lehren, was Sie gelernt haben.
Außerdem struggle ich gerade in die USA gezogen, und niemand kannte mich hier. Ich musste additionally irgendwo anfangen und mein professionelles Picture in diesem Wettbewerbsmarkt erstellen. Ich erinnere mich, dass ich mit meiner Cousine gesprochen habe, die auch in der Tech -Branche ist, und er erzählte mir: Schreiben Sie Weblog -Beiträge über Ihre Erfahrungen. Sagen Sie den Leuten, was Sie tun. Und so tat ich es.
Und ich habe nie aufgehört.
Schneller Vorlauf bis 2025, jetzt habe ich quick zweihundert veröffentlichte Artikel, von denen viele in Richtung Information Science, ein veröffentlichtes Buch und ein gutes Publikum sind.
Das Schreiben hat mir im Datenwissenschaftsbereich so viel geholfen.
Zuletzt struggle eines meiner Interessen die erstaunliche Verarbeitung natürlicher Sprache und große Sprachmodelle. Es ist faszinierend zu lernen, wie diese modernen Modelle funktionieren.
Dieses Interesse führte mich zum Experimentieren Agenten AI sowie. Additionally habe ich etwas gelernt Crewaiein einfaches und open-Supply-Paket, mit dem wir AI-Agenten auf unterhaltsame und einfache Weise aufbauen können, mit wenig Code. Ich habe mich entschlossen, es zu testen, indem ich eine Besatzung von Agenten erstellte, um einen Weblog -Beitrag zu schreiben, und dann zu sehen, wie das geht.
In diesem Beitrag lernen wir, wie man diese Agenten erstellt und sie zusammenarbeitet, um einen einfachen Weblog -Beitrag zu erstellen.
Lass uns das machen.
Was ist eine Crew?
A Crew von AI -Agenten ist eine Kombination von zwei oder mehr Agenten, von denen jede eine Aufgabe für ein endgültiges Ziel ausführt.
In dieser Fallstudie werden wir eine Crew erstellen, die zusammenarbeiten wird, um einen kleinen Weblog -Beitrag zu einem bestimmten Thema zu erstellen, das wir anbieten werden.
Der Fluss funktioniert so:
- Wir wählen ein bestimmtes Thema, über das die Agenten schreiben können.
- Sobald die Crew begonnen hat, wird sie in die Wissensbasis gehen, einige meiner zuvor geschriebenen Artikel lesen und versuchen, meinen Schreibstil nachzuahmen. Dann erzeugt es eine Reihe von Richtlinien und übergeben sie an den nächsten Agenten.
- Als nächstes übernimmt der Planer -Agent das Web und sucht nach guten Inhalten zum Thema. Es erstellt einen Inhaltsplan und sendet ihn an den nächsten Agenten.
- Der Autor Agent erhält den Schreibplan und führt ihn nach dem Kontext und den erhaltenen Informationen aus.
- Schließlich wird der Inhalt an den letzten Agenten, den Editor, der den Inhalt überprüft und das endgültige Dokument als Ausgabe zurückgibt.
Im folgenden Abschnitt werden wir sehen, wie dies erstellt werden kann.
Code
Crewai ist ein großartiges Python -Paket, weil es den Code für uns vereinfacht. Beginnen wir additionally mit der Set up der beiden benötigten Pakete.
pip set up crewai crewai-tools
Wenn Sie möchten, können Sie als nächstes die Anweisungen auf ihren befolgen QuickStart Seite und eine vollständige Projektstruktur für Sie mit nur ein paar Befehlen an einem Terminal erstellen. Grundsätzlich werden einige Abhängigkeiten installiert, die für Crewai -Projekte vorgeschlagene Ordnerstruktur generiert und einige .yaml- und .py -Dateien generiert.
Ich persönlich bevorzuge es, diese selbst zu erschaffen, aber es liegt an Ihnen. Die Seite ist im Abschnitt „Referenzen“ aufgeführt.
Ordnerstruktur
Additionally, hier gehen wir.
Wir werden diese Ordner erstellen:
Und diese Dateien:
- Im Konfiguration Ordner: Erstellen Sie die Dateien
brokers.yaml
Undduties.yaml
- Im Wissen Ordner, dort füge ich die Dateien mit meinem Schreibstil hinzu.
- Im Projekt Wurzel: erstellen
crew.py
Undpredominant.py
.
Stellen Sie sicher Konfiguration Ordner und für die Wissensbasis innerhalb eines Wissen Ordner.
Lassen Sie uns als nächstes unsere Agenten setzen.
Agenten
Die Agenten bestehen aus:
- Identify des Agenten:
writer_style
- Rolle: LLMs sind gute Rollenspieler. Hier können Sie ihnen sagen, welche Rolle sie spielen sollten.
- Ziel: Sagen Sie dem Modell, was das Ziel dieses Agenten ist.
- Hintergrundgeschichte: Beschreiben Sie die Geschichte hinter diesem Agenten, wer es ist, was es tut.
writer_style:
position: >
Writing Model Analyst
purpose: >
Completely learn the data base and be taught the traits of the crew,
akin to tone, fashion, vocabulary, temper, and grammar.
backstory: >
You might be an skilled ghost author who can mimic any writing fashion.
You know the way to establish the tone and elegance of the unique author and mimic
their writing fashion.
Your work is the premise for the Content material Author to jot down an article on this subject.
Ich werde dich nicht mit allen für diese Crew erstellten Agenten langweilen. Ich glaube, du hast die Idee. Es ist eine Reihe von Eingabeaufforderungen, die jedem Agenten erklären, was er tun wird. Alle Anweisungen der Agenten werden in der Datei der Brokers.YAML gespeichert.
Stellen Sie sich vor, Sie wären ein Supervisor, der Leute einstellt, um ein Group zu erstellen. Überlegen Sie, welche Arten von Fachleuten Sie brauchen würden und welche Fähigkeiten benötigt werden.
Wir brauchen 4 Fachleute, die auf das endgültige Ziel der Erzeugung schriftlicher Inhalte hinarbeiten: (1) a Autorstylistin(2) a Planer(3) a Schriftsteller, und (4) an Editor.
Wenn Sie das Setup für sie sehen möchten, überprüfen Sie einfach den vollständigen Code im GitHub -Repository.
Aufgaben
Zurück zur Analogie des Managers, die Menschen einstellen, sobald wir unsere gesamte Crew „engagiert“ haben, ist es Zeit, die Aufgaben zu trennen. Wir wissen, dass wir einen Weblog -Beitrag produzieren wollen, wir haben 4 Agenten, aber was jeder von ihnen tun wird.
Nun, das wird in der Datei konfiguriert duties.yaml
.
Lassen Sie mich dazu den Code für den Autor Agent zeigen. Dies sind erneut die Teile, die für die Eingabeaufforderung benötigt werden:
- Identify der Aufgabe:
write
- Beschreibung: Die Beschreibung ist wie dem Fachmann zu sagen, wie Sie diese Aufgabe erfüllen sollen, genau wie wir einer neuen Einstellung sagen würden, wie er ihren neuen Job ausführt. Geben Sie genaue Anweisungen an, um das bestmögliche Ergebnis zu erzielen.
- Erwartete Ausgabe: So wollen wir die Ausgabe sehen. Beachten Sie, dass ich Anweisungen wie die Größe des Weblog -Beitrags, die Menge der Absätze und andere Informationen gebe, die meinem Agenten helfen, mir die erwartete Ausgabe zu geben.
- Agent, um es durchzuführen: Hier geben wir den Agenten an, der diese Aufgabe unter Verwendung desselben Namens in der ausführen wird
brokers.yaml
Datei. - Ausgabedatei: Jetzt immer anwendbar, aber wenn ja, ist dies das Argument. Wir haben um eine Markdown -Datei als Ausgabe gefragt.
write:
description: >
1. Use the content material plan to craft a compelling weblog publish on {subject}.
2. Incorporate web optimization key phrases naturally.
3. Sections/Subtitles are correctly named in an enticing method. Make sure that
so as to add Introduction, Drawback Assertion, Code, Earlier than You Go, References.
4. Add a summarizing conclusion - That is the "Earlier than You Go" part.
5. Proofread for grammatical errors and alignment with the author's fashion.
6. Use analogies to make the article extra partaking and sophisticated ideas simpler
to grasp.
expected_output: >
A well-written weblog publish in markdown format, prepared for publication.
The article should be inside a 7 to 12 minutes learn.
Every part will need to have at the very least 3 paragraphs.
When writing code, you'll write a snippet of code and clarify what it does.
Watch out to not add an enormous snippet at a time. Break it in affordable chunks.
Within the examples, create a pattern dataset for the code.
Within the Earlier than You Go part, you'll write a conclusion that's partaking
and factually correct.
agent: content_writer
output_file: blog_post.md
Nachdem die Agenten und Aufgaben definiert sind, ist es Zeit, unseren Crew -Fluss zu schaffen.
Codierung der Crew
Jetzt erstellen wir die Datei crew.py
wo wir den zuvor präsentierten Fluss auf übersetzen werden Python Code.
Wir beginnen mit dem Importieren der benötigten Module.
#Imports
import os
from crewai import Agent, Activity, Course of, Crew, LLM
from crewai.venture import CrewBase, agent, crew, job
from crewai.data.supply.pdf_knowledge_source import PDFKnowledgeSource
from crewai_tools import SerperDevTool
Wir werden die Foundation verwenden Agent
Anwesend Activity
Anwesend Crew
Anwesend Course of
Und LLM
Um unseren Fluss zu schaffen. PDFKnowledgeSource
Wird dem ersten Agenten helfen, meinen Schreibstil zu lernen, und SerperDevtool ist das Instrument, um das Web zu durchsuchen. Achten Sie darauf, dass Sie Ihren API -Schlüssel bei erhalten https://serper.dev/signup.
Eine bewährte Praxis in der Softwareentwicklung besteht darin, Ihre API -Schlüssel und Konfigurationseinstellungen von Ihrem Code getrennt zu halten. Wir werden a verwenden .env
Datei hierfür einen sicheren Ort zum Speichern dieser Werte. Hier ist der Befehl, sie in unsere Umgebung zu laden.
from dotenv import load_dotenv
load_dotenv()
Dann werden wir die verwenden PDFKnowledgeSource
Um der Crew zu zeigen, wo sie nach dem Stil des Schriftstellers suchen soll. Standardmäßig untersucht dieses Instrument den Wissensordner Ihres Projekts, weshalb die Bedeutung des Namens gleich ist.
# Data sources
pdfs = PDFKnowledgeSource(
file_paths=('article1.pdf',
'article2.pdf',
'article3.pdf'
)
)
Jetzt können wir die LLM einrichten, die wir für die Crew verwenden möchten. Es kann jeder von ihnen sein. Ich habe ein paar von ihnen getestet, und die, die ich am meisten mochte qwen-qwq-32b
Und gpt-4o
. Wenn Sie sich für OpenAI entscheiden, benötigen Sie auch einen API -Schlüssel. Für Qwen-QWQ können Sie den Code nur in Überzeugen und kommentieren Sie die Zeilen von OpenAI aus. Sie benötigen eine API-Style von COQ.
# LLMs
llm = LLM(
# mannequin="groq/qwen-qwq-32b",
# api_key= os.environ.get("GROQ_API_KEY"),
mannequin= "gpt-4o",
api_key= os.environ.get("OPENAI_API_KEY"),
temperature=0.4
)
Jetzt müssen wir eine erstellen Crew -Foundationund zeigt, wo Crewai die Konfigurationsdateien von Agenten und Aufgaben finden.
# Creating the crew: base reveals the place the brokers and duties are outlined
@CrewBase
class BlogWriter():
"""Crew to jot down a weblog publish"""
agents_config = "config/brokers.yaml"
tasks_config = "config/duties.yaml"
Agenten funktionieren
Und wir sind bereit, den Code für jeden Agenten zu erstellen. Sie bestehen aus einem Dekorateur @agent
um zu zeigen, dass die folgende Funktion ein Agent ist. Anschließend verwenden wir den Klassenagenten und geben den Namen des Agenten in der Konfigurationsdatei an, wobei die Ausführungsstufe 1 niedrig, 2 hoch ist. Sie können auch einen booleschen Wert wie True oder False verwenden.
Zuletzt geben wir an, ob der Agent ein Instrument verwendet und welches Modell er verwendet wird.
# Configuring the brokers
@agent
def writer_style(self) -> Agent:
return Agent(
config=self.agents_config('writer_style'),
verbose=1,
knowledge_sources=(pdfs)
)
@agent
def planner(self) -> Agent:
return Agent(
config=self.agents_config('planner'),
verbose=True,
instruments=(SerperDevTool()),
llm=llm
)
@agent
def content_writer(self) -> Agent:
return Agent(
config=self.agents_config('content_writer'),
verbose=1
)
@agent
def editor(self) -> Agent:
return Agent(
config=self.agents_config('editor'),
verbose=1
)
Aufgaben Funktionen
Der nächste Schritt ist das Erstellen der Aufgaben. Ähnlich wie bei den Agenten werden wir eine Funktion erstellen und sie mit dekorieren @job
. Wir verwenden die Klassenaufgabe, um die Funktionen von Crewai zu erben duties.yaml
Datei, die für jede erstellte Aufgabe verwendet werden soll. Wenn eine Ausgabedatei erwartet wird, verwenden Sie die output_file
Argument.
# Configuring the duties
@job
def fashion(self) -> Activity:
return Activity(
config=self.tasks_config('mystyle'),
)
@job
def plan(self) -> Activity:
return Activity(
config=self.tasks_config('plan'),
)
@job
def write(self) -> Activity:
return Activity(
config=self.tasks_config('write'),
output_file='output/blog_post.md' # That is the file that will probably be comprise the ultimate weblog publish.
)
@job
def edit(self) -> Activity:
return Activity(
config=self.tasks_config('edit')
)
Crew
Um alles zusammenzukleben, erstellen wir jetzt eine Funktion und dekorieren sie mit dem @crew
Dekorateur. Diese Funktion wird die Agenten und die Aufgaben in der Reihenfolge ausrichten, da der hier ausgewählte Prozess am einfachsten ist: sequentiell. Mit anderen Worten, alles läuft nach Ablauf nach Ablauf.
@crew
def crew(self) -> Crew:
"""Creates the Weblog Submit crew"""
return Crew(
brokers= (self.writer_style(), self.planner(), self.content_writer(), self.editor(), self.illustrator()),
duties= (self.fashion(), self.plan(), self.write(), self.edit(), self.illustrate()),
course of=Course of.sequential,
verbose=True
)
Die Besatzung laufen
Die Besatzung zu laufen ist sehr einfach. Wir erstellen die predominant.py
Datei und importieren die Besatzungsbasis BlogWriter
erstellt. Dann verwenden wir nur die Funktionen crew().kickoff(inputs)
Um es auszuführen und ein Wörterbuch mit den Eingaben zu übergeben, um den Weblog -Beitrag zu generieren.
# Script to run the weblog author venture
# Warning management
import warnings
warnings.filterwarnings('ignore')
from crew import BlogWriter
def write_blog_post(subject: str):
# Instantiate the crew
my_writer = BlogWriter()
# Run
outcome = (my_writer
.crew()
.kickoff(inputs = {
'subject': subject
})
)
return outcome
if __name__ == "__main__":
write_blog_post("Worth Optimization with Python")
Da ist es. Das Ergebnis ist ein schöner Weblog -Beitrag, der vom LLM erstellt wurde. Siehe unten.
Das ist so schön!
Bevor du gehst
Bevor Sie gehen, wissen Sie, dass dieser Weblog -Beitrag zu 100% von mir erstellt wurde. Diese von mir erstellte Crew struggle ein Experiment, das ich machen wollte, um mehr darüber zu erfahren, wie KI -Agenten erstellt und sie zusammenarbeiten können. Und wie gesagt, ich liebe es zu schreiben, additionally könnte ich die Qualität lesen und bewerten.
Ich bin der Meinung, dass diese Crew immer noch keinen sehr guten Job gemacht hat. Sie konnten die Aufgaben erfolgreich erledigen, aber sie gaben mir einen sehr flachen Posten und Code. Ich würde das nicht veröffentlichen, aber zumindest könnte es vielleicht ein Anfang sein.
Von hier aus ermutige ich Sie, mehr über Crewai zu erfahren. Ich habe ihren kostenlosen Kurs absolviert, in dem João de Moura, der Schöpfer des Pakets, uns zeigt, wie man verschiedene Arten von Crews kreiert. Es ist wirklich interessant.
Github -Repository
https://github.com/gurezende/crew_writer
Über mich
Wenn Sie mehr über meine Arbeit erfahren oder meinem Weblog folgen möchten (ich bin es wirklich!), Hier sind meine Kontakte und mein Portfolio.
Referenzen
(QuickStart Crewai) (https://docs.crewai.com/quickstart)
(Dokumentation der Crewai) (https://docs.crewai.com/Inroduction)
(Groq) (https://groq.com/)
(OpenAI) (https://openai.com)
(Crewai Free Course) (https://be taught.crewai.com/)