Selectools:オープンソースAIエージェントフレームワーク

LangGraphが人間の一時停止のために冪等な副作用を強いるのにうんざりか? Selectoolsは止まったyieldのまんまで再開。このオープンソースの怪物は多エージェントの知能をpip一発に凝縮した

Selectools:AIエージェントの悪夢をpip一発でぶっ壊す — theAIcatchup

Key Takeaways

  • SelectoolsはPythonジェネレータで割り込みをyieldポイントで精密再開、LangGraphの全ノード再実行を修正
  • 多エージェントのSupervisorAgentは四戦略を備え、ModelSplitで70-90%コストカットするMagentic-One含む
  • 50内蔵評価器とPII赤字化でpip一発の本番即戦力

誰もが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、コスト分割が光る。グラフをテストして、割り込みの痛みがあれば移行せよ。

James Kowalski
Written by

Investigative tech reporter focused on AI ethics, regulation, and societal impact.

Worth sharing?

Get the best AI stories of the week in your inbox — no noise, no spam.

Originally reported by Dev.to