ArtificialAnalysis/Stirrup
The lightweight framework for building agents
Stirrup – AIエージェント構築のための軽量な基盤
概要 – Stirrupは、LLM駆動型エージェントを作成するための最小限かつ拡張可能なスカフォールド(足場)を提供するPythonライブラリです。言語モデルの邪魔をしないよう設計されており、モデルがタスクの解決方法を決定できるようにしつつ、モデルが呼び出し可能な一連の既製「ツール」(コード実行、ウェブ検索、ファイルI/Oなど)を提供します。
主要なコンセプト
- モデル・ファースト – 厳格な計画・実行ループを強制する多くのフレームワークとは異なり、Stirrupはモデルに柔軟なツールボックスを提示し、最適なアクションのシーケンスを選択できるようにします。
- ベストプラクティスに基づくデフォルト設定 – デフォルトのツールセットは、主要なエージェント(Claude Code, Codex)で観察される機能を反映しており、コンテキストの要約、一時ディレクトリ、ツールのライフサイクルを自動的に処理します。
- プラグ・アンド・プレイ – 公開されている
stirrupパッケージを直接使用することも、リポジトリをクローンして完全にカスタムなエージェントスタックを構築するためのテンプレートとして扱うことも可能です。
コア機能 (README記載)
| 機能 | 提供内容 |
|---|---|
| コード実行 | ローカル、Docker内、またはE2Bサンドボックス内で任意のコードを実行。 |
| オンライン検索 / ウェブブラウジング | ウェブ検索(Brave API経由)を行い、モデルが読み取れるようにページを取得。 |
| MCPクライアントサポート | MCPサーバーに接続して外部ツール/リソースを再利用。 |
| ドキュメントI/O | ファイルをエージェントのコンテキストにインポートし、出力ファイルを書き出し。 |
| スキルシステム | ドメイン特化型の指示セットを再利用可能な「スキル」としてパッケージ化。 |
| 柔軟なツールインターフェース | Pydantic型パラメータを持つシンプルなToolクラスをサブクラス化して新しいツールを定義。 |
| Human-in-the-loop | 内蔵のユーザー入力ツールにより、モデルが詳細について人間に質問可能。 |
| コンテキスト管理 | トークンウィンドウが制限に近づいた際の会話履歴の自動要約。 |
| プロバイダー非依存のLLMクライアント | OpenAI互換API、LiteLLM、または自作のカスタムクライアント用の事前構築済みクライアント。 |
| マルチモーダルサポート | 画像、ビデオ、オーディオをモデルが消費可能な形式に変換して処理。 |
クイックスタート例 (READMEより)
import asyncio
from stirrup import Agent
from stirrup.clients.chat_completions_client import ChatCompletionsClient
async def main():
client = ChatCompletionsClient(
base_url="https://openrouter.ai/api/v1",
model="anthropic/claude-opus-5",
max_tokens=8_192,
context_window_tokens=1_000_000,
)
agent = Agent(client=client, name="agent", max_turns=15)
async with agent.session(output_dir="./output/example") as session:
finish, history, meta = await session.run(
"What is the population of Australia over the last 3 years? "
"Search the web and create a simple matplotlib chart."
)
print(finish, history, meta)
if __name__ == "__main__":
asyncio.run(main())
このスニペットは以下を示しています:
ChatCompletionsClient(例ではOpenRouter)の作成。- デフォルトツール(ウェブ検索 + ローカルコード実行)を備えた
Agentのインスタンス化。 - ツールのライフサイクル、ロギング、ファイル出力を自動的に処理するセッションの実行。
Stirrupの拡張
- 既製ツールの追加 – 例:
stirrup.toolsのCALCULATOR_TOOLをデフォルトと組み合わせて使用可能。 - 独自のツールの定義 – パラメータ用のPydanticモデル、
ToolResultを返す関数を書き、それをToolオブジェクトでラップします。 - カスタムプロバイダー – ツールのセットアップ/クリーンアップ(例:永続的なDB接続)が必要な場合は、
ToolProviderを実装します。 - LLMバックエンドの切り替え – AnthropicやGoogleには
LiteLLMClientを使用するか、ChatCompletionsClientを任意のOpenAI互換エンドポイント(Deepseek, Ollamaなど)に向けます。
インストール
# コアパッケージ
pip install stirrup # または: uv add stirrup
# すべてのオプション拡張 (Docker, E2B sandbox, browser, LiteLLM, MCP, etc.)
pip install 'tirrup[all]'
個別の拡張機能は別途インストール可能です(stirrup[docker], stirrup[browser], …)。
どのような時にStirrupを使用しますか?
- 新しいエージェントのプロトタイピング – デフォルトツールと単一のLLM呼び出しから始めて、反復的に改善します。
- ドメイン特化型アシスタントの構築 – 実行ループを書き換えることなく、カスタムスキル(例:金融計算機、医療検索)を追加できます。
- ツール使用パターンの研究 – フレームワークはツール呼び出しをログに記録し、コンテキストを自動的に要約するため、モデルが外部リソースとどのように相互作用するかを研究するのに適しています。
- マルチプロバイダー展開 – クライアント設定を切り替えるだけで、Claude、Deepseek、Anthropicなどの間で切り替えが可能です。
ドキュメント & コミュニティ
- 完全なドキュメント: https://stirrup.artificialanalysis.ai
- スタートガイド、コアコンセプト、例、ツール作成チュートリアルはすべて同じサイトに掲載されています。
- 開発ワークフローには
uv、ruff、pytestを使用しています。リポジトリはMITライセンスです。
結論
Stirrupは、柔軟なツール使用、コンテキスト管理、およびLLMプロバイダーの容易な切り替えを必要とするLLM駆動型エージェントを構築するための、実用的でプロダクション対応のPythonフレームワークです。軽量でありながら、カスタムエージェントプロジェクトのクリーンな出発点として機能する合理的なデフォルト設定を提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト