目錄
工作流控制和測序
有效的國家管理
靈活的輸入處理
事件驅動的體系結構和動態調整
任務路由和有條件執行
設置和安裝
處理警告
加載環境變量(用您的實際密鑰替換佔位符)
導入必要的模塊
定義代理
定義任務
為每種類型創建船員
定義流派和基因列
可視化流程
啟動流程
首頁 科技週邊 人工智慧 Crewai的代理流動是什麼? - 分析Vidhya

Crewai的代理流動是什麼? - 分析Vidhya

Mar 18, 2025 pm 12:05 PM

用Crewai流簡化您的AI工作流!這個強大的框架為協調AI代理之間的相互作用提供了結構化模式,使開發人員能夠無縫整合編碼任務和乘員組以進行魯棒的AI自動化。 Crewai的代理流提供了事件驅動的工作流程,簡化了您的AI應用程序中的任務協調,狀態管理和執行控制。

Crewai的代理流動是什麼? - 分析Vidhya

目錄

  • 什麼是船員?
  • 了解流
    • 工作流控制和測序
    • 有效的國家管理
    • 靈活的輸入處理
    • 事件驅動的體系結構和動態調整
    • 任務路由和有條件執行
  • 在實踐中流:電影推薦示例
    • 設置和安裝
    • 處理警告
    • 加載環境變量
    • 導入必要的模塊
    • 定義代理
    • 定義任務
    • 為每種類型創建船員
    • 定義流派和基因列
    • 構建MovieRecommendationFlow
    • 可視化流程
    • 啟動流程
  • 結論
  • 常見問題

什麼是船員?

Crewai的工作人員促進了AI代理的編排,以完成自動化任務完成。它們使代理商之間的平穩協作能夠解決複雜的問題。但是為什麼“流”呢?因為Crewai流提供了用於管理這些代理相互作用的結構化模式,從而定義了代理如何進行交流和共同努力以實現特定目標。流量本質上是任務序列,其中一個任務的輸出可以觸發下一個任務。該系統提供了用於管理狀態和有條件執行的靈活機制。

了解流

Crewai的代理流動是什麼? - 分析Vidhya

流在事件驅動的模型上運行,對特定的觸發器和條件做出反應。這允許根據任務執行結果進行動態工作流調整,並簡化複雜的AI進程。

工作流控制和測序

Crewai流使開發人員能夠構建任務序列並控制任務之間的信息流。可以將任務束縛在一起,創建邏輯運營順序。還支持基於先前任務輸出的任務執行。

有效的國家管理

結構化狀態管理通常使用Pydantic的BaseModel ,可確保任務之間的數據一致性和結構。這提供了複雜數據狀態的類型安全性,驗證和更輕鬆的管理。

靈活的輸入處理

Flow接受輸入以在執行過程中的任何時候初始化或更新其狀態。根據工作流程需求,可以在開始,期間或執行後提供輸入。

事件驅動的體系結構和動態調整

CREWAI根據任務結果動態調整。任務可以從先前的步驟中偵聽輸出,從而創建一個反應性系統,該系統根據先前的輸出觸發新任務。 @listen()@router()裝飾器提供了這種靈活性,可以啟用條件和動態任務鏈接。 @start()裝飾器標記了流的起點。

{{table_placeholder 21}}'或<td>Triggers a listener when any specified method emits an output.</td> <tr><td></td></tr>和_`
裝飾者和有條件的邏輯 描述
@listen() 創建由特定事件或任務輸出觸發的偵聽方法。
@router() 啟用有條件的路由,允許基於先前步驟輸出的不同執行路徑。對於管理成功/失敗成果有用。
僅當所有指定方法發出輸出時,才會觸發偵聽器。

任務路由和有條件執行

流利用路由來基於條件控制執行。 @router()裝飾允許方法基於先前的任務結果選擇執行路徑。例如,方法可能會檢查上一個任務的輸出,並根據是否滿足特定條件選擇路徑。

在實踐中流:電影推薦示例

讓我們使用crewai流量創建一個代理系統,以基於流派推薦電影。

設置和安裝

<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>
登入後複製

定義代理

單個代理將用於所有任務。該代理使用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

