Stürzen Sie Ihre KI -Workflows mit Crewai -Strömen! Dieses leistungsstarke Framework bietet strukturierte Muster für die Orchestrierung von Interaktionen zwischen KI -Agenten, sodass Entwickler Codierungsaufgaben und Crews für eine robuste AI -Automatisierung nahtlos integrieren können. Die Agentenströme von Crewai bieten Veranstaltungsanbieter-Workflows, vereinfachte Aufgabenkoordination, staatliche Verwaltung und Ausführungssteuerung in Ihren KI-Anwendungen an.
Inhaltsverzeichnis
MovieRecommendationFlow
Was sind Crews?
Die Besatzungen von Crewai ermöglichen die Orchestrierung von AI -Agenten für die automatisierte Aufgabenabschluss. Sie ermöglichen eine reibungslose Zusammenarbeit zwischen Agenten, um komplexe Probleme zu lösen. Aber warum "fließt"? Da die Crewai -Ströme strukturierte Muster für die Verwaltung dieser Agenteninteraktionen bereitstellen, definieren Sie, wie Agenten kommunizieren und zusammenarbeiten, um spezifische Ziele zu erreichen. Flows sind im Wesentlichen Aufgabensequenzen, bei denen die Ausgabe einer Aufgabe die nächste auslösen kann. Das System bietet flexible Mechanismen zur Verwaltung von Zustand und bedingter Ausführung.
Flüsse verstehen
Die Strömungen arbeiten mit einem ereignisgesteuerten Modell und reagieren auf bestimmte Auslöser und Bedingungen. Dies ermöglicht dynamische Workflow -Anpassungen basierend auf Task -Execution -Ergebnissen und optimiert komplexer KI -Prozesse.
Mit den Crewai -Strömungen können Entwickler Aufgabensequenzen strukturieren und den Informationsfluss zwischen Aufgaben steuern. Aufgaben können miteinander verkettet werden und eine logische Reihenfolge der Operationen erstellen. Die bedingte Ausführung von Aufgaben basierend auf früheren Aufgabenausgaben wird ebenfalls unterstützt.
Das strukturierte Staatsmanagement, das häufig Pydantics BaseModel
verwendet, sorgt für die Datenkonsistenz und -struktur zwischen Aufgaben. Dies bietet Typensicherheit, Validierung und einfacheres Management komplexer Datenzustände.
Flows akzeptieren Eingaben, um ihren Status an jedem Zeitpunkt während der Ausführung zu initialisieren oder zu aktualisieren. Eingänge können zu Beginn, während oder nach der Ausführung je nach Workflow -Anforderungen bereitgestellt werden.
Die Crewai -Flüsse werden basierend auf den Aufgabenergebnissen dynamisch eingestellt. Aufgaben können auf Ausgänge aus den vorhergehenden Schritten anhören und ein reaktives System erstellen, bei dem neue Aufgaben basierend auf früheren Ausgängen ausgelöst werden. Die Dekorateure @listen()
und @router()
bieten diese Flexibilität und ermöglichen eine bedingte und dynamische Aufgabeverknüpfung. Der Dekorateur @start()
markiert den Ausgangspunkt des Flusses.
Dekorateure und bedingte Logik | Beschreibung |
@listen()
|
Erstellt Hörmethoden, die durch bestimmte Ereignisse oder Aufgabenausgänge ausgelöst werden. |
@router()
|
Ermöglicht eine bedingte Routing, die unterschiedliche Ausführungspfade basierend auf früheren Stufenausgängen ermöglicht. Nützlich für die Verwaltung von Erfolg/Misserfolgsergebnissen. |
Löst einen Hörer nur aus, wenn alle angegebenen Methoden Ausgänge ausgeben. |
Flows verwenden Routing, um die Ausführung anhand der Bedingungen zu steuern. Mit dem Dekorator @router()
ermöglicht es Methoden, Ausführungspfade basierend auf früheren Aufgabenergebnissen auszuwählen. Beispielsweise kann eine Methode die Ausgabe einer vorherigen Aufgabe überprüfen und einen Pfad auswählen, der darauf basiert, ob bestimmte Bedingungen erfüllt sind.
Flüsse in der Praxis: Ein Beispiel für Filmempfehlungen
Lassen Sie uns ein Agentensystem erstellen, das Crewai -Flows verwendet, um Filme basierend auf Genre zu empfehlen.
<code>!pip install crewai -U !pip install crewai-tools</code>
<code>import warnings warnings.filterwarnings('ignore')</code>
<code>import os os.environ["OPENAI_API_KEY"] = 'YOUR_OPENAI_API_KEY' os.environ['OPENAI_MODEL_NAME'] = 'gpt-4o-mini-2024-07-18' os.environ["SERPER_API_KEY"]='YOUR_SERPER_API_KEY'</code>
<code>from crewai import Agent, Task, Crew from crewai.flow.flow import listen, start, and_, or_, router from crewai_tools import SerperDevTool from crewai import Flow from pydantic import BaseModel</code>
Für alle Aufgaben wird ein einzelner Agent verwendet. Dieser Agent verwendet ein Google -Such -Tool.
<code>movie_agent = Agent( role="Recommend popular movie specific to the genre", goal="Provide a list of movies based on user preferences", backstory="You are a cinephile, " "you recommend good movies to your friends, " "the movies should be of the same genre", tools=[SerperDevTool()], verbose=True )</code>
<code>action_task = Task(name="ActionTask", description="Recommends a popular action movie", expected_output="A list of 10 popular movies", agent=movie_agent) comedy_task = Task(name="ComedyTask", description="Recommends a popular comedy movie", expected_output="A list of 10 popular movies", agent=movie_agent) drama_task = Task(name="DramaTask", description="Recommends a popular drama movie", expected_output="A list of 10 popular movies", agent=movie_agent) sci_fi_task = Task(name="SciFiTask", description="Recommends a sci-fi movie", expected_output="A list of 10 popular movies", agent=movie_agent)</code>
<code>action_crew = Crew(agents=[movie_agent], tasks=[action_task], verbose=True) comedy_crew = Crew(agents=[movie_agent], tasks=[comedy_task], verbose=True) drama_crew = Crew(agents=[movie_agent], tasks=[drama_task], verbose=True) sci_fi_crew = Crew(agents=[movie_agent], tasks=[sci_fi_task], verbose=True)</code>
<code>GENRES = ["action", "comedy", "drama", "sci-fi"] class GenreState(BaseModel): genre: str = ""</code>
MovieRecommendationFlow
Diese Klasse erbt aus der Flow
-Klasse und verwendet Zustandsfunktionen.
<code>class MovieRecommendationFlow(Flow[GenreState]): @start() def input_genre(self): genre = input("Enter a genre: ") print(f"Genre input received: {genre}") self.state.genre = genre return genre @router(input_genre) def route_to_crew(self): genre = self.state.genre if genre not in GENRES: raise ValueError(f"Invalid genre: {genre}") if genre == "action": return "action" elif genre == "comedy": return "comedy" elif genre == "drama": return "drama" elif genre == "sci-fi": return "sci-fi" @listen("action") def action_movies(self, genre): recommendations = action_crew.kickoff() return recommendations @listen("comedy") def comedy_movies(self, genre): recommendations = comedy_crew.kickoff() return recommendations @listen("drama") def drama_movies(self, genre): recommendations = drama_crew.kickoff() return recommendations @listen("sci-fi") def sci_fi_movies(self, genre): recommendations = sci_fi_crew.kickoff() return recommendations @listen(or_("action_movies", "comedy_movies", "drama_movies", "sci_fi_movies")) def finalize_recommendation(self, recommendations): print("Final movie recommendations:") return recommendations</code>
Die Dekorateure @listen
, @router
, or_
und @start
verwalten die Ausführung des Flows.
<code>flow = MovieRecommendationFlow() flow.plot() #This will generate a file, you'll need to display it separately (eg, using an image display function in your environment)</code>
<code>recommendations = await flow.kickoff_async()</code>
Abschluss
Die ereignisorientierten Workflows von Crewai vereinfachen die AI-Aufgabe Orchestrierung. Die flexible und adaptive Natur der Crewai -Ströme in Kombination mit Funktionen wie @listen()
, @router()
und staatlichem Management macht sie leistungsstarke Tools zum Aufbau effizienter und dynamischer AI -Anwendungen.
Häufig gestellte Fragen
Q1. Wie übergeben ich Eingänge an einen Fluss? Verwenden Sie flow.kickoff(inputs={"counter": 10})
.
Q2. Was ist der Unterschied zwischen @start()
und @listen()
? @start()
Markierende Flow -Startpunkte; @listen()
markieren Methoden, die durch Abschluss der Aufgabe ausgelöst werden.
Q3. Wie visualisiere ich meinen Fluss? Verwenden Sie flow.plot()
.
Q4. Kann ich menschliches Feedback einbeziehen? Ja, die Crewai-Ströme unterstützen das Feedback des Menschen in der Schleife.
Das obige ist der detaillierte Inhalt vonWas sind Agentenströme in Crewai? - Analytics Vidhya. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!