複数のAIに仕事を分担させるとき、全員に全部の道具を渡すか、役割ごとに使える道具を絞るかで安全性が変わります。
役割5つと道具12個で数えたところ、全部渡す方式では誤って選べる取り消せない操作が23個ありました。役割ごとに絞れば0個です。
役割5つと道具12個で数えました。全部渡すと誤って選べる危険操作が23個、役割ごとに絞れば0個です。
CrewAIが前提にしている役割ごとの分担が、安全の面でどれだけ効くのかを数えました。用意したのは役割5つと道具12個で、うち5個は取り消せない操作です。
判定は実際に集合演算で数えています。役割ごとに必要な道具の一覧はコードに書いてあり、そこを変えれば結果も変わります。
// 役割ごとに、その仕事で本当に必要な道具
const ROLES = {
'調査担当': ['search_web', 'read_file', 'export_csv'],
'執筆担当': ['read_file', 'write_file'],
'経理担当': ['query_db', 'create_invoice', 'export_csv'],
'承認担当': ['query_db', 'approve_invoice'],
'連絡担当': ['read_file', 'send_mail', 'post_slack'],
};
// 取り消せない道具。誤って選ばれると戻せない
const IRREVERSIBLE = ['delete_file', 'send_mail', 'update_db',
'approve_invoice', 'run_sql'];
役割 必要な道具 全部渡した場合 絞った場合 誤って選べる取り消せない道具
調査担当 3個 12個 3個 5個 → 0個
執筆担当 2個 12個 2個 5個 → 0個
経理担当 3個 12個 3個 5個 → 0個
承認担当 2個 12個 2個 4個 → 0個
連絡担当 3個 12個 3個 4個 → 0個
渡す道具の合計 全部渡す: 60個 役割ごとに絞る: 13個(4.6倍)
誤って選べる取り消せない道具 全部渡す: 23個 役割ごとに絞る: 0個
役割数 全部渡す 役割ごとに絞る
5つ 60個 13個
10つ 120個 26個
20つ 240個 52個
40つ 480個 104個
23個という数字の意味を押さえておいてください。その役割の仕事に要らないのに、選べてしまう取り消せない操作の延べ数です。
具体的に見ると分かります。調査担当に必要なのは検索と読み取りと書き出しの3つです。ところが全部渡す方式では、ファイルの削除も、メールの送信も、請求の承認も選べます。
選ぶかどうかはその場の判断次第で、選ばない保証はありません。渡してある以上、いつか選ばれます。
副次的な効果もあります。渡す道具の合計が60個から13個になりました。道具の説明文はそのまま入力に乗るので、送信量もその分だけ減ります。
道具の数を絞ることが選び間違いを減らすという話はツール利用の記事でも扱っています。役割で分けると、その絞り込みが自然に決まります。
役割を増やすと、絞る方式でも合計は増えます。40役割で104個です。ただし全部渡す方式の480個に比べれば4.6分の1のままで、比は変わりません。
渡してある道具は、いつか選ばれる。渡さなければ選べない。
CrewAI Crews : Optimize for autonomy and collaborative intelligence with role-based AI agents.原文crewAIInc/crewAI README この内容の有効期限2027-02-18
役割を持ったAIを複数立てて協働させます。自律させる仕組みと、手順を制御する仕組みの2つが用意されています。
CrewAIは、役割を持ったAIを複数立てて仕事を分担させる枠組みです。公開されているPythonの枠組みで、本番で使う多エージェントの処理を組むためのものだとされています。
README には2つの仕組みが並べられています。自律と協働に振ったCrewsと、出来事をきっかけに動かして手順を細かく制御するFlowsです。
Crewsのほうは、役割にもとづくAIによって、自律性と協働の力を引き出すものだと説明されています。前の節で扱ったのはこちらの考え方です。
2番目が効きます。前の節のとおり、ここを書くことが、そのまま実行できる操作を決めることになります。
複数のAIを組み合わせる構成の整理はマルチエージェントの記事で、まとめ役が割り振る形はオーケストレータ/ワーカーの記事で扱っています。CrewAIは、役割を先に定義しておく形にあたります。
使ってみて感じたのは、役割を細かく割るほど、どれが担当か迷う場面が増えることでした。「調査担当」と「情報収集担当」を両方立てると、どちらに投げるかで揺れます。編集部では、役割を増やす前に既存の役割に収まらないかを先に確かめるようにしています。
CrewAI is an open-source Python framework with high-level abstractions and low-level APIs for building production-ready multi-agent workflows.原文crewAIInc/crewAI README この内容の有効期限2027-02-18
分担がはっきりしていて、役割ごとに使う道具が違う仕事です。手順が決まっているなら、制御する側の仕組みを使ってください。
CrewAIで役割を分ける価値があるかどうかは、役割ごとに使う道具が違うかで決まります。同じ道具しか使わないなら、分ける意味は薄くなります。
3番目については、README にも別の仕組みが挙げられています。出来事をきっかけに動く自動化を作り、手順の正確な制御と単発の呼び出し、そしてCrewsへの対応を組み合わせるものだとされています。
手順が決まっている処理をAIの自律に委ねる必要はありません。この考え方は決定的ワークフローの記事で扱っています。
前の節は絞る効果の話でしたが、逆の失敗もあります。必要な道具を渡し忘れると、その役割は仕事を完了できません。
しかも止まり方が分かりにくいことがあります。道具がないと分かれば止まりますが、似た別の道具で代用しようとする場合もあるためです。
承認担当のように、取り消せない操作を必要とする役割もあります。この場合はその役割にだけ人の承認を挟むのが現実的です。
全員に承認を挟むと確認の回数が増え、中身を見ずに押すようになります。承認の設計はHITLの記事で、確認の回数と危険操作の関係は権限モデルの記事で扱っています。
役割ごとに使う道具が同じなら、分けても効果は出ない。
CrewAI Flows : Build event-driven automations that combine precise workflow control, single LLM calls, and native support for Crews.原文crewAIInc/crewAI README この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る