該類從Flow類繼承並使用狀態功能。

 <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@routeror_@start裝飾器管理流的執行。

可視化流程

<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>
登入後複製

Crewai的代理流動是什麼? - 分析Vidhya

啟動流程

<code>recommendations = await flow.kickoff_async()</code>
登入後複製

Crewai的代理流動是什麼? - 分析VidhyaCrewai的代理流動是什麼? - 分析Vidhya

結論

Crewai的事件驅動的工作流簡化了AI任務編排。 Crewai流的靈活和自適應性質,結合@listen()@router()和狀態管理等功能,使其成為構建高效和動態AI應用程序的強大工具。

常見問題

Q1。如何將輸入傳遞到流量?使用flow.kickoff(inputs={"counter": 10})

Q2。 @start()@listen()有什麼區別? @start()標記流動起點; @listen()標記由任務完成觸發的方法。

Q3。如何可視化我的流程?使用flow.plot()

Q4。我可以納入人類反饋嗎?是的,crewai流支持人類的反饋。

以上是Crewai的代理流動是什麼? - 分析Vidhya的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1671
14
CakePHP 教程
1428
52
Laravel 教程
1331
25
PHP教程
1276
29
C# 教程
1256
24
如何使用AGNO框架構建多模式AI代理? 如何使用AGNO框架構建多模式AI代理? Apr 23, 2025 am 11:30 AM

在從事代理AI時,開發人員經常發現自己在速度,靈活性和資源效率之間進行權衡。我一直在探索代理AI框架,並遇到了Agno(以前是Phi-

如何在SQL中添加列? - 分析Vidhya 如何在SQL中添加列? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQL的Alter表語句:動態地將列添加到數據庫 在數據管理中,SQL的適應性至關重要。 需要即時調整數據庫結構嗎? Alter表語句是您的解決方案。本指南的詳細信息添加了Colu

OpenAI以GPT-4.1的重點轉移,將編碼和成本效率優先考慮 OpenAI以GPT-4.1的重點轉移,將編碼和成本效率優先考慮 Apr 16, 2025 am 11:37 AM

該版本包括三種不同的型號,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,標誌著向大語言模型景觀內的特定任務優化邁進。這些模型並未立即替換諸如

超越駱駝戲:大型語言模型的4個新基準 超越駱駝戲:大型語言模型的4個新基準 Apr 14, 2025 am 11:09 AM

陷入困境的基準:駱駝案例研究 2025年4月上旬,梅塔(Meta)揭開了其Llama 4套件的模特,擁有令人印象深刻的性能指標,使他們對GPT-4O和Claude 3.5 Sonnet等競爭對手的良好定位。倫斯的中心

Andrew Ng的新簡短課程 Andrew Ng的新簡短課程 Apr 15, 2025 am 11:32 AM

解鎖嵌入模型的力量:深入研究安德魯·NG的新課程 想像一個未來,機器可以完全準確地理解和回答您的問題。 這不是科幻小說;多虧了AI的進步,它已成為R

多動症遊戲,健康工具和AI聊天機器人如何改變全球健康 多動症遊戲,健康工具和AI聊天機器人如何改變全球健康 Apr 14, 2025 am 11:27 AM

視頻遊戲可以緩解焦慮,建立焦點或支持多動症的孩子嗎? 隨著醫療保健在全球範圍內挑戰,尤其是在青年中的挑戰,創新者正在轉向一種不太可能的工具:視頻遊戲。現在是世界上最大的娛樂印度河之一

火箭發射模擬和分析使用Rocketpy -Analytics Vidhya 火箭發射模擬和分析使用Rocketpy -Analytics Vidhya Apr 19, 2025 am 11:12 AM

模擬火箭發射的火箭發射:綜合指南 本文指導您使用強大的Python庫Rocketpy模擬高功率火箭發射。 我們將介紹從定義火箭組件到分析模擬的所有內容

Google揭示了下一個2025年雲上最全面的代理策略 Google揭示了下一個2025年雲上最全面的代理策略 Apr 15, 2025 am 11:14 AM

雙子座是Google AI策略的基礎 雙子座是Google AI代理策略的基石,它利用其先進的多模式功能來處理和生成跨文本,圖像,音頻,視頻和代碼的響應。由DeepM開發

See all articles