ステップ・バイ・ステップで解説するCrewAIエージェントの構築 – 実践的なユースケース!(パート1)

AIに仕事を奪われたい
この記事は約20分で読めます。

11,718 文字

Step-by-Step CrewAI Agent Build - Real Use Case! (Part 1)
Let's build a team of agents together using CrewAI!Try Mammouth for just today: My Newsletter for Regular AI Updates...

このビデオではCrewAIを使って、完全に一からなにかを作っていきます。これは実際の現場で使えるようなものを作っていきたいと思います。具体的に何を作るのかということと、どのように構築していくのかをステップバイステップで詳しくお見せしていきます。
正直なところ、具体的な作り方についてはまだ完全には把握できていません。試行錯誤しながら、ミスも含めて全てお見せしていきます。おそらくGPT4-0.1を含むOpenAIのモデルやPerplexityなどを使用することになると思います。
今回作ろうとしているのは、私と私のチームが考えている教育ポータルです。基本的にはAIに精通するために必要な情報を全て集約したもので、超基礎から複雑なチュートリアルまで全てを網羅したいと考えています。少なくとも最初のドラフトについては、できるだけ自動化したいと思っています。主にテキストベースの教育コンテンツやチュートリアル、画像も含めたステップバイステップのガイドを作成したいと考えています。これらをクルー(AIチーム)に作成してもらおうと思います。
それでは始めましょう。今回はCursorを使ってみようと思います。普段はVS Codeを使うことが多いんですが、今回はCursorを使ってみて、できるところまでやってみましょう。おそらくパート1、2、3という形になるかもしれません。
まず最初にすることは、新しいconda環境を立ち上げることです。Pythonの環境管理は難しいですからね。
「conda create -n edu python=3.12」と入力します。
続行するかと聞かれたので「yes」。
次に新しい環境を有効化します。
「conda activate edu」と。はい、これでオッケーです。
次にCrewAIをインストールしましょう。
「pip install crewai」を実行します。
CrewAIのインストールが完了したら、次はLangtraceをインストールします。
「pip install langchain-python-sdk」を実行します。
これら全てが先ほど作ったconda環境にインストールされています。繰り返しになりますが、VMやcondaなど、何らかのPython環境管理ツールを必ず使うようにしましょう。Pythonの環境管理は本当に頭が痛くなる問題ですからね。
さて、これで両方インストールできました。CrewAIのセットアップは本当に簡単です。「crewai create crew」と入力して、「edu」というクルーの名前を付けてエンターを押すだけです。これによってアプリケーションのスケルトンが作成され、必要なファイルが全て用意されます。本当に簡単ですね。
はい、ダウンロードが完了しました。プロバイダーの設定を求められているので、今回は複数のプロバイダーを使用する予定ですが、まずはOpenAIから始めましょう。
モデルの選択を求められているので、GPT4-0.1-miniを選びます。まずは速度とコストを重視したいと思います。より高性能で高価なモデルは後ほど試してみることにします。
APIキーが必要なので、OpenAIで新しいキーを作成します。「edu」という名前を付けて、シークレットキーを作成し、コピーしてペーストします。
これで必要なファイルが全て作成されました。次にこれらのファイルが作成されたフォルダを開く必要があります。「cd edu」を実行して、フォルダを開きます。デスクトップのeduフォルダを選択しました。
これでクルーが起動しました。edu conda環境が有効になっていることを確認しておきましょう。はい、確認できました。
ここでmain.pycrew.py、configフォルダにagents.yamlとtasks.yamlがあるのが分かります。標準で2つのエージェントと2つのタスクが設定されています。見てみましょう。
researchタスクとreportingタスクがあり、基本的にはあるトピックについて調査し、その結果をマークダウン形式でレポートにまとめるという機能です。エージェントとしては、研究者エージェントとレポート分析エージェントがいます。
実行する前に「crewai install」を実行しましょう。必要なものが全てインストールされます。
新しい環境が作成されたので、ワークスペースフォルダに選択するかどうか聞かれています。この質問は毎回混乱するんですよね。既に環境があるのに…おそらくコードエディタ自体がどの環境を使うべきかを聞いているんだと思うので、「yes」を選択します。後で修正が必要かもしれませんね。
ちなみに、Python環境管理をもっと簡単にする方法をご存知の方がいましたら、コメントで教えていただけると嬉しいです。25年近くコーディングをしていますが、まだこれが非常に難しいと感じています。
本日の動画は、Mammutの提供でお送りしています。Mammut AIは、最高のモデルを全て1つの場所に集め、1つの価格で提供しています。Claude、Llama、GPT4-0、MRAW、Gemini Pro、さらにはGPT1まで、それぞれのAIに個別に支払う必要はなく、Mammutに10ドル支払えば全てが使えます。
さらに画像生成機能も備えており、Midjourney、Flux Pro、DALL-E、Stable Diffusionなども全て10ドルで利用可能です。モデルは新しいバージョンがリリースされると頻繁に更新されます。最高のモデルに1つの低価格でアクセスできるMammutをぜひチェックしてみてください。M-A-M-M-O-U-T-H.AIです。改めてMammutに感謝します。
では、テストしてみましょう。「crewai run」を実行して、動作するか確認します。
クルーが実行されています。完璧ですね。警告が出ていますが、無効なエスケープシーケンスについてのもので、あまり重要ではなさそうです。
エージェントが研究を始めました。今のところ非常に基本的な内容ですが、とりあえず動作確認ができればいいんです。report.MDを確認すると、レポートが正常に作成されていることが分かります。完璧です。
繰り返しになりますが、現時点では非常に基本的な内容で、ウェブにアクセスしたり、ツールを使用したりはしていません。custom_tool.pyでカスタムツールを追加したり、Langchainの組み込みツールを使用したりすることができますが、まだそこまでは進んでいません。
動作することが確認できたので、次はLangtraceが正しくインストールされていることを確認しましょう。Langtraceにアクセスします。既にアカウントがあるのでサインインします。
「edu」という名前で新しいプロジェクトを作成し、プロジェクトタイプとしてCrewAIを選択します。プロジェクトをセットアップし、APIキーを生成します。初期化コードを選択してコピーし、main.pyの最上部、importの直下に貼り付けます。
Ltrace Python SDKがインストールされていないと表示されています。もちろんインストールはしたんですが、Python環境の問題ですね。組み込みAIを使って修正してみましょう。「AI fix」をして、モジュールをインストールします。
かなり遅いですね…しばらく待ちましょう。エディタで使用されている環境が、私たちがインストールした環境と異なっているようです。既にインストールはされているはずなので、現在どの環境を使用しているか確認してみましょう。
Command+Shift+Pを押して、Pythonインタープリターを選択し、eduを探します。はい、ありましたので選択します。これで下線が消えました。それが問題だったんですね。これでインストールされているはずです。
もう一度実行してみましょう。「crewai run」を実行します。保存が間に合わなかったのでアボートして、もう一度実行してみます。今度は保存してから実行します。
まだLangtraceモジュールが見つからないというエラーが出ています。昨日も同じ問題に遭遇したんですが、よく分かりません。エディタは正しい環境を使用しているように見えるのですが、なぜ見つからないんでしょうか。
「conda list」を実行してLangtraceを探してみましょう。はい、リストにありますね。なぜこれが動作しないんでしょうか。どうすればいいか分かりませんが、「crewai run」の代わりにmain.pyから直接実行してみましょう。それもダメかもしれませんが…
crew.pyから始めてみるのはどうでしょうか。いいえ、それもダメでした。
Python環境と25分ほど格闘した後、ようやく動作するようになったと思います。はい、動きました!結局何をしたかというと、基本的にcondaを削除し、VM環境をワイプして、一からやり直し、Pythonのバージョンが一致していることを確認し、LangTrace SDKが正しくインストールされ、Cモジュールが正しくインストールされていることを確認しました。
これで動作するようになりました。新しいレポートができていますね。eduプロジェクトとLangtraceに戻りましょう。はい、やっと動きました。
次にPerplexityをインストールしたいと思います。ウェブスクレイピングは常に難しいので、それは避けてPerplexityのAPIを使って研究をしてもらおうと思います。これをCrewと一緒に使うのは初めてなので、うまくいくか見てみましょう。
Perplexityで新しいAPIキーを生成してコピーします。新しいLLMをセットアップする必要がありますが、CrewAIのドキュメントに方法が書いてあるので、それほど難しくないはずです。
このコードをコピーして、Cursorに戻って貼り付けます。importを移動させて、LLMを最後に追加します。新しいLLM「perplexity」を定義します。このモデルとは別のものを使いたいので、APIキーもここで入力する必要があります。下で定義するので、これは必要ありません。
APIキーはここにあります。次に使用したいモデルを決めましょう。「Learn more」の「Supported models」をクリックしましたが、このページはあまり役に立ちません。ドキュメントの「Supported models」を見てみましょう。
なるほど、使用できるモデルはこれらだけですね。まずはこの「llama-3.1-sonar-large」から始めてみましょう。これはPerplexityベースのモデルです。コピーしてCursorに戻り、「llama-3.1」を貼り付けます。
これで動作するか試してみましょう。研究者に新しいパラメータを追加します。「llm=」を追加し、これを「perplexity_llm」に名前を変更します。Cursorの素晴らしいところは、タブを2回押すだけで全てが自動的に入力されることです。本当に便利ですね。
では試してみましょう。これで研究者がPerplexity APIにアクセスできるはずで、うまくいけばLangtraceもそれをキャプチャするはずです。エラーが出ましたね。何が起こったのか見てみましょう。
404エラーが出ています。これは正しくないはずです。コードは正しく入力されていますが、セットアップが間違っているか、OpenAI互換のAPIエンドポイントではない可能性がありますが、そうではないと思います。
動作確認のため、以前のバージョンに戻してみましょう。「mraw-7b-instruct」を使ってみます。保存して動作するか確認し、問題を絞り込んでみましょう。
いいえ、同じエラーです。あ、この部分を削除してしまいましたね。戻して保存して、もう一度実行してみましょう。
また同じエラーです。Perplexity例外404。APIが正常に動作するか確認してみましょう。APIエンドポイントをテストするコードを書いてもらいましょう。
このコードをコピーして新しいファイルを作成し、「test.py」として保存します。実行してみましょう。
はい、まだ404エラーが出ています。なぜでしょうか。明らかにPerplexity APIに正しくアクセスできていません。ドキュメントを確認してみましょう。
コードをコピーしてPerplexityに何が間違っているのか聞いてみましょう。いくつかの問題があるようです。修正したコードをもらいました。
正しいエンドポイントはこれで大丈夫そうです。messagesは配列を期待しています。動作するか見てみましょう。少なくとも新しいエラーが出ました。「invalid model」ですね。その通りです。
モデル名を変更してみましょう。このモデルをもう一度使ってみます。うまくいくか確認です。再生ボタンを押して…今回は動作しているようですね。完璧です。
これで動作することが確認できたので、Crewコードでも動作するようにしてみましょう。モデル名だけを記載し、ベースURLはそのままにしておきます。「chat/completions」を追加する必要があるか確認してみましょう。「crewai run」を実行します。
はい、Perplexity例外404です。「sl/chat/sl/completions」を試してみましょう。もう一度実行…いいえ、うまくいきませんでした。
v1を戻して、もう一度Perplexityに聞いてみましょう。「CrewAIでPerplexity APIを使おうとしているけど、このコードで404エラーが出る」と伝えて、解決策を探してみましょう。
修正したコードが返ってきました。ベースURLからv1を削除する必要があるようです。では、ここのv1を削除してみましょう。
正しいエンドポイントを追加…なるほど分かりました。正しいエンドポイントを追加して、サポートされているモデルの1つを使用していることを確認します。Perplexityはコーディングアシスタントとして素晴らしいですね。
では試してみましょう。うまくいかない場合は、また戻ってフィードバックを求めましょう。「crewai run」を実行します。
動作しているようですね。何かが起こっています…はい、はい、動きました!素晴らしい進展です。今回何が得られたか見てみましょう。より良い研究結果が得られたでしょうか。
レポートを確認します。report.MDを見てみましょう。「現在および新興の大規模言語モデルに関する包括的なレポート」。GPT4.0のマルチモーダル機能、Falcon 180b(これは少し古いですね)、Llama 2、Llama 3、DBRXなど、基本的にモデルのリストが得られました。それは良しとしましょう。
トレースを確認して、すべてが正常に見えるか確認しましょう。Langtraceに移動してページを更新します。興味深いことに、Llama 3.1を使用しているようですね。大きいバージョンですね。GPT4.0-miniも使用しています。トレースをクリックして、ここでトレースを確認できます。そして、こちらでコストも確認できます。本当に安価ですね。素晴らしい、素晴らしい。
では、モデルを実験してみましょう。Perplexityモデルの大きいバージョンを使用して、より良い結果が得られるか見てみましょう。hugeバージョンを使ってみます。レポートの作成にはまだGPT4.0-miniを使用しますが、Perplexityから何が返ってくるか見てみましょう。
トレースに戻って、Perplexityが実際にどのようにデータを取得しているか見てみましょう。OpenAIはここにありますが、Perplexityはどこでしょう。
一つ明確でないのは、Perplexity APIが実際にライブのウェブデータを使用しているかどうかです。得られた情報の中には、Nitronは比較的最近のものですが、BloomやFalcon 180bなどは古いモデルです。最新の情報を取得できるように変更できるか確認してみましょう。
Perplexityに、APIが通常のインターフェースのようにウェブを検索するかどうか聞いてみましょう。
Proの検索機能はサポートしていないようですが、それは大丈夫です。同じ検索サブシステムを使用していますが、現在はSonarモデルのみをサポートしており、API検索機能はより制限されているとのことです。
ChatGPTの検索機能がOpenAI APIを通じて利用できるかもしれませんね。確認してみましょう。いいえ、利用できないようです。
そうなると、ウェブ検索には別のものを使用する必要がありそうです。CrewAIで最適なウェブ検索ツールは何か聞いてみましょう。
Serper、Dev Tool、Exa、DuckDuckGo検索…Serperを使ってみましょう。CrewAI toolsをインストールする必要があります。
「pip install crewai[tools]」を実行します。いいえ、うまくいきませんでした。何が間違っているんでしょう。
あ、間違えていました。クォートが不要でした。もう一度インストールを試みます。はい、できました。
これでインストールできたので、まずはこのPerplexity LLMをコメントアウトしましょう。これをコメントアウトします。
現在もGPT4.0-miniを使用していますが、ここでウェブ検索機能を追加しましょう。良い例が示されているので、それをコピーしましょう。
ここに貼り付けます。「from crewai.tools import」…実際に必要なのはSerper Dev Toolだけなので、他のものは削除しておきましょう。
Serper APIキーが必要になります。Serper.devにサインアップしましょう。
Pythonの例は必要ありません。APIキーだけ必要です。1つ取得してコピーします。
これを設定しましょう。環境変数として設定します。Serperツールを呼び出す場所の下に置きましょう。OSがインストールされていない、というかインポートされていないので、AIにフィックスを依頼します。はい、最上部でインポートする必要がありますね。
これで動作するはずです。次にツールをインスタンス化する必要があります。ここにコピーして、ここに配置します。
順序が正しいといいのですが、違っていたら修正しましょう。研究者にツールを与える必要があります。SearchToolを追加して…完璧ですね。
このまま実行してみましょう。「crewai run」を実行します。
はい、検索結果が返ってきました。素晴らしい。最新の情報が得られています。出力はまだ少し退屈ですが、それは大丈夫です。とりあえず動作確認ができればいいんです。
完了しました。レポートを見てみましょう。「AIにおける現在のトレンドに関する包括的なレポート」。LLMs、マルチモーダルAI、エージェントAI、オープンソースLLMs、小規模言語モデル、倫理、コンテキスト長の拡張…これは実際にもっと良くなっていますね。はるかに良くなっています。
次は、実際に使用したいトピックを与えてみましょう。Perplexityは申し訳ありませんが、もう使用しません。今のところこのLLMは必要ありません。
まず、このAPIキーをコードから削除して環境変数に移動させましょう。実際のコードにAPIキーを残しておきたくないので。
.envに入れるのを手伝ってもらいましょう。やり方は知っていますが、AIを使うと確実にできるので。APIキーの追加…適用しましょう。
.envにあるか確認します。はい、素晴らしいですね。.envにあるか確認してみましょう。なぜないんでしょう。「dotenv load_dotenv」が必要ですね。
OSをインポートする必要があり、「from dotenv import load_dotenv」も必要です。これで大丈夫なはずですが…あ、ここにありました。Cursorは本当に優秀ですね。
全てのキーをここに配置しました。もう1つキーが必要です。Crewに行って、ここで追加しましょう。まず「pip install python-dotenv」を実行する必要があります。それは後でやることにして、これを.envファイルに入れるよう依頼しましょう。
Serper APIキー…適用…素晴らしい。はい、もう一度受け入れて、.envをインポートする必要があります。そして、これを追加する必要があります。キーを.envファイルに適用…1クリックで完了です。
良いですね。これで全てのAPIキーをメインファイルから削除できました。もちろん.gitignoreに追加も…既に追加されていますね。良いでしょう。
もう一度実行して、全てが動作するか確認しましょう。はい、良い、良い、良いですね。
実行中に、トレースを確認してみましょう。最後の実行ではGPT4.0-miniのみを使用しており、ツールの使用も確認できます。素晴らしいですね。
コストも確認してみましょう。現時点では非常に安価です。もちろん0.1モデルを使用すると、はるかに高価になりますが、より良い結果が得られるかもしれません。
動作しました。もう一度レポートを確認してみましょう。「コスト効率の良いモデル」「武器化への懸念」…完全に異なる内容が得られました。main.pyで定義したトピックが「AI LLMs」と非常に広範だったためです。
もっと具体的なものにしてみましょう。トピックを「検索拡張生成(RAG)の基本的な仕組み」に変更します。一度実行して、その後で0.1-miniモデルに切り替えて、より良い応答が得られるか確認してみましょう。
たくさんのウェブ検索を実行しています。完璧ですね。コンテキストを確認し、各トピックをレポートの完全なセクションに展開することを確認します。詳細であることを確認します。
そうそう、エージェントの定義もまだ変更していませんでした。このビデオが終わる前に、それも確認しましょう。
完了しました。レポートを確認してみましょう。「検索拡張生成の定義と目的」良いですね。「2段階の動作」良いです。「LLMsとの統合」…これは実際にかなり良いですね。それほど詳細ではありませんが。
まずエージェントの定義を見てみましょう。「熟練した研究者」「上級データ研究者」…「熟練した研究者」だけにしましょう。データ研究者に限定したくないので。「最新の開発を明らかにする」いいえ、「このトピックに関する非常に魅力的な教育コンテンツを作成する」。
「包括的」も追加しましょう。Cursorには本当に感心しています。素晴らしいですね。
「あなたは最新の開発を明らかにすることに長けた熟練した研究者です」…実際には最新の開発ということではないので、代わりに「あなたは教育コンテンツのために最も関連性の高い情報をまとめることに長けた熟練した研究者です」としましょう。「最も関連性が高く包括的な情報を見つけ出し、明確かつ簡潔な方法で提示することで知られています」。
レポート分析者については、名前は同じにしておきますが、内容を「教育コンテンツクリエイター」として書き直してみましょう。名前を変更するのでcrew.pyにも反映させる必要があります。
はい、「教育コンテンツクリエイター」…完璧です。これで研究者とコンテンツクリエイターができました。
ここより下も確認しましょう。「詳細なレポートを作成する」…「トピックと研究結果に基づいて、詳細で魅力的な教育コンテンツを作成する」。「あなたは緻密な分析者です」いいえ、「あなたは細部に目が行き届く教育コンテンツクリエイターです」。「複雑なデータやトピックを、他の人が理解し活用しやすい明確で簡潔な教育コンテンツに変換する能力で知られています」。
完璧です。タスクを見てみましょう。研究タスク…「興味深く関連性の高い情報を見つけ出す」「年は2024年」…OK。
レポートタスク…「コンテキストを確認し、各トピックを教育コンテンツの完全なセクションに展開する」「レポートが詳細であることを確認する」いいえ、「コンテンツが詳細であることを確認する」…はい。「メインの項目それぞれに完全なセクションの情報を含む、完全なレポートをマークダウン形式で作成する」素晴らしい。
レポート分析者…これは正しくありません。おっと、見てください。既に変更すべきことを知っているんですね。素晴らしい。
試してみましょう。「crewai run」を実行して、その後で0.1モデルを試してみます。
たくさんの研究を行っています。McKinsey and Company、Acorn Labs、We8…素晴らしいですね。スクレイピングが簡単にできることが分かりました。
結論…たくさんの情報を集めて、レポートを作成しました。素晴らしい。
完了しました。実際のレポートに戻って、何が得られたか見てみましょう。「検索拡張生成の理解」…上部に要約があります。「動作の仕組み」素晴らしい。「検索フェーズ」「生成フェーズ」「出力」…これは本当に良いです。
ただ、もっと情報が欲しいですね。もっと包括的にしてほしいと思います。それを引き出せるか試してみて、その後で0.1モデルに切り替えてみましょう。
ここに「簡潔」とありますね。「明確で包括的な」にしましょう。「簡潔」は要らないです。「簡潔」という言葉が他にもないか確認しておきましょう。ないですね。素晴らしい。
では0.1モデルを使ってみて、どうなるか見てみましょう。研究者は今のままで大丈夫です。実際の研究には優れたモデルは必要ないかもしれません。でも試してみましょう。両方とも0.1-miniを使ってみましょう。「llm=0.1-mini」…このようにすれば動作するはずです。研究者がいて…ここにも同じように設定します。
もう一度実行して、それからLangtraceでトレースを確認し、コストと使用したトークン数を確認してみましょう。動作するか見てみましょう。
はい、動作しています。良い、良い、良いですね。エージェントの最終回答…もちろん思考の連鎖は見えません。CrewAIを使用した対話が壊れてしまうと思うので、それは仕方ありません。
完了しました。レポートを確認してみましょう。うわ、見てください。とても良いですね。異なるタイプのコンテンツが得られました。これは非常に包括的なレポートです。「利点」「質問応答システム」「チャット」…はい、これは間違いなく今までで最高の結果です。
「はじめに」素晴らしい、素晴らしい。「潜在的な影響」…これは素晴らしいですね。いくつかやりたいことがありますが、それは次のビデオに回すことにします。
一つは、他のモデルも試してみたいと思います。0.1モデルが本当に必要かどうか確認する必要があります。ただし、今のところは良さそうです。
また、レビューアーエージェントも実装したいと思います。単に出力を得るだけでなく、コンテンツが正確であること、非常にシンプルな方法で説明されていることを確認するエージェントが欲しいと思います。
さらに、画像も取り入れてみたいと思います。その場でグラフィックスを作成できたら素晴らしいですね。追加したいことがいくつかありますね。
最後にもう一つ、このビデオを終える前にお見せしたいことがあります。Langtraceに移動すると、ここで0.1-miniを確認できます。横にスクロールすると、これはかなりコストが高くなっています。出力コストが58セント、入力コストが4セントです。
0.1-miniモデルを使用すると桁違いに高価になることが分かりますが、レポート自体もはるかに優れています。これがトレードオフですね。
これから多くのテストを行う必要があると思います。異なるモデル、異なる価格帯、異なる速度、異なるコストを試して、何が起こるか見てみましょう。
ですが今のところはここまでとしましょう。このビデオが気に入っていただけましたら、ぜひいいねとチャンネル登録をお願いします。次回のビデオでお会いしましょう。

コメント

タイトルとURLをコピーしました