Selesaikan aliran kerja AI anda dengan aliran krew! Rangka kerja yang kuat ini menyediakan corak berstruktur untuk mengatur interaksi antara agen AI, yang membolehkan pemaju untuk mengintegrasikan tugas dan krew pengekodan dengan lancar untuk automasi AI yang mantap. Aliran Agentic Crewai menawarkan aliran kerja yang didorong oleh peristiwa, memudahkan koordinasi tugas, pengurusan negeri, dan kawalan pelaksanaan dalam aplikasi AI anda.
Jadual Kandungan
MovieRecommendationFlow
Apa itu krew?
Krew Crewai memudahkan orkestra ejen AI untuk menyelesaikan tugas automatik. Mereka membolehkan kerjasama yang lancar antara ejen untuk menyelesaikan masalah yang rumit. Tetapi mengapa "mengalir"? Kerana aliran krew menyediakan corak berstruktur untuk menguruskan interaksi ejen ini, menentukan bagaimana ejen berkomunikasi dan bekerjasama untuk mencapai matlamat tertentu. Aliran pada dasarnya adalah urutan tugas, di mana output satu tugas boleh mencetuskan seterusnya. Sistem ini menawarkan mekanisme fleksibel untuk menguruskan pelaksanaan negara dan bersyarat.
Memahami aliran
Aliran beroperasi pada model yang didorong oleh peristiwa, bertindak balas terhadap pencetus dan keadaan tertentu. Ini membolehkan pelarasan aliran kerja dinamik berdasarkan hasil pelaksanaan tugas, menyelaraskan proses AI kompleks.
Aliran krew membolehkan pemaju menyusun urutan tugas dan mengawal aliran maklumat antara tugas. Tugas boleh dirantai bersama -sama, mewujudkan susunan operasi logik. Pelaksanaan tugas bersyarat berdasarkan output tugas terdahulu juga disokong.
Pengurusan negeri berstruktur, sering menggunakan BaseModel
Pydantic, memastikan konsistensi dan struktur data antara tugas. Ini menyediakan jenis keselamatan, pengesahan, dan pengurusan data yang lebih mudah.
Aliran menerima input untuk memulakan atau mengemas kini keadaan mereka pada bila -bila masa semasa pelaksanaan. Input boleh disediakan pada permulaan, semasa, atau selepas pelaksanaan, bergantung kepada keperluan alur kerja.
Crewai mengalir menyesuaikan secara dinamik berdasarkan hasil tugas. Tugas boleh mendengar output dari langkah -langkah sebelumnya, mewujudkan sistem reaktif di mana tugas -tugas baru dicetuskan berdasarkan output sebelumnya. The @listen()
dan @router()
penghias memberikan fleksibiliti ini, membolehkan tugas bersyarat dan dinamik menghubungkan. Penghias @start()
menandakan titik permulaan aliran.
Penghias dan logik bersyarat | Penerangan |
@listen()
|
Mewujudkan kaedah pendengar yang dicetuskan oleh peristiwa tertentu atau output tugas. |
@router()
|
Membolehkan penghalaan bersyarat, membolehkan laluan pelaksanaan yang berbeza berdasarkan output langkah terdahulu. Berguna untuk menguruskan hasil kejayaan/kegagalan. |
Mencetuskan pendengar hanya apabila semua kaedah yang ditentukan memancarkan output. |
Aliran menggunakan penghalaan untuk mengawal pelaksanaan berdasarkan keadaan. Penghias @router()
membolehkan kaedah untuk memilih laluan pelaksanaan berdasarkan hasil tugas terdahulu. Sebagai contoh, kaedah mungkin menyemak output tugas sebelumnya dan memilih laluan berdasarkan sama ada syarat -syarat tertentu dipenuhi.
Aliran dalam Amalan: Contoh cadangan filem
Mari buat sistem agentik menggunakan aliran krew untuk mengesyorkan filem berdasarkan genre.
<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>
Ejen tunggal akan digunakan untuk semua tugas. Ejen ini menggunakan alat carian Google.
<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
Kelas ini mewarisi dari kelas Flow
dan menggunakan fungsi negara.
<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>
@listen
, @router
, or_
, dan @start
Decorators menguruskan pelaksanaan aliran.
<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>
Kesimpulan
Aliran kerja yang didorong oleh peristiwa Crewai memudahkan orkestra tugas AI. Sifat fleksibel dan adaptif aliran krew, digabungkan dengan ciri -ciri seperti @listen()
, @router()
, dan pengurusan negeri, menjadikan mereka alat yang kuat untuk membina aplikasi AI yang cekap dan dinamik.
Soalan yang sering ditanya
Q1. Bagaimana saya lulus input ke aliran? Gunakan flow.kickoff(inputs={"counter": 10})
.
S2. Apakah perbezaan antara @start()
dan @listen()
? @start()
menandakan titik permulaan aliran; @listen()
menandakan kaedah yang dicetuskan oleh penyelesaian tugas.
Q3. Bagaimana saya menggambarkan aliran saya? Gunakan flow.plot()
.
Q4. Bolehkah saya memasukkan maklum balas manusia? Ya, aliran krew menyokong maklum balas manusia-dalam-gelung.
Atas ialah kandungan terperinci Apakah aliran agentik di Crewai? - Analytics Vidhya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!