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())

該程式碼段展示了:

  1. 建立 ChatCompletionsClient(範例中為 OpenRouter)。
  2. 實例化一個帶有預設工具(網路搜尋 + 本地程式碼執行)的 Agent
  3. 執行一個自動處理工具生命週期、日誌記錄和檔案輸出的工作階段。

擴充 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
  • 入門指南、核心概念、範例和工具建立教學都託管在同一個網站上。
  • 開發工作流程使用 uvruffpytest;儲存庫採用 MIT 授權。

總結

Stirrup 是一個真實、生產就緒的 Python 框架,用於構建需要靈活工具使用、上下文管理和易於更換 LLM 提供者的 LLM 驅動型代理。它在保持輕量化的同時提供合理的預設值,可作為自定義代理專案的整潔起點。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案