コンテンツまでスキップ

【AWS】CrewAIって何だ?3分だけ入門してBedrock AgentCoreにデプロイしてみる

こんにちは、ホワイトバードです。

先週ラスベガスで開催されているAWS re:Inventのセッションに参加したところ「CrewAI」というエージェントフレームワークがあることを知りました。
知らないフレームワークだったので3分だけ概要をつかんで、Bedrock AgentCoreで使ってみたいと思います。

 


CrewAIとは?

CrewAIはマルチエージェントのオーケストレーションに焦点を当てたオープンソースのフレームワークで、人間の介入なしに複雑なタスクを解決するために協力する自律型エージェントのチームを作成するためのアプローチを提供します。Pythonベースのフレームワークで、ブラジル出身の創業者のCrewAI社により開発されています。公式ドキュメントは英語とポルトガル語と韓国語となっています。

https://docs.crewai.com/en/introduction

CrewAIの主な特徴

  • ロールベースのエージェント設計:特殊な専門知識を実現するために、ロール、目標、バックストーリーを定義します。
  • タスクの割り当て:機能に基づいて適切なエージェントに割り振るための組み込みメカニズムがあります。
  • エージェントコラボレーション:エージェント間のコラボレーションをフレームワークで定義できます
  • プロセス管理:ワークフローをシーケンシャルや、並列など定義できます
  • 基盤モデルの選択の自由性:LiteLLMと統合して、好きな基盤モデルを選択できます。
  • マルチモーダルサポート:テキスト・画像・その他を処理する自律的なエージェントを作成できます。

(引用:https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/agentic-ai-frameworks/crewai.html)

CrewAIの基本コンセプト

CrewAIのアーキテクチャはCrewとFlowという二つのモードがあります。

CrewAI Crews

自律性と協調インテリジェンスを最適化し、各エージェントが特定の役割、ツール、目標を持つ AI チームを作成できます。

CrewAIフレームワークの概要

Crewsには、次のような役割を持っています。

Crew

クルーと呼ばれるエージェントのチームを作成します。各チームの単位をCrewと呼び、ワークフローやコラボレーションを管理します

Agents

Agentsには自律的に働くためのロール、目標、バックストーリー、ツールを定義します。

  • ロール:システム内でのエージェントの機能と責任を定義します
  • 目標(Goal):エージェントが達成しようとする目的を指定します
  • バックストーリー:エージェントの意思決定っプロセスを導く文脈情報を提供します
  • ツール:エージェントが多くの情報にアクセスし、アクションを実行できるように機能を拡張します
Process

プロセスではエージェントのプロセスを指定します。例えばシーケンシャルに解決する、スーパーバイザーとなるマネージャーエージェントを指定するなどのやり取りを決めることができます。

Task

タスクでは、エージェントが目標を達成するために実行する必要がある具体的なアクションを定義する基本的な構成要素です。タスクは、独立した割り当てとして構成することも、複数のエージェントの連携を必要とする相互依存的なワークフローとして構成することもできます。

  • Description:タスクがどのようなものかを定義します
  • Agent assignment:エージェントの役割を指定します

CrewAI Flows

より柔軟なエージェントのワークフローを指定できるようになります。Crewどうしのやり取りやツールを指定できますが、今回は割愛します。

CrewAIフレームワークの概要

 

最低限のコード例

コードを見たほうが早いと思います。

crewai_agent.py

requirement.txt

Bedrock AgentCoreへのデプロイ

Bedrock AgentCoreのデプロイは、AgentCore CLIを使って行います。

前提条件
  • AWS CLIが設定済み
  • AgentCore CLIインストール済み
  • Pythonの仮想環境が有効化済み
インストールとデプロイコマンド(環境に合わせて適宜修正してください)
uv venv
uvx pip install -r requirements.txt
agentcore configure --entrypoint crewai_agent.py
agentcore deploy

実行結果

テストのプロンプトを入れて実行してみます。

agentcore invoke '{"prompt": "CrewAIの利点は何ですか?"}'                                                          

このような結果が返ってきました。

Response:
{"result": "CrewAIの利点は以下の通りです。\n
\n
**1.
マルチエージェント協調作業**\n
CrewAIは複数のAIエージェントを組織し、協力させることができます。
各エージェントが異なる役割を担当し、タスクを効率的に分担できます。\n
\n
**2.
柔軟な役割定義**\n
エージェントに特定の役割、目標、バックストーリーを設定できます。これにより、各エージェントが専門的で一貫性のある動作をするようになります。\n
\n
**3.
タスク自動化と管理**\n
複雑なワークフローを自動化し、タスクの優先順位付けと実行順序を管理できま
す。複数のタスクを順序立てて実行することが可能です。\n
\n
**4.
高度なコミュニケーション機能**\n
エージェント間の効果的なコミュニケーション機構を備えており、情
報共有と協調が円滑になります。\n
\n
**5.
スケーラビリティ**\n
プロジェクトの規模に応じてエージェント数やタスク数を増減させられます。小規
模から大規模なプロジェクトまで対応可能です。\n
\n
**6.
統合性と拡張性**\n
既存のツール、API、LLMと統合でき、カスタムツールを追加して機能を拡張できます
。\n
\n
**7.
メモリ管理**\n
長期記憶と短期記憶を管理し、コンテキストを保持したまま複雑なタスクを遂行できます
。\n
\n
**8.
透明性と制御**\n
エージェントの思考過程や意思決定を可視化でき、人間が必要に応じて介入・調整が可
能です。\n
\n
**9.
開発効率の向上**\n
フレームワークを使用することで、複数エージェントシステムの開発時間を大幅に短
縮できます。\n
\n
**10.
複雑な問題解決**\n
単一のAIでは困難な複雑な問題を、複数の専門的なエージェントの協力により解決し
やすくなります。"}

まとめ

セッションの中では、プロトタイピングに向いているということでしたが、おっしゃる通りでバックストーリーやロールを定義して、直感的な作成がしやすいように感じました。Bedrock AgentCore Runtimeでも簡単に実装できるのはありがたいですね。
またいろいろなフレームワークを学んでみたいと思います!