誰もがAIエージェントフレームワークはLangGraphのチェックポイント再生のクセでヨロヨロと進むと思っていた——再開時にノード全体を再実行してコードを冪等にするためにぐちゃぐちゃにねじ曲げるやつだ。だがSelectoolsがv0.20.1を放った。pip一発の強烈パンチで現状をぶち壊す:多エージェントグラフ、ツール呼び出し、RAG、50評価器、PII赤字化。すべて内蔵でApache-2.0オープンソース、OpenAI、Anthropic、Gemini、Ollama対応だ。
抽象的なリーキーなものを無理やりくっつけるのに疲れた開発者にとって、これはすべてを変える。
LangGraphの割り込みがビルダーを狂わせる理由
LangGraphのinterrupt()は——設計上——一時停止後にノードボディ全体を再実行する。公式の対処法? 副作用を冪等にしろ、高額オペを呼び出し後に詰め込め、下流に分割しろ。理論上は立派だ。実践では地獄。人間参加型の全ノードが再開仕様で歪む。スクリーンドア並みに漏れる。
Selectoolsはどうか。Pythonジェネレータだ。InterruptRequestをyield。再開はgenerator.send()で——yield直後。ノード再実行なし。高額なLLM(大規模言語モデル)分析? 一度だけ走る。クリーン。
見てみろ:
async def review_node(state):
analysis = await expensive_llm_analysis(state.data["draft"]) # runs once
decision = yield InterruptRequest(prompt="Approve?", payload=analysis)
state.data["approved"] = (decision == "yes") # resumes here
ブーム。
「まさにyieldポイントで再開(LangGraphはノード全体を再スタート)。」
v0.18.0の変更ログから直球の言葉だ。ハイプ抜きでコードが真実を語る。
俺の見立てでは、このジェネレータのトリックは初期Node.jsのコルーチンがasync地獄を飼いならしたのを思い起こさせる。Selectoolsは車輪を再発明しない。エージェントが本当に走る道を滑らかにするだけだ。予測だが、2025年Q2までにLangGraphユーザーを大量に引き抜き、「一つのフレームワーク」神話をKubernetesがDockerスウォームにしたように粉砕するだろう。
Selectoolsはどうやって多エージェントグラフを扱うのか
AgentGraphはエージェントノード用の有向グラフ。ルーティングは普通のPython関数——LLMのルーレットもDSLの膨張もない。決定論的なフローでLLMはノード内で推論する。賢い。
ContextModeで履歴を正気に保つ:LAST_MESSAGE(デフォルト)、LAST_N、FULL、SUMMARY、CUSTOM。上流のノイズで下流エージェントを溺れさせない。
MergePolicyで並行実行——LAST_WINS、FIRST_WINS、APPEND。ファンアウト、ファンインでドラマなし。
ループか停滞か。状態ハッシングで不変状態を嗅ぎ分ける。デッドロック知らず。
だが待てよ——SupervisorAgentが本領発揮。四つの戦略だ:
| 戦略 | 説明 | 最適 |
|---|---|---|
| plan_and_execute | LLM JSONプラン作成後、逐次実行 | 構造化タスク |
| round_robin | 順番に回し、supervisorがチェック | 反復的洗練 |
| dynamic | LLMがステップごとにエージェント選択 | 異質タスク |
| magentic | Magentic-Oneのリーダーボード+再計画 | 自律的研究 |
MagenticはMicrosoft Researchのパターンを模倣。ModelSplitならプランナーをGPT-4o、実行者をLlamaで——70-90%安くなる。本番レベルの狡猾さだ。
SelectoolsのEvalスイートは本当に使えるのか
50評価器をアウトオブザボックス。ペイドevalサービス不要。30が決定論的(完全一致、regex)、20がLLM判定(G-Evalスタイル)。
PII赤字化は内蔵、デプロイ前に出力をスキャン。RAGはベクターストア、検索チェーン——OllamaやPineconeをプラグイン。
散漫じゃない。EvalフレームワークがAgentGraphに直結:グラフ上でスイート実行、スコア集計。開発者はベンダーロックなしでベースラインを手に入れる。
疑うか。俺も最初はそうだった。だが「どうやるか」が光る:evalを一流のグラフノードに。eval途中で割り込み修正、再開は精密。
ここに短い一文。
この評価器の密度——50プリビルト——は2008年にpytestがPythonテスト界を爆発させたのを彷彿とさせる。当時のunittestはダメダメ、pytestがTDDをデフォにした。Selectoolsはエージェントの信頼性で同じことをやるだろう。企業スピンの「batteries included」なんて生ぬるい。これは完全武装で、evalを後付けの二流扱いしない。
エージェント構築の開発者にとってなぜ大事か
エージェントシステムが膨張した:多段階推論、人間ループ、並行処理。LangGraphなんかはフレームワーク忠誠を強要してきた。Selectoolsは言う——お前らの知ってるPythonを書け。状態はジェネレータで、ルートは関数で。
インストールはpip install selectools。即戦力。ドキュメント探し地獄なし。
根底の変化はgraph-as-DSLからgraph-as-execution-engineへ。なぜか。本番は監査可能性を求める——LLMはハルシネーションするがPythonはしない。Selectoolsはそのハイブリッドに賭ける:LLMの脳みそにPythonの脊椎。
批評の時間だ。LangChainの散漫がこれを生んだ——良いカオスは優れたツールを生む。だがSelectoolsのPRは割り込みの勝利を過小評価しすぎ。それが本当のキラーアプリだ。
開発者ども、今日Supervisorスウォームをプロトタイプしろ。コストが急落し信頼性が跳ね上がるのを観察せよ。
ツール呼び出しとRAG:後付けじゃない
ツールは並行呼び出しにエラー回復。RAGチェーンは埋め込み、検索、文脈化——Ollamaローカルでもクラウドでも。PIIスクラバーがSSNやメールを事前出力でフラグ。
すべてグラフネイティブ。ボルトオンなし。
yield前の高額作業? 安全だ。
よくある質問
Selectoolsとは何か、インストール方法は?
SelectoolsはAIエージェントのためのオープンソースPythonフレームワークだ。pip install selectoolsで——OpenAI、Anthropicほか対応。
Selectoolsの割り込みはLangGraphとどう違う?
ジェネレータはyieldポイントでピタリ再開、LangGraphはノード全体再実行。冪等性ハック不要だ。
Selectoolsは本番エージェントでLangGraphの代わりになるか?
ほとんどの場合でいける——決定論的ルーティング、eval、コスト分割が光る。グラフをテストして、割り込みの痛みがあれば移行せよ。