ArtificialAnalysis/Stirrup
The lightweight framework for building agents
Stirrup – 構建 AI 代理的輕量級基礎
定義 – Stirrup 是一個 Python 函式庫,為您提供建立 LLM 驅動型代理的極簡且可擴充的腳手架。它刻意不干擾語言模型,讓模型決定如何解決任務,同時提供一套模型可以呼叫的現成「工具」(程式碼執行、網路搜尋、檔案 I/O 等)。
核心理念
- 模型優先 – 與許多強制執行僵化的「計畫-執行」循環的框架不同,Stirrup 為模型提供了一個靈活的工具箱,讓模型選擇最佳的操作序列。
- 最佳實踐預設值 – 預設工具集反映了作者在領先代理(Claude Code, Codex)中觀察到的功能,為您處理上下文摘要、暫存目錄和工具生命週期。
- 即插即用 – 您可以直接使用發佈的
stirrup套件,或者複製儲存庫將其作為構建完全自定義代理堆疊的模板。
核心功能 (如 README 中所述)
| 功能 | 提供內容 |
|---|---|
| 程式碼執行 | 在本地、Docker 中或 E2B 沙箱中執行任意程式碼。 |
| 線上搜尋 / 網路瀏覽 | 搜尋網路(透過 Brave API)並獲取頁面供模型閱讀。 |
| MCP 用戶端支援 | 連接到 MCP 伺服器以重用外部工具/資源。 |
| 文件 I/O | 將檔案匯入代理的上下文並寫入輸出檔案。 |
| 技能系統 – 將特定領域的指令集打包為可重用的「技能」。 | |
靈活的工具介面 – 透過為帶有 Pydantic 類型參數的簡單 Tool 類別編寫子類別來定義新工具。 |
|
| 人機回圈 (Human-in-the-loop) – 內建的使用者輸入工具允許模型向人類尋求澄清。 | |
| 上下文管理 – 當 Token 視窗接近限制時,自動對對話歷史進行摘要。 | |
| 與提供者無關的 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物件中。 - 自定義提供者 – 如果您的工具需要設定/拆卸(例如,持續性的資料庫連接),請實作
ToolProvider。 - 更換 LLM 後端 – 使用
LiteLLMClient用於 Anthropic、Google 等,或將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 是一個真實、生產就緒的 Python 框架,用於構建需要靈活工具使用、上下文管理和易於更換 LLM 提供者的 LLM 驅動型代理。它在保持輕量化的同時提供合理的預設值,可作為自定義代理專案的整潔起點。
相關
- 專案
- 專案
- 專案
- 專案
- 專案