オープンソースのAIエージェントフレームワーク
エージェントをいくつか手作業で構築すると、同じ配管作業が何度も現れます。モデルを呼び出し、要求されたツールを実行し、結果を返し、仕事が完了したら停止するループです。エージェントフレームワークはその配管 — さらに状態、メモリ、マルチエージェント協調 — をパッケージ化してくれるので、書くグルーコードが減ります。このページは、主要なオープンソースの選択肢、それらが実際に何を提供するのか、そしてどう選ぶのかを、プロバイダーに依存しない形で長く使える地図として示します。それらのほとんどはモデル非依存です。Claude、GPT、Gemini、そしてローカルのオープンウェイトモデルで動作します。
- エージェントフレームワークが手書きのループに対して何を与えてくれるのか — そして何を与えないのか — を知る
- 3つの原型を見分ける:ステートフルなグラフ、ロールベースのクルー、最小ループ
- 繰り返し使える手順で1つを選ぶ — 複雑さと制御をトレードオフしながら
- これらの多くはモデル非依存である — フレームワークが特定のプロバイダーにあなたを縛り付けることはめったにない — ことを忘れない
エージェントフレームワークが実際に与えてくれるもの
ブランディングを取り払うと、フレームワークが提供しているのは次の4つのうちのいくつかです:
- オーケストレーション — 制御ループ。逐次ステップ、分岐、リトライ、完了までのループ、そして(ますます増えている)クラッシュを生き延びて停止した場所から再開する永続的実行(durable execution)。
- ツール — モデルが呼び出せる関数を宣言し、その引数を検証し、実行し、結果を返すための標準的な方法。あなたがツール使用ですでに知っている、宣言→呼び出し→実行→返却 と同じループです。
- メモリと状態 — 会話履歴、スクラッチパッドの事実、取得したドキュメントをターンをまたいで保持する場所。これにより、エージェントはステップ間で記憶喪失にならずに済みます。
- マルチエージェント — 複数の専門化されたエージェントが互いに仕事を渡し合うパターン。ワーカーに委譲するスーパーバイザー、あるいはタスクで協働する対等なエージェントなど。(概念的にはClaude Codeのサブエージェントと同じ発想です。)
フレームワークが価値を持つのは、それがなければこの4つすべてを自分で書いて保守することになる場合です。タスクが「モデルを呼び出し、1つか2つのツールを実行し、答えを返す」だけなら価値はありません — その場合、フレームワークはあなたが格闘して時間を費やすオーバーヘッドになります。
3つの原型
フレームワークは、そのマーケティングが示唆するほどには違いません。実際には3つの形があり、ほとんどのプロジェクトはそのうちの1つのバリエーションです:
- ステートフルなグラフ / ワークフロー。 エージェントをノードとエッジ(あるいはステップと遷移)からなる明示的なグラフとしてモデル化します。最大限の制御、検査可能な状態、長時間実行や人間がループに介在するフローに適しています。最初に学ぶことは多めです。→ LangGraph、LlamaIndex Workflows。
- ロールベースのクルー。 エージェントを役割(「リサーチャー」「ライター」「レビュアー」)で記述し、協働させたりプロセスを実行させたりします。マルチエージェントのチームを素早く表現できますが、高レベルの抽象化と引き換えに、きめ細かい制御の一部を手放します。→ CrewAI、そしてAutoGenの会話型マルチエージェントスタイル。
- 最小ループ / 抽象化が少ない。 モデルのネイティブなツール呼び出しの上に薄いレイヤーを乗せ、少数のエージェント間のハンドオフを加えただけで、それ以外はほとんどありません。端から端まで読みやすく、捨てやすい。→ OpenAI Agents SDK(実験的なSwarmの本番向け後継)、そしてあなた自身が書く素のループ。
- うまくいく最もシンプルなものから始める — 多くの場合、素のツール呼び出しループが重量級のフレームワークに勝る。
簡単なツアー(コミットする前にポジショニングを確認)
これらは知っておく価値のあるオープンプロジェクトです。名前を挙げているのは、それぞれの実際のリポジトリを検証したからです。移ろいやすいものはすべて上記のVerifyNoteの裏側にあります。
- LangGraph — グラフとしてモデル化された、ステートフルで長時間実行のエージェントのための低レベルなオーケストレーションフレームワーク。永続的実行と人間がループに介在することがファーストクラスです。単体でも、より広いLangChainエコシステムと組み合わせても使えます。モデル非依存。
- LlamaIndex — データ/RAGフレームワーク(コネクタ、インデックス、検索)として始まり、現在はエージェント向けのイベント駆動なWorkflowsレイヤーも提供しています。エージェントが本質的にあなたのドキュメントに対する検索である場合に強力です。
- Microsoft AutoGen — 会話型マルチエージェントシステムのためのフレームワーク。2026年中頃の時点でメンテナンスモードにあります。Microsoftは新規プロジェクトを統一された後継(Microsoft Agent Framework、AutoGen + Semantic Kernelを統合)へ誘導しています。開始前に現在のステータスを確認してください。
- CrewAI — ロールベースのフレームワーク:エージェントを役割と目標で定義し、Crews(自律的な協働)またはFlows(イベント駆動の制御)に編成します。マルチエージェントチームへの近道です。
- OpenAI Agents SDK — ハンドオフを伴うマルチエージェントワークフローのための、意図的に軽量で抽象化の少ないフレームワーク。名前に反してプロバイダー非依存であり(ドキュメントは100以上のLLMのサポートを記載)、実験的なSwarmの本番対応の後継です。
- 素のエージェントループ — フレームワークはまったくなし:モデルのネイティブなツール呼び出しを囲む、あなた自身の
whileループ。シンプルなエージェントにとって正しいデフォルトであり、上記のあらゆるフレームワークが結局のところラップしているものです。
フレームワークの選び方
- エージェントが何をするかを1文で、加えて譲れない条件:レイテンシ、コストの上限、データのプライバシー、実行がクラッシュを生き延びる必要があるか、そして人間がステップを承認しなければならないか。
- 1つのエージェントが1つか2つのツールを呼び出すだけなら、素のループを書きましょう。多くの本番エージェントはそれ以上を必要としません。フレームワークを採用するのは、それがなければオーケストレーション、メモリ、そしてマルチエージェントを自分で再実装することになる場合だけです。
- 長時間実行 / 人間がループに介在 / 検査可能な状態 → ステートフルなグラフ(LangGraph、LlamaIndex Workflows)。専門家のチーム → ロールベースのクルー(CrewAI)。少数のエージェントがハンドオフし、シンプルに保つ → 最小ループ(OpenAI Agents SDK、またはあなた自身のもの)。
- リポジトリが活発にメンテナンスされている(メンテナンスモードではない)こと、そしてあなたが実際に使うモデル — Claude、GPT、Gemini、またはローカルモデル — をきれいにサポートしていることを確認します。ほとんどはプロバイダー中立です。仮定せず、検証してください。
- 最も難しい単一のステップ — トリッキーなツール、ハンドオフ、失敗後の再開 — を2つの候補で構築します。そのステップを読みやすくする抽象化が、あなたの勝者です。
- ツールとプロンプトを素の関数と文字列として保ち、フレームワークがあなたのロジックを所有するのではなくラップするようにします。フレームワークの乗り換えは、すべてを書き直すことではなく、オーケストレーションを再配線することを意味すべきです。
あらゆるフレームワークがラップしているもの
どんなライブラリに手を伸ばす前にも、それらすべてが構築されている上のループを見ておくと役立ちます。これが発想のすべてです — モデルが決め、あなたが実行し、完了するまで繰り返す:
# Provider-neutral agent loop — the core every framework wraps.
# `model_call` and `run_tool` are yours; swap in Claude, GPT, Gemini, or a local model.
def agent_loop(task, tools, max_steps=10):
messages = [{"role": "user", "content": task}]
for _ in range(max_steps):
# 1. Ask the model what to do next (it sees the tool schemas).
response = model_call(messages, tools=tools)
# 2. No tool requested → the model is done. Return its answer.
if not response.tool_calls:
return response.text
# 3. Run each requested tool and feed results back in.
messages.append(response.as_message())
for call in response.tool_calls:
result = run_tool(call.name, call.arguments)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
return "Stopped: hit max_steps without finishing."
これが読めるなら、このページのあらゆるフレームワークが内部で何をしているかが分かります。グラフは明示的な状態と分岐を加え、クルーは役割と委譲を加え、最小SDKは整然としたハンドオフを加えます — しかし鼓動は常にこのループです。
最小のエージェントシステムプロンプト(上のループと組み合わせて使う)
You are a task-completing agent with access to tools.
Loop:
1. Think briefly about the next single step toward the goal.
2. If a tool would help, call exactly ONE tool with valid arguments.
3. When you have enough to answer, stop calling tools and give the final answer.
Rules:
- Prefer the fewest tool calls that get the job done.
- If a tool fails, read the error and adjust — do not repeat the same call.
- Never invent tool results; use only what tools actually returned.
- If the goal is impossible with the available tools, say so and stop.
Goal: {one-sentence task}誇大宣伝についての注意
ここにあるどのフレームワークも「最高」ではありません — その問い自体が誤った形をしています。グラフ系フレームワークは制御と永続性で勝ち、クルー系フレームワークはチームを素早く表現することで勝ち、最小系は読みやすさと低いロックインで勝ち、そして素のループはフレームワークのREADMEが認めるよりも頻繁に勝ちます。正しい選択は、あなたの最も難しいステップを明確にする、最も小さなツールです。モデルを選ぶときと同様に、スター数ではなく、あなた自身のタスクに決めさせましょう。評価(evals)で適用するのと同じ規律がここにも当てはまります:プロトタイプを作り、実際のケースで測定し、出口ランプを残しておく。
理解度チェック
0/3- エージェントフレームワークはオーケストレーション、ツール、メモリ、マルチエージェント協調をパッケージ化する — それがなければ4つすべてを自分で構築することになる場合にのみ採用する。
- 3つの原型が領域を覆う:ステートフルなグラフ(制御/永続性)、ロールベースのクルー(素早いチーム)、最小ループ(読みやすさ、低いロックイン)。
- これらのほとんどすべてがモデル非依存である — Claude、GPT、Gemini、ローカルモデルで動く;仮定せずプロジェクトごとに検証すること。
- どのフレームワークも普遍的に『最高』ではない;あなたの最も難しいステップを明確にする最小のツールを選び、出口ランプを残しておく。
- 素のツール呼び出しループは正直なデフォルトである — そしてそれこそがあらゆるフレームワークがラップしているものだ。
- メンテナンスのステータスは変わる(例:AutoGen → 後継);コミットする前にプロジェクトが活発にメンテナンスされていることを、そのプロジェクト自身のリポジトリで確認すること。
ソースとさらに読む
- LangGraph — GitHub — ステートフルで長時間実行のエージェントのための低レベルなオーケストレーションフレームワーク。
- LangGraph概要 — LangChainドキュメント — 概念、永続的実行、人間がループに介在すること。
- LangChain — GitHub — LangGraphが統合するより広いエコシステム。
- LlamaIndex — GitHub — エージェント向けのイベント駆動なWorkflowsレイヤーを備えたデータ/RAGフレームワーク。
- LlamaIndexドキュメント — RAG、クエリエンジン、エージェント、Workflows。
- Microsoft AutoGen — GitHub — 会話型マルチエージェントフレームワーク(メンテナンスステータスを確認)。
- Microsoft Agent Framework — GitHub — エージェントを構築・オーケストレーションするための統一された後継(AutoGen + Semantic Kernel)。
- CrewAI — GitHub — CrewsとFlowsを備えたロールベースのマルチエージェントフレームワーク。
- CrewAIドキュメント — エージェント、タスク、クルー、フロー、ツール。
- OpenAI Agents SDK — GitHub — ハンドオフを備えた軽量でプロバイダー非依存のマルチエージェントフレームワーク。
- OpenAI Agents SDKドキュメント — 最小限の抽象化のエージェントモデル。
- OpenAI Swarm — GitHub — Agents SDKが置き換える実験的な前身(教育用、現在は後継に取って代わられた)。