クルワイのエージェントフローとは何ですか? - 分析Vidhya
CrewaiフローでAIワークフローを合理化します!この強力なフレームワークは、AIエージェント間の相互作用を調整するための構造化されたパターンを提供し、開発者がコーディングタスクとクルーを堅牢なAIオートメーションのシームレスに統合できるようにします。 Crewaiのエージェントフローは、イベント主導のワークフローを提供し、AIアプリケーション内のタスク調整、国家管理、および実行制御を簡素化します。
目次
- 乗組員とは何ですか?
- フローを理解する
- ワークフロー制御とシーケンス
- 効率的な州管理
- 柔軟な入力処理
- イベント駆動型アーキテクチャと動的調整
- タスクルーティングと条件付き実行
- 実際の流れ:映画の推奨の例
- セットアップとインストール
- 警告の処理
- 環境変数の読み込み
- 必要なモジュールのインポート
- エージェントの定義
- タスクの定義
- 各ジャンルの乗組員を作成します
- ジャンルとジェネラステートの定義
-
MovieRecommendationFlow
の構築 - 流れを視覚化します
- 流れを開始します
- 結論
- よくある質問
乗組員とは何ですか?
Crewaiの乗組員は、自動タスクの完了のためにAIエージェントのオーケストレーションを促進します。エージェント間のスムーズなコラボレーションを可能にして、複雑な問題を解決できます。しかし、なぜ「流れる」のでしょうか? Crewaiフローは、これらのエージェントの相互作用を管理するための構造化されたパターンを提供し、エージェントがどのようにコミュニケーションをとり、協力して特定の目標を達成するかを定義するためです。フローは本質的にタスクのシーケンスであり、1つのタスクの出力が次のタスクをトリガーできます。このシステムは、状態と条件付きの実行を管理するための柔軟なメカニズムを提供します。
フローを理解する
フローは、特定のトリガーや条件に反応して、イベント駆動型モデルで動作します。これにより、タスクの実行結果に基づいて動的なワークフロー調整が可能になり、複雑なAIプロセスが合理化されます。
ワークフロー制御とシーケンス
CREWAIフローにより、開発者はタスクシーケンスを構成し、タスク間の情報フローを制御できます。タスクは一緒に連鎖して、操作の論理的な順序を作成できます。以前のタスク出力に基づくタスクの条件付き実行もサポートされています。
効率的な州管理
多くの場合、PydanticのBaseModel
を使用している構造化された状態管理により、タスク間のデータの一貫性と構造が保証されます。これにより、タイプの安全性、検証、および複雑なデータ状態の管理が容易になります。
柔軟な入力処理
フローは、実行中の任意の時点で状態を初期化または更新するための入力を受け入れます。ワークフローのニーズに応じて、入力は、開始時、実行中、または実行後に提供できます。
イベント駆動型アーキテクチャと動的調整
CREWAIフローは、タスクの結果に基づいて動的に調整します。タスクは、前のステップからの出力をリッスンし、以前の出力に基づいて新しいタスクがトリガーされるリアクティブシステムを作成できます。 @listen()
および@router()
デコレーターは、この柔軟性を提供し、条件付きおよび動的タスクのリンクを可能にします。 @start()
デコレーターは、フローの開始点をマークします。
デコレーターと条件付きロジック | 説明 |
@listen() |
特定のイベントまたはタスク出力によってトリガーされるリスナーメソッドを作成します。 |
@router()
|
条件付きルーティングを有効にし、以前のステップ出力に基づいて異なる実行パスを許可します。成功/失敗の結果を管理するのに役立ちます。 |
指定されたすべてのメソッドが出力を発する場合にのみ、リスナーをトリガーします。 |
タスクルーティングと条件付き実行
フローはルーティングを利用して、条件に基づいて実行を制御します。 @router()
デコレーターを使用すると、以前のタスク結果に基づいて実行パスを選択できます。たとえば、メソッドは以前のタスクの出力をチェックし、特定の条件が満たされているかどうかに基づいてパスを選択する場合があります。
実際の流れ:映画の推奨の例
ジャンルに基づいて映画を推奨するために、Crewai Flowsを使用してエージェントシステムを作成しましょう。
セットアップとインストール
<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
、 @router
、 or_
、および@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>
流れを開始します
<code>recommendations = await flow.kickoff_async()</code>
結論
Crewaiのイベント主導のワークフローは、AIタスクオーケストレーションを簡素化します。 @listen()
、 @router()
、州管理などの機能と組み合わされたCrewaiフローの柔軟で適応的な性質により、効率的で動的なAIアプリケーションを構築するための強力なツールが作成されます。
よくある質問
Q1。入力をフローに渡すにはどうすればよいですか? flow.kickoff(inputs={"counter": 10})
を使用します。
Q2。 @start()
と@listen()
の違いは何ですか? @start()
フローの出発点をマークします。 @listen()
マークメソッドは、タスクの完了によってトリガーされます。
Q3。フローを視覚化するにはどうすればよいですか? flow.plot()
を使用します。
Q4。人間のフィードバックを組み込むことはできますか?はい、Crewai Flowsは人間のループフィードバックをサポートします。
以上がクルワイのエージェントフローとは何ですか? - 分析Vidhyaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











エージェントAIに取り組んでいる間、開発者は速度、柔軟性、リソース効率の間のトレードオフをナビゲートすることがよくあります。私はエージェントAIフレームワークを探索していて、Agnoに出会いました(以前はPhi-でした。

SQLの変更テーブルステートメント:データベースに列を動的に追加する データ管理では、SQLの適応性が重要です。 その場でデータベース構造を調整する必要がありますか? Alter Tableステートメントはあなたの解決策です。このガイドの詳細は、コルを追加します

このリリースには、GPT-4.1、GPT-4.1 MINI、およびGPT-4.1 NANOの3つの異なるモデルが含まれており、大規模な言語モデルのランドスケープ内のタスク固有の最適化への動きを示しています。これらのモデルは、ようなユーザー向けインターフェイスをすぐに置き換えません

埋め込みモデルのパワーのロックを解除する:Andrew Ngの新しいコースに深く飛び込む マシンがあなたの質問を完全に正確に理解し、応答する未来を想像してください。 これはサイエンスフィクションではありません。 AIの進歩のおかげで、それはRになりつつあります

Rocketpy:A包括的なガイドでロケット発売をシミュレートします この記事では、強力なPythonライブラリであるRocketpyを使用して、高出力ロケット発売をシミュレートすることをガイドします。 ロケットコンポーネントの定義からシミュラの分析まで、すべてをカバーします

GoogleのAI戦略の基礎としてのGemini Geminiは、GoogleのAIエージェント戦略の基礎であり、高度なマルチモーダル機能を活用して、テキスト、画像、オーディオ、ビデオ、コード全体で応答を処理および生成します。 DeepMによって開発されました

「オープンソースロボットを世界に持ち込むために花粉ロボットを獲得していることを発表して非常にうれしいです」と、Facing FaceはXで述べました。

AIコミュニティの重要な開発において、Agenticaと一緒にAIは、DeepCoder-14Bという名前のオープンソースAIコーディングモデルをリリースしました。 Openaiのようなクローズドソースの競合他社と同等のコード生成機能を提供する